Tantangan
Dengan ukuran s, cetak jaring kubus dengan ukuran itu terbuat dari simbol hash ( #
) dan spasi ( ).
Contoh:
1:
#
# # #
#
#
2:
# #
# #
# # # # # #
# # # # # #
# #
# #
# #
# #
3:
# # #
# # #
# # #
# # # # # # # # #
# # # # # # # # #
# # # # # # # # #
# # #
# # #
# # #
# # #
# # #
# # #
Jaring sebenarnya bisa berupa jaring kubus apa pun yang valid yang dapat dilipat menjadi kubus, misalnya ini:
# #
# #
# # # # # # # #
# # # # # # # #
# #
# #
# # # #
# # # #
# #
# #
# #
# #
# # # #
# # # #
Aturan
- Jaring yang dihasilkan harus valid secara geometris (dapat dilipat menjadi kubus)
- Celah standar dilarang
- Baca aturannya dengan cermat
- Ini kode-golf , jawaban terpendek menang, tetapi tidak akan dipilih
Jawaban:
Python 2, 47 byte
Cobalah online!
Mencetak jaring ini, dipilih karena dibenarkan kiri:
Garis-garis memiliki
n
atau4*n
salinan'# '
. Untuk masing-masing1,4,1
, kami mencetakn
waktu yang banyak salinan, dilakukann
kali untukn
garis. Memilikiexec
loop di dalamfor
loop tampaknya sia-sia, tetapi saya tidak melihat lebih baik.Alternatif yang saya uji:
(Semua
def
fungsi dapat menjadi lebih pendek sebagai sebuah program.)sumber
Oktaf,
58444232 bytesebagian terinspirasi oleh jawaban python @xnor.
membuat pola squre '#' untuk input 2 menghasilkan pola berikut:
empat
z
s digabungkan secara horizontal:z
dany
danz
digabungkan secara vertikalCobalah secara Online!
Jawaban sebelumnya:
Cobalah secara Online!
Menghasilkan yang berbentuk T
sumber
Mathematica,
776052 byteTerima kasih kepada Martin Ender untuk bermain golf sejauh 8 byte!
Fungsi tanpa nama mengambil argumen integer positif
#
dan mengembalikan string dengan baris baru (termasuk baris baru); setiap baris memiliki ruang trailing juga. Pertama kita mendefinisikan±
sebagai fungsi yang mengulang#
waktu inputnya ; kemudiana
didefinisikan sebagai±"# "
(ini#
adalah karakter, bukan input!), dan dari yangb
didefinisikan sebagai himpunan#
garis pendek, sedangkan±{a,a,a,a}<>n
himpunan#
garis panjang. (Dalam kedua kasus, ada linefeed literal antara kutipan yang cocok.) Final<>b
menyatukan daftar string yang dihasilkan dengan salinan kedua dari set baris pendek. Contoh keluaran ketika#=2
( jawaban xnor mengajari saya bahwa orientasi ini lebih golf):Versi sebelumnya dari implementasi ini:
Pengajuan asli:
Membangun keluar string
4*(3#+1)
buah, masing-masing yang baik"# "
," "
atau"\n"
; cukup hitung potongan mana yang akan digunakan berdasarkan indeksn
. Contoh output ketika#=2
:sumber
JavaScript (ES6), 59 byte
Output mencakup spasi tambahan di akhir setiap baris dan baris tambahan tambahan.
sumber
Ruby, 36 byte
Pemakaian:
Ruby, 38 byte
Bentuk ini lebih panjang di Ruby tapi saya berharap ada beberapa bahasa yang lebih pendek.
Pemakaian:
Kedua jawaban bisa lebih pendek jika diizinkan untuk mengembalikan (lebih disukai) serangkaian string atau (kurang disukai) string tunggal daripada mencetak.
sumber
Scala, 56 byte
sumber
JavaScript (ES6), 71
Uji
sumber
Java 8, 99 byte
sumber
V ,
2423201820 byteDengan semua karakter tersembunyi ditampilkan
^[
is0x1b
(escape character literal) dan^V
is0x16
(C-v
)Cobalah online!
Saya harus meningkatkan bytecount karena
Ä
perintah sedang buggy dalam tarikan V baru iniOutput dalam format ini:
dengan baris baru terkemuka
Hexdump:
Penjelasan
Sekarang setelah satu sisi jaring telah selesai, kita harus membuat jaring
Solusi alternatif jika kami tidak menampilkan spasi:
2120181618 byte(untuk alasan yang sama dengan solusi teratas, tautan TIO ini dimodifikasi)
Cobalah online!
sumber
V , 14 byte (tidak bersaing)
Cobalah online!
Untuk alasan apa pun, tantangan ini menemukan banyak bug. Sekarang semuanya sudah diperbaiki, sayangnya versi ini tidak bersaing, tetapi senang melihat seperti apa jawaban V untuk tantangan ini ketika tidak perlu menambahkan banyak byte untuk mengikuti kode ceroboh saya.
Penjelasan:
sumber
J
masalah ini bukan AFAIK pengkodean ceroboh, saya pikir itu hanya nvim default?Jelly ,
2019 byteCobalah online!
-1 Terima kasih kepada 44874 (steenbergh).
AKU TIDAK BISA OUTGOLF MUDDYFISH BANTUAN!
Apakah golf ini ???
2019 byte sepertinya terlalu banyak , melihat Link 1.Penjelasan:
sumber
@
tapi bertukar operan kex
diri sendiri:”#xẋ³Wẋ³K€Y
.Arang , 20 byte
Kode berakhir dengan spasi. Cobalah online!
Penjelasan
Arang adalah bahasa yang berspesialisasi dalam seni ASCII. Ini juga tidak lengkap, bermasalah, dan kurang didokumentasikan. Cukuplah untuk mengatakan, ini membutuhkan cukup banyak trial and error sebelum melakukan apa yang seharusnya.
Nλ
memasukkan nomor ke dalamλ
.G
adalah perintah poligon, yang akan kita gunakan di sini untuk menggambar persegi panjang.↑λ←×⁶λ↓λ
menentukan batas poligon:λ
langkah ke atas , langkah ke kiri 6 kaliλ
, danλ
langkah ke bawah . (Itu tigaλ
denganλ
blok sisi-by-side.) Tepi bawah persegi panjang disimpulkan. Poligon kemudian diisi dengan string#
.D
membuang kanvas saat ini ke stdout, menghasilkan sesuatu seperti ini:G
perintah, kursor berada di sudut kiri bawah kanvas.M×⁴λ←
bergerak itu ke kiri dengan 4 kaliλ
langkah (setara dengan duaλ
olehλ
blok).Menyatukan mereka dan Anda punya jaring kubus.
sumber
Utilitas Bash / Unix,
72696866 byteCobalah online!
Ini bekerja dengan menggunakan fakta bahwa [4 ^ k / 3], ketika ditulis dalam basis 2, adalah 10101010 ... 01, dengan k 1. (Kurung kotak disini menunjukkan fungsi lantai.)
sumber
Pyke, 16 byte
Coba di sini!
Setara dengan
Karena tidak diinginkan
Ini menggunakan beberapa trik untuk menurunkan byte-count:
[1, 4, 1]
XF
secara otomatis membuang output ke stack"#
pada akhirnya ditukar dengan yang terakhir*
, yang berarti bahwa penutupan"
tidak diperlukan. Ini terjadi secara implisit ketika token terakhir adalah string.sumber
Python 2 ,
687165 byte-6 dengan terima kasih kepada @sagiksp
Cobalah online!
Dengan tidak adanya menemukan cara untuk mengalahkan @ xnor saya akan memposting fungsi rekursif saya hanya sebagai pendekatan alternatif. Untuk f (5) cetakan
Pola ini dipilih hanya karena dapat dibagi menjadi dua bagian tidak seperti yang lainnya.
sumber
PHP,
6462 byteDisimpan 2 byte berkat Christoph .
Mencetak jaring seperti ini:
(dengan baris baru terkemuka)
sumber
while($a="282"[$i++/$s=$argv[1]]*$s)echo str_pad("\n",$a,"# ");
menghemat 2 byte.Batch, 111 byte
sumber
Pushy ,
322928 byteMencetak jaring kubus dibenarkan kiri. Ini sulit untuk golf ...
Cobalah online!
sumber
Retina ,
3937 byteIni adalah pertama kalinya saya menggunakan Retina, saya masih mencoba memahami cara melakukan sesuatu.
(dengan dua spasi tambahan setelah baris ke-4 dan ke-5)
Terima kasih kepada Martin Ender untuk bermain golf 2 byte!
Cobalah online!
sumber
$_
di bagian bawah dengan mengalihkan beberapa hal di sekitar setelah menghapus baris kosong. tio.run/nexus/… adalah jumlah byte yang sama tetapi sedikit lebih jelek.QBIC ,
526740 byteLengkap menulis ulang:
Ini sekarang menggunakan pola ini:
Di mana
-
diisi dengan spasi.sumber
Pip ,
281716 byte15 byte kode, +1 untuk
-n
bendera.Mengambil ukuran sebagai argumen baris perintah. Cobalah online!
Penjelasan
Berikut ini tidak persis bagaimana data akan dimodifikasi, tetapi memberikan ide dasar (untuk
a=2
):sumber
05AB1E , 13 byte
Cobalah online!
Penjelasan
Contoh input
n=2
sumber
C #, 152 byte
sumber
SmileBASIC,
5750 byteDijelaskan:
Setelah PRINT pertama (size = 2, @ adalah posisi kursor):
Setelah GULIRAN:
Setelah PRINT kedua:
sumber
Common Lisp,
838179 bytePemakaian:
(funcall #'(lambda(x)(format t"~v@{~v@{# ~}~:*~%~}~v@{~vt~0@*~v{# ~}~%~}"x(* x 3)(* x 2)))2)
Keluaran:
Bagaimana cara kerjanya?
Ide untuk perbaikan disambut.
sumber