Cetak tabel perkalian fisik

40

Persegi panjang memiliki properti yang bagus ini - n×m persegi panjang terdiri dari persis n×m karakter!

Sebuah .. properti lebih menarik adalah bahwa persegi panjang dapat disejajarkan dengan baik dalam tabel perkalian - misalnya, 3×3 tabel:

# ## ###

# ## ###
# ## ###

# ## ###
# ## ###
# ## ###

Tantangan Anda adalah, mengingat angka n ( n>1 ), menghasilkan tabel perkalian n × n×n diformat .

Aturan

  • Anda dapat mengambil input di atas atau di bawah n
  • Aturan I / O standar berlaku
  • Anda dapat memilih karakter non-spasi putih untuk mewakili blok; setiap karakter lain (meskipun baris baru khusus) dianggap spasi putih. Karakter yang dipilih dapat berbeda untuk input yang berbeda, tetapi harus sama di seluruh input
  • Hasilnya dapat memiliki karakter yang tidak diperlukan, selama tabel sejajar dan tidak ada kemunculan karakter yang dipilih yang bukan bagian dari output yang diperlukan
  • Pemisah harus 1 karakter lebar / tinggi, dan persegi panjang harus dikemas (yaitu tidak ada pemisah antara karakter mereka)
  • Baris kosong bisa kosong, padding tidak diperlukan
  • Hasilnya bisa berupa string, matriks, vektor garis, array array karakter, atau apa pun 2Dish
  • Sebagai alternatif, Anda dapat mengeluarkan matriks / vektor-vektor-vektor / apa saja angka 2Dish, tetapi latar belakang & latar depan harus berupa 2 angka berbeda (yang dapat memvariasikan input ke input, tetapi tidak di seluruh output) dan tidak ada angka lain yang dapat ditampilkan. Karakter tambahan di sekitarnya juga diperbolehkan dengan format ini (meskipun mereka harus cocok dengan nomor latar belakang)
  • Ini adalah , jawaban terpendek dalam byte, per-bahasa, menang!

Contohnya

Untuk input 2, output ascii-art yang valid, dengan karakter , adalah:

        ∙ ∙∙

Result: ∙ ∙∙.
        ∙ ∙∙

ya periode ada di sana hanya untuk membingungkan Anda
Jawaban lain yang valid sebagai matriks angka, dengan 2 sebagai nomor latar belakang dan 9 latar depan:

[[9,2,9,9,2,2],
 [2,2,2,2,2,2],
 [9,2,9,9,2,2],
 [9,2,9,9,2,2]]

Contoh output yang tidak valid adalah

#  # #


#  # #

#  # #

karena persegi panjang memiliki pemisah di antara mereka.

Contoh output untuk 4×4 :

# ## ### ####

# ## ### ####
# ## ### ####

# ## ### ####
# ## ### ####
# ## ### ####

# ## ### ####
# ## ### ####
# ## ### ####
# ## ### ####


1 0 1 1 0 1 1 1 0 1 1 1 1
0 0 0 0 0 0 0 0 0 0 0 0 0
1 0 1 1 0 1 1 1 0 1 1 1 1
1 0 1 1 0 1 1 1 0 1 1 1 1
0 0 0 0 0 0 0 0 0 0 0 0 0
1 0 1 1 0 1 1 1 0 1 1 1 1
1 0 1 1 0 1 1 1 0 1 1 1 1
1 0 1 1 0 1 1 1 0 1 1 1 1
0 0 0 0 0 0 0 0 0 0 0 0 0
1 0 1 1 0 1 1 1 0 1 1 1 1
1 0 1 1 0 1 1 1 0 1 1 1 1
1 0 1 1 0 1 1 1 0 1 1 1 1
1 0 1 1 0 1 1 1 0 1 1 1 1
dzaima
sumber
Bisakah kita memiliki baris / kolom karakter latar belakang tambahan di depan, daripada di akhir tabel?
Kirill L.
@ KirillL. tentu, selama baris berbaris
dzaima
2
Nitpick: ∙ (U + 2219: BULLET OPERATOR) tidak ada dalam rangkaian karakter ASCII. Juga • (U + 2022: BULLET) atau ⋅ (U + 22C5: DOT OPERATOR) atau · (U + 00B7: MIDDLE DOT). :)
Andreas Rejbrand

Jawaban:

10

Haskell , 43 byte

f n=map=<<flip(map.max)$show.(10^)=<<[1..n]

Cobalah online!

Pendekatan pintar oleh Ørjan Johansen menghasilkan dengan 0 dan 1, menghasilkan setiap 10...00bagian sebagai representasi string dari kekuatan 10.

111111111
101001000
111111111
101001000
101001000
111111111
101001000
101001000
101001000

Haskell , 49 byte

f n=map=<<flip(map.max)$[0^i|x<-[1..n],i<-[0..x]]

Cobalah online!

Buat pola seperti [1,0,1,0,0,1,0,0,0,...], lalu buat 2D dengan mengambil minpasangan. Keanehan pointfree menghemat 2 byte lebih mudah dibaca:

f n|l<-do x<-[1..n];0:(1<$[1..x])=[[a*b|a<-l]|b<-l]

Cobalah online!

Tidak
sumber
3
Ini dapat disingkat dengan trik nomor segitiga lama saya: 43 byte
Ørjan Johansen
1
Baru sadar flip(map.max)=mapM max,.
Ørjan Johansen
@ ØrjanJohansen Whoa, bagaimana cara kerjanya? Saya pikir Anda bisa melakukannya dengan memposting jawaban Anda sendiri :-)
xnor
Setel monad menjadi (->) b, lalu mapM :: (a -> b -> c) -> [a] -> b -> [c].
Ørjan Johansen
@xnor Anda lupa mengubah flip(map.max)kemapM max
ASCII
9

R , 56 54 43 36 30 byte

x=!!sequence(2:scan())-1;x%o%x

Cobalah online!

Mengambil input satu di atas n (jadi mengembalikan matriks 3x3 untuk n=4 ). Mengembalikan matriks 1s (foreground), dan 0s (latar belakang) dengan baris / kolom tambahan nol di depan.

Berkat digEmAll untuk -7 byte.

Kirill L.
sumber
Terima kasih, BTW bahkan mungkin bisa 30, jika baris kosong tambahan bisa di depan, daripada di akhir.
Kirill L.
Oh, bisakah mereka? Saya melewatkan itu !
digEmAll
6

JavaScript (ES6),  73 72  69 byte

Mengembalikan string yang terbuat dari 1, spasi, dan umpan baris.

n=>(g=s=>n-->0?g(s+`${p+=1} `):s[~n]?(+s[~n]?s:'')+`
`+g(s):'')(p='')

Cobalah online!


JavaScript (ES7),  87 83  82 byte

Disimpan 3 byte berkat @dzaima

Mengembalikan matriks biner, yang dibangun sel demi sel.

n=>[...Array(n*(n+3)/2)].map((_,y,a)=>a.map(h=(z,x)=>(17+8*x)**.5%1&&(z||h(1,y))))

Cobalah online!

Bagaimana?

Lebar w dari matriks diberikan oleh:

w=Tn+n1=(n+12)+n1=n(n+3)21

(NB: Sebagaimana diizinkan oleh aturan tantangan, kami menghasilkan matriks lebar sebagai gantinya.)w+1

Demikian pula, sel yang terletak di kosong jika kuadrat berikut mengakui akar integer untuk atau :(X,Y)k=Xk=Y

x(x+3)21k=0x2+3x22k=0

penentu yang adalah:

Δ=94(22k)=17+8k

Arnauld
sumber
Tidak yakin apakah itu dapat menyimpan byte, tetapi solusi kuadratik itu adalah , jadi akan ada akar integer jika aneh, yaitu , adalah kuadrat sempurna yang aneh. 3±17+8k2ΔΔ
Erik the Outgolfer
5

MATL, 14 10 byte

:"@:Fv]g&*

Jawaban ini digunakan 1untuk blok dan 0latar belakang

Cobalah di MATL Online

Penjelasan

     % Implicitly grab the input as an integer, N
     %   STACK: { 3 }
:    % Create an array from 1...N
     %   STACK: { [1, 2, 3] }
"    % For each element M in this array
  @: % Create an array from 1...M
     %   STACK (for 1st iteration): { [1] }
     %   STACK (for 2nd iteration): { [1; 0], [1, 2] }
     %   STACK (for 3rd iteration): { [1; 0; 1; 2; 0], [1, 2, 3] }
  F  % Push a zero to the stack
     %   STACK (for 1st iteration): { [1], 0 }
     %   STACK (for 2nd iteration): { [1; 0], [1, 2], 0 }
     %   STACK (for 3rd iteration): { [1; 0; 1; 2; 0], [1, 2, 3], 0 }
  v  % Vertically concatenate everything on the stack
     %   STACK (for 1st iteration): { [1; 0] }
     %   STACK (for 2nd iteration): { [1; 0; 1; 2; 0] }
     %   STACK (for 3rd iteration): { [1; 0; 1; 2; 0; 1; 2; 3; 0] }
] 
g    % Convert everything to be boolean (turns all non-zeros to 1)
     %   STACK: { [1; 0; 1; 1; 0; 1; 1; 1; 0] }
&*   % Perform element-wise multiplication to expand this array out into the 2D grid
     % Implicitly display the result
Suever
sumber
4

APL (Dyalog Unicode) , 12 10 12 byte SBCS

∘.×⍨∊,\0,⎕⍴1

Cobalah online!

Edit: -2 byte dari ngn. +2 byte karena jawaban sebelumnya tidak valid (dengan ide berkat ngn dan dzaima).

Penjelasan

∘.×⍨∊,\0,⎕⍴1

             Take input.
           1  An array of 1s of length our input. Example: 1 1 1
       0,      Prepend a 0. Example: 0 1 1 1
     ,\        Take all the prefixes and concatenate them. Example: 0  0 1  0 1 1  0 1 1 1
              Flatten the list. Example: 0 0 1 0 1 1 0 1 1 1
∘.×⍨           Turn the above list into a multiplication table of 0s and 1s
               by multiplying the list with itself.

Outputnya akan terlihat seperti:

0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 1 0 1 1 0 1 1 1
0 0 0 0 0 0 0 0 0 0
0 0 1 0 1 1 0 1 1 1
0 0 1 0 1 1 0 1 1 1
0 0 0 0 0 0 0 0 0 0
0 0 1 0 1 1 0 1 1 1
0 0 1 0 1 1 0 1 1 1
0 0 1 0 1 1 0 1 1 1
Sherlock9
sumber
1
Anda dapat mengambil input untuk menghindari{ }
ngn
4

Jelly , 7 byte

‘RÄṬ|þ`

Cobalah online!

Menghasilkan matriks digit, menggunakan untuk persegi panjang dan untuk padding di antara mereka. TIO link berisi footer yang memformat matriks digit dengan cara yang dapat dibaca manusia dengan mengurutkan baris dan kolom.01

Penjelasan

‘RÄṬ|þ`
 R       Take a range from 1 to
‘          {the input} plus 1
  Ä      Cumulative sum; produces the first {input}+1 triangular numbers
   Ṭ     Produce an array with 1s at those indexes, 0s at other indexes
     þ   Create a table of {the array}
      `    with itself
    |      using bitwise OR

Angka pada sel dari tabel yang dihasilkan akan menjadi jika salah satu atau adalah angka segitiga, atau sebaliknya (karena bitwise OR berfungsi seperti logika OR pada 0 dan 1). (Kami menggunakan , berkisar dari 1, karena Jelly menggunakan pengindeksan berbasis 1, jadi kami tidak perlu khawatir tentang kolom 0 yang salah penuh dengan 0s; kami harus menambahkan 1 ke input karena array dihasilkan oleh(x,y)1xy0Rberhenti pada elemen terbesar yang diberikan dalam input, jadi kita perlu menggambar garis di sisi kanan dan bawah.) Kesenjangan antara angka segitiga adalah bilangan bulat berurutan, sehingga blok persegi panjang dibentuk oleh celah antara ujung garis sebagai ukuran yang diminta oleh pertanyaan; dan penggunaan operasi ATAU (dalam hal ini, bitwise) memungkinkan garis saling bersilangan dengan benar.

ais523
sumber
Kenapa ini wiki komunitas ?! Jika Anda ingin melepaskan perwakilan Anda bisa memberikannya kepada Erik the Outgolfer
Jonathan Allan
1
Saya CW semua jawaban saya (kecuali saya pikir mereka mungkin mendapatkan hadiah, dalam hal ini saya menggunakan akun sementara untuk mereka). Bertujuan untuk reputasi tinggi biasanya berarti bertujuan untuk membuat situs lebih buruk (saya pernah mencetak ulang setiap hari selama seminggu untuk membuktikan bahwa itu mungkin; itu tidak terlalu sulit, namun melibatkan banyak pertanyaan / jawaban dangkal yang tidak ' t sangat berkontribusi ke situs). Selain itu, mendapatkan reputasi sebagian besar negatif pada akun karena membuat situs menggerutu Anda untuk melakukan pekerjaan moderasi; dan mendapatkan hak istimewa meningkatkan risiko mendapatkan lencana secara tidak sengaja.
ais523
Juga, saya sebagian besar tidak setuju dengan konsep kepemilikan posting di SE (meskipun sebagian besar dengan pertanyaan daripada jawaban, tetapi Anda tidak dapat CW pertanyaan tanpa bantuan moderator). Marker CW dengan sangat jelas mengatakan "jika ada sesuatu yang salah di sini, silakan mengeditnya"; jadi saya akan menerapkan penanda CW untuk semuanya bahkan jika itu tidak menghilangkan reputasi. Bagaimanapun, SE dimaksudkan untuk menjadi bagian wiki, tetapi orang tidak selalu menggunakannya sebagai itu.
ais523
RE "bertujuan untuk reputasi yang tinggi" jika Anda tidak menginginkannya maka cukup posting ketika Anda berpikir itu bermakna dan hindari apa yang Anda sebut "dangkal" q & a. Entah Anda merasa jawaban ini menambahkan sesuatu ke situs, dalam hal ini mempostingnya tanpa CW, atau Anda pikir itu "dangkal", dalam hal ini jangan posting itu. RE "Saya sebagian besar tidak setuju dengan konsep kepemilikan posting di SE" - yah Anda hanya di situs yang salah saat itu.
Jonathan Allan
2
Saya pikir jawabannya menambahkan sesuatu ke situs, tetapi jika bukan CW, saya merasa terdorong untuk memposting dengan cara yang akan membuat saya mendapatkan reputasi daripada memposting apa yang saya pikir akan menarik; kembali ketika saya adalah pengguna 20k, saya akhirnya benar-benar membenci situs dan hampir ditolak dari golf kode karena itu, jadi saya menghapus akun saya sebagai hasilnya. Ketika saya kembali, saya biasanya menghapus akun saya dengan setiap jawaban yang saya posting (membuat yang baru untuk jawaban berikutnya), tetapi orang lain menunjukkan bahwa CWing setiap jawaban akan memiliki efek yang serupa, jadi saat ini saya melakukan itu sebagai gantinya.
ais523
4

05AB1E , 9 byte

Menentukan program .fNatList[List[Nat]]

Kode:

$L×0ýSDδ*

Menggunakan pengodean 05AB1E . Cobalah online! atau gunakan versi yang tercetak cantik .


Penjelasan:

$ # Tekan angka 1 dan input n 
 L # Buat daftar [1, 2, 3, ..., n ]
  × # Perkalian string dengan vektor: 1 × [1, 2, 3, ..., n ]
                 Ini akan menghasilkan ["1", "11", "111", ..., "1" × n ]
   0ý # Bergabung dengan daftar yang dihasilkan dengan '0', menghasilkan "10110111011110111110 ..."
     S # Dibagi menjadi satu digit: [1, 0, 1, 1, 0, 1, 1, 0, 1, 1, 1, 1, 1, 0, ...]
      Dδ * # Tabel perkalian dengan dirinya sendiri
Adnan
sumber
4

C # (Visual C # Interactive Compiler) , 96 95 byte

-1 byte berkat Perwujudan Ketidaktahuan

n=>{var l="";for(;n>0;)l=new string('#',n--)+' '+l;for(;n<l.Length;)WriteLine(l[n++]>32?l:"");}

Cobalah online!

Khusus ASCII
sumber
tidak yakin apakah input melalui argumen tetapi output melalui stdout diperbolehkan
ASCII-only
3
Memadukan format IO baik
Jo King
1
Mengapa tidak menambahkannya n--di new stringbagian?
Perwujudan Ketidaktahuan
3

Python 2 , 67 byte

s='';n=input()
while n:s='#'*n+' '+s;n-=1
for c in s:print(c>' ')*s

Cobalah online!

Mencetak garis kosong untuk garis kosong, yang memungkinkan tantangan.

Panjang yang sama (dengan input satu di atas n):

r=range(input())
for n in r:print(' '.join(i*'#'for i in r)+'\n')*n

Cobalah online!

Tidak
sumber
3

Arang , 18 byte

≔⪫EN×#⊕ι θEθ⭆θ⌊⟦ιλ

Cobalah online! Tautan adalah untuk mengucapkan versi kode. Penjelasan:

   N                Input number
  E                 Map over implicit range
       ι            Current value
      ⊕             Incremented
    ×               Repetitions of
     #              Literal `#`
 ⪫                  Join with spaces
≔        θ          Assign to variable
           θ        Retrieve variable
          E         Map over characters
             θ      Retrieve variable
            ⭆      Replace characters with
              ⌊     Minimum of
               ⟦    List of
                ι   Row character
                 λ  Column character
                    Implicitly print each row on its own line
Neil
sumber
3

C # (.NET Core) , 208 155 byte

class M{static void Main(string[]a){int i=int.Parse(a[0]);var l="";for(;i>0;)l=new string('#',i--)+' '+l;for(;;)System.Console.WriteLine(l[i++]>32?l:"");}}

Cobalah online!

Versi yang jauh direvisi terima kasih kepada berbagai orang yang membantu (lihat komentar).

Stackstuck
sumber
1
202?
ASCII
1
@EmbodimentofIgnorance tidak valid, tidak bekerja untuk n> = 10 ...
ASCII-satunya
1
@ ASCII-hanya ini yang berfungsi: tio.run/…
Perwujudan Ketidaktahuan
2
@Stackstuck Ya. Sebuah program diizinkan untuk diakhiri dengan menabrak
ASCII
3

PowerShell , 42 40 byte

-2 byte berkat mazzy .

($r=1.."$args")|%{"$($r|%{'#'*$_})
"*$_}

Cobalah online!

Andrei Odegov
sumber
40 byte :)
mazzy
@ Mazzy, cerdik :)
Andrei Odegov
3

Java 11, 109 byte

n->{var l="";for(;n>0;)l="x".repeat(n--)+" "+l;for(;n<l.length();)System.out.println(l.charAt(n++)>32?l:"");}

Port C # .NET . Hanya jawaban dari ASCII .

Cobalah online.

n->{                       // Method with integer parameter and no return-type
  var l="";                //  Line-String, starting empty
  for(;n>0;)               //  Loop until `n` is 0:
    l=...+l;               //   Prepend to `l`:
       "x".repeat(n--)+" " //    Repeat "x" `n` amount of times, appended with a space
                           //    And decrease `n` by 1 afterwards with `n--`
    for(;n<l.length();)    //   Inner loop as long as `n` is smaller than the length of `l`:
      System.out.println(  //    Print with trailing newline:
        l.charAt(n++)>32?  //     If the `n`'th character of the line-String is NOT a space:
                           //     And increase `n` by 1 afterwards with `n++`
         l                 //      Print the line-String
        :                  //     Else:
         "");}             //      Print nothing (so only the newlines)
Kevin Cruijssen
sumber
Ini Java 11, bukan 8, karena repeatmetode ini.
Olivier Grégoire
@ OlivierGrégoire Ups .. Diperbaiki
Kevin Cruijssen
Namun, apakah bisa menerima lambda yang melempar pengecualian? Saya pikir itu ok untuk program penuh, tetapi tidak untuk fungsi / pengecualian
Olivier Grégoire
@ OlivierGrégoire Selama masih menampilkan hasil yang diharapkan, saya tidak melihat mengapa tidak tbh.
Kevin Cruijssen
1
Ini terkait dengan diskusi ini . Jawabannya tampaknya adalah jika REPL diterima (yang tidak secara default), maka tidak apa-apa untuk mencetak pada stderr atau melempar pengecualian, tetapi jika REPL tidak diterima maka std / pengecualian tidak diizinkan.
Olivier Grégoire
2

APL + WIN, 29 byte

m/⍉(m←¯1↓∊(⍳n),¨¯1)/(n,n←⎕)⍴1

Penjelasan:

(n,n←⎕)⍴1 prompt for integer n and create a nxn matrix of 1s

(m←¯1↓∊(⍳n) replicate the columns by 1,2,.....n and insert 0s between each replication

m/⍉ repeat replication and 0 insertion for the rows from above 

Contoh:

⎕:
3
1 0 1 1 0 1 1 1
0 0 0 0 0 0 0 0
1 0 1 1 0 1 1 1
1 0 1 1 0 1 1 1
0 0 0 0 0 0 0 0
1 0 1 1 0 1 1 1
1 0 1 1 0 1 1 1
1 0 1 1 0 1 1 1
Graham
sumber
2

J , 17 byte

[:*/~2=/\[:I.2+i.

Cobalah online!

Galen Ivanov
sumber
tidak tahu tentang I.trik ini !
Jonah
@Jonah, saya sedang menunggu kesempatan untuk menggunakannya :)
Galen Ivanov
2

Mouse-2002 , 79 byte

Menyalahgunakan makro Mouse untuk mengulangi fungsionalitas.

?1+n:#P,n,j,k,b#P,j,y,k,#P,n,i,' ,#P,i,x,35;;;;$P0 2%:(1%.2%.-^4%3%!'2%.1+2%:)@

Cobalah online!

MooseOnTheRocks
sumber
2

Ruby , 55 byte

->n{(s=(1..n).map{|x|?#*x}*' ').chars.map{|c|c<?!?c:s}}

Cobalah online!

Bagaimana?

Pertama, buat baris pertama, lalu beralih melalui karakternya. Cetak seluruh baris jika karakternya adalah '#', jika tidak cetak karakter tunggal (yang merupakan spasi)

GB
sumber
2

Brain-Flak , 170 byte

(({})<>){(({})<{({}[()]<(<>({})<>){(({})<{({}[(())])}>[()])}{}{}(([(()()()()())(){}]){})>)}{}(({}))>[()])}{}{}{}([]){{}({}<>((((()()){}){}){}){})<>([])}{}<>{({}<>)<>}<>{}

Cobalah online!

MegaTom
sumber
2

Perl 6 , 35 33 byte

{((\*Xx$_+1)~"
"Xx$_+1)>>.say}o^*

Cobalah online!

Callable Anonim yang mengambil nomor dan mencetak tabel perkalian *dengan huruf s dengan trailing newline.

Penjelasan:

{                             }o^* # Change the input to the range 0..n-1
  (\*Xx$_+1)    # Cross string multiply '*' by all of range 1..n
                # This creates the string "* ** *** ****" etc.
            ~"\n"                 # Append a newline
                 Xx$_+1           # Cross string multiply again
 (                     )>>.say    # And print all the lines
Jo King
sumber
1

Haskell, 69 68 byte

(a#b)0=[]
(a#b)n=(a#b)(n-1)++b:(a<$[1..n])
f n=((1#0)n#(0<$(1#0)n))n

Mengembalikan matriks angka.

Cobalah online!

Varian fdengan jumlah byte yang sama:

f n=((#)<*>(0<$)$(1#0)n)n
f n|l<-(1#0)n=(l#(0<$l))n
nimi
sumber
Apakah 0 baris dan kolom membantu?
dfeuer
1
@ PDFeuer: ya, mereka menghemat satu byte. Lihat versi pertama jawaban saya.
nimi
1

Stax , 7 byte

é╫▐§╘←╘

Jalankan dan debug itu

Karakter yang dipilih adalah backtick. (Bagaimana Anda memformat kode yang dalam penurunan harga?)

Itu berarti adan bdianggap sebagai spasi kosong.

rekursif
sumber
1

MathGolf , 20 byte

╒ÉÄ10;]h\■mÆε*╣¡§y╠n

Cobalah online!

MathGolf benar-benar perlu mendapatkan beberapa fungsionalitas lagi untuk memisahkan daftar dan membuat daftar 2D.

Penjelasan

╒                      range(1,n+1)
 É                     start block of length 3
  Ä                    start block of length 1
   1                   push 1
    0                  push 0
     ;                 discard TOS
      ]                end array / wrap stack in array
                       the stack now contains the list [1, 0, 1, 1, 0, 1, 1, 1, 0, 1, ...]
       h               length of array/string without popping (used for splitting string)
        \              swap top elements
         ■             cartesian product with itself for lists, next collatz item for numbers
          m            explicit map
           Æ           start block of length 5
            ε*         reduce list by multiplication (logical AND)
              ╣¡       push the string " #"
                §      get character at index 0 or 1 based on logical AND value
                       block ends here, stack is now ['#',' ','#','#',' ','#',...]
                 y     join array without separator to string
                  ╠    pop a, b, push b/a (divides the string using the length of a single line)
                   n   join array of strings with newlines
maks
sumber
1

Tinta , 151 152 151 byte

VAR k=0
=t(n)
~k=n
-(u)
~n--
{n+1:->s(k-n)->u}->->
=r(c)
->g(c)->
{k-c:<>->r(c+1)}->->
=g(n)
{n>1:@<>->g(n-1)}@->->
=s(n)
{n:
->r(1)->
->s(n-1)
}
.->->

Cobalah online!

Untung aturan memungkinkan kelebihan karakter.

Sunting: +1: Memperbaiki jarak. Juga, tampilkan menggunakan @ (yang tidak perlu melarikan diri) daripada # (yang tidak)

Sunting: -1: Rupanya perbaikan itu juga berarti saya tidak lagi memerlukan periode tambahan untuk memaksa baris baru pada baris yang tidak kosong. Rapi.

Sara J
sumber
Ohh, aku sebenarnya tidak memperhatikan ruang itu. Saya akan melihat apakah saya dapat melakukan sesuatu tentang mereka ...
Sara J
1

C ++, 170 156 byte

Terima kasih untuk dzaima

#include<string>
using v=std::string;v f(int a){v s;for(int i=1;i<=a;++i,s+='\n')for(int k=0;k<i;++k,s+='\n')for(int j=1;j<=a;++j)s+=v(j,'#')+' ';return s;}
HatsuPointerKun
sumber
138 bytes
ceilingcat
0

SmileBASIC, 83 77 byte

Output grafis. Masukan adalahN-1

INPUT N
FOR J=0TO N
X=0FOR I=0TO N
GFILL X,Y,X+I,Y+J
X=X+I+2NEXT
Y=Y+J+2NEXT
12Me21
sumber
0

Python 3 , 88 83 byte

-5 byte dari Jo King

n,l=range(int(input())),''
for i in n:l+='#'*-~i+' '
for j in n:print((l+'\n')*-~j)

Cobalah online!

Kerosen
sumber
Anda dapat menyimpan byte dengan mendeklarasikan di lluar loop. Cobalah online!
Jo King
@JonathanFrech Ada ruang ekstra di string baris baru
Jo King
0

Perl 6, 63 byte

{(1..$_).map(((1..$_).map("#"x*).join(" ")~"\n")x*).join("\n")}
bb94
sumber
1
.join(' ')tidak melakukan apa-apa, '#'bisa \*sebaliknya, string baris baru dapat menggunakan baris baru literal, keduanya l.map(str x*)bisa sebagai (str Xx l)gantinya. 38 byte
Jo King
0

C (gcc) , 108 104 byte

-4 bytes berkat ceilingcat

f(n,j){char*s,u[n*n],*t=s=u,i=0;for(;i++<n;*s++=32)for(j=i;j--;)*s++=35;for(s=t;*t;)puts(*t++>32?s:"");}

Cobalah online!

Khusus ASCII
sumber