Diberi angka n , hasilkan n kolom pertama dari pola ini:
#
# #
# # # #
# # # # # # # #
# # # # # # # # # # # # # # # #
################################ ...
Ketinggian kolom di (1-diindeks) n adalah jumlah 0
bit tambahan dalam representasi biner n , ditambah satu. Akibatnya, lapisan bawah memiliki setiap kolom diisi, lapisan kedua setiap kolom kedua, lapisan ketiga setiap kolom keempat, dll.
Aturan
- Anda dapat input dan output melalui metode standar apa pun.
- Anda dapat menganggap inputnya bilangan bulat antara 1 dan 999, inklusif.
- Output dapat berisi jumlah spasi putih apa pun, asalkan polanya masih utuh.
- Polanya harus diindeks 1, dan dalam format yang sama seperti yang ditunjukkan di sini.
- Anda dapat menggunakan karakter non-spasi tunggal apa pun sebagai pengganti
#
, tetapi Anda tidak dapat mengubah karakter spasi.
Uji kasus
1
#
2
#
##
3
#
###
4
#
# #
####
5
#
# #
#####
7
#
# # #
#######
32
#
# #
# # # #
# # # # # # # #
# # # # # # # # # # # # # # # #
################################
Beberapa kasus uji yang lebih besar dapat ditemukan di sini .
Mencetak gol
Ini adalah kode-golf , jadi kode terpendek dalam byte di setiap bahasa menang.
#
?Jawaban:
Python 2 , 54 byte
Cobalah online!
Mencetak dengan banyak spasi putih terkemuka. Setiap baris
i
menghitung mundur darin
pengulangan pola2**i-1
spasi diikuti oleh a#
. Pola ini diulang hingga lebar penggaris, yang merupakan inputn
. Ini dilakukan dengan mengalikan string pola dengann
dan mengambiln
karakter pertama[:n]
.Pola dapat dibuat dengan memformat string untuk alternatif dengan panjang yang sama.
Metode mengiris yang lucu lebih lama.
sumber
Python 3 , 74 byte
Cobalah online!
sumber
a=2**len(bin(n))
untuk 72 bytesV ,
17, 16 byteCobalah online!
Hexdump:
Terima kasih kepada @KritixiLithos karena telah menghemat satu byte!
Algoritma ini sangat tidak efisien, tetapi harus bekerja secara teori untuk input ukuran apa pun.
Ia bekerja dengan menghasilkan pertama n iterasi dari pola berikut:
Dan kemudian memotong semua kecuali kolom n pertama . Dengan demikian, ini akan menghasilkan satu ton spasi putih terkemuka, tetapi OP mengatakan:
Penjelasan:
sumber
|
.JavaScript (ES6),
6158 byteDisimpan 1 byte berkat @ETHProductions, lalu 2 byte lagi ketika saya melihat bahwa karakter apa pun dapat digunakan.
Solusi rekursif.
Kasus uji:
Tampilkan cuplikan kode
Animasi:
Tampilkan cuplikan kode
sumber
c/2|0
kec>>1
untuk menyimpan byte.APL (Dyalog) , 21 byte
Cobalah online!
'# '[
... `] mengindeks string dengan⎕
dapatkan input⍳
yang banyak saya ntegers2⊥⍣¯1
konversikan ke biner, gunakan sebanyak digit yang diperlukan (satu angka di setiap kolom )⊖
terbalik terbalik∨⍀
kumulatif ATAU reduksi vertikal0⍪
angka nol di atas⊖
flip terbalik (yaitu kembali lagi)1+
tambahkan satu (untuk pengindeksan berbasis 1)sumber
Jelly ,
1110 byteCobalah online!
1 byte disimpan setelah OP menambahkan relaksasi yang tidak harus dilakukan oleh karakter
#
.sumber
Oktaf, 45 byte
Cobalah di Octave Online!
Alih-alih
'#'
mencetak'!'
.sumber
PHP , 139 byte
Cobalah online!
sumber
Japt ,
2017 byteDisimpan 3 byte berkat @Shaggy dan @ETHproduksi
Cobalah online!
Penjelasan:
Input: 5
sumber
l
n&-n
untuk menangkap hanya final1
dan semua trailing0
sn
. Tidak yakin apakah ini akan membantu, tetapi patut dicoba ...C,
8474 byteTidak Disatukan:
Tes dengan:
Penjelasan
Sekali lagi, rekursi mengambil lebih sedikit karakter dalam C daripada iterasi, sehingga dua loop dinyatakan sebagai dua doa rekursional.
Juga, C adalah bahasa yang bagus untuk memainkan trik dengan ekspresi boolean, memungkinkan keputusan apakah akan mengosongkan atau
#
untuk diekspresikan oleh ekspresi32+3*!(i&m)
. Spasi memiliki nilai ASCII 32,#
yaitu ASCII 35, jadi kami mendapatkan nilai kosong jika ada bit dalam mask yang diseteli
.sumber
int i,l,m
?Pyth , 15 Bytes
Cobalah!
penjelasan
sumber
Python 2 , 47 byte
Cobalah online!
sumber
JavaScript (ES8), 71 bytes
The padStart() function was introduced in ECMAScript 2017!
Show code snippet
JavaScript (ES6), 77 bytes
Show code snippet
sumber
Mathematica, 69 bytes
sumber
(WESRRMICGSE): 237 bytes
Alright. 'splaining time.
First off, replace every
COUNTA(R1C:R[-1]C,R[1]C:R[1024]C)+1
with simply[i]
, for input. the token counts the number of cells, not including itself, that contain a formula, and then adds one, to include itself. Since WESRRMICGSE drags a formula according to the input you give it, this token always results in the input.we have:
This is much more readable. You're going to see the
FLOOR(LOG([i],2),1)
token a lot, which simply means take the nearest power of 2 which is less than the input ([i]
) number. eg:4->4, 5->4, 6->4, 7->4, 8->8 ...etc
. I'll replace that withGS[[i]]
better. breaking down the if clause, we're testing if the row is less than or equal to
GS[[i]]+3
, because all rulers' height is equal to the GS[[i]]+1, this selects the rows which are equal to the height of the ruler.+1
for 1-indexing rows, and+1
again for WESRRMICGSE offset.The
FALSE
result yields an empty cell (""), and a true result yieldsLEFT(REPT(REPT(" ",,FLOOR(POWER(2,LOG([i],2)-ROW()+2),1),1)-1) &"#",[i]),[i])
currently still editing, stay tuned
sumber
Haskell,
6462 bytesTry it online! Example usage:
f 10
.sumber
k, 33 bytes
This only seems to work in AW's interpreter.
The oK version (which you can try online) seems to have a bug, requiring a slight change to make it work:
sumber
C#, 174 bytes
This method has two parameters, an input for the ruler length, and an output which is the ruler as string.
Golfed:
Indented:
Try it online!
sumber
Func<int, string>
save you some bytes?Charcoal,
2723 bytesTry it online! Link is to verbose version of code. Edit: Saved 4 bytes by switching to
JumpTo
.sumber
JumpTo
(sorry)J, 38 bytes
Not great. Lmk if the byte count is off -- I'm on my phone.
sumber
3
at the beginning is input...0|.@|:'#'#"0~1#.2~:/\i.#:@,]
Java (OpenJDK 8), 91 bytes
Try it online!
Ungolfed:
sumber
CJam, 34 bytes
Meh.
sumber
C (gcc), 70 bytes
Try it online!
sumber
n+~x
instead ofn^x+1
Perl 5, 60 + 1 (-n) = 61 bytes
Try it online!
sumber