Tantangan Anda adalah dengan tepat menampilkan kotak berikut:
..................................................
..................................................
.. ..
.. ..
.. ++++++++++++++++++++++++++++++++++++++++++ ..
.. ++++++++++++++++++++++++++++++++++++++++++ ..
.. ++ ++ ..
.. ++ ++ ..
.. ++ .................................. ++ ..
.. ++ .................................. ++ ..
.. ++ .. .. ++ ..
.. ++ .. .. ++ ..
.. ++ .. ++++++++++++++++++++++++++ .. ++ ..
.. ++ .. ++++++++++++++++++++++++++ .. ++ ..
.. ++ .. ++ ++ .. ++ ..
.. ++ .. ++ ++ .. ++ ..
.. ++ .. ++ .................. ++ .. ++ ..
.. ++ .. ++ .................. ++ .. ++ ..
.. ++ .. ++ .. .. ++ .. ++ ..
.. ++ .. ++ .. .. ++ .. ++ ..
.. ++ .. ++ .. ++++++++++ .. ++ .. ++ ..
.. ++ .. ++ .. ++++++++++ .. ++ .. ++ ..
.. ++ .. ++ .. ++ ++ .. ++ .. ++ ..
.. ++ .. ++ .. ++ ++ .. ++ .. ++ ..
.. ++ .. ++ .. ++ .. ++ .. ++ .. ++ ..
.. ++ .. ++ .. ++ .. ++ .. ++ .. ++ ..
.. ++ .. ++ .. ++ ++ .. ++ .. ++ ..
.. ++ .. ++ .. ++ ++ .. ++ .. ++ ..
.. ++ .. ++ .. ++++++++++ .. ++ .. ++ ..
.. ++ .. ++ .. ++++++++++ .. ++ .. ++ ..
.. ++ .. ++ .. .. ++ .. ++ ..
.. ++ .. ++ .. .. ++ .. ++ ..
.. ++ .. ++ .................. ++ .. ++ ..
.. ++ .. ++ .................. ++ .. ++ ..
.. ++ .. ++ ++ .. ++ ..
.. ++ .. ++ ++ .. ++ ..
.. ++ .. ++++++++++++++++++++++++++ .. ++ ..
.. ++ .. ++++++++++++++++++++++++++ .. ++ ..
.. ++ .. .. ++ ..
.. ++ .. .. ++ ..
.. ++ .................................. ++ ..
.. ++ .................................. ++ ..
.. ++ ++ ..
.. ++ ++ ..
.. ++++++++++++++++++++++++++++++++++++++++++ ..
.. ++++++++++++++++++++++++++++++++++++++++++ ..
.. ..
.. ..
..................................................
..................................................
Kotak itu tinggi dan lebar 50, spasi dua lebar.
Anda harus menulis fungsi atau program yang menghasilkan atau mengembalikan string dan tidak mengambil input.
Bytes paling sedikit menang!
+
kotak terdalam hanya memiliki 1 lapisan di bagian atas dan bawah? Itu akan membuat jawaban berbasis algoritma agak lebih lama, karena itu berarti dua lapisan terdalam tidak persis persegi.Jawaban:
Pyke,
2017 byteCoba di sini!
Fungsi surround dibuat untuk pertanyaan kompleksitas-kolmogorov seperti ini!
sumber
J , 25 byte
Cobalah online!
Penjelasan
sumber
echo
, itu bahkan bukan fungsi, hanya sebuah nilai. Meskipun J tidak memiliki fungsi argumen nol.C, 115 byte
Menentukan fungsi
f
(panggilan sebagaif();
) yang mencetak string ke STDOUT.sumber
C,
535478477 BytesNah, itu banyak golf: - /
Inilah hasilnya;
sumber
for(;i++<51;
dan sekarang saya pergi oleh satu di mana-mana: - /++i
Haskell, 72 byte
@ Solusi Zgarb di Haskell. Saya juga mencoba untuk membangun kotak dengan menambahkan lapisan di sekitar inti
["..",".."]
, tetapi itu adalah 9 byte lebih lama (81 byte).sumber
Stacked, noncompeting, 35 byte
Coba di sini!
Tidak Disatukan:
Cukup sederhana.
surround
adalah fungsi yang, mengelilingi entitas dengan entitas fill. Sebagai contoh,(0) 1 surround
adalah((1 1 1) (1 0 1) (1 1 1))
.$surround
adalahsurround
sebagai fungsi, tidak dievaluasi.fold
mengambil nilai awal, lalu sesuatu untuk dilipat, lalu fungsi. Dalam kasus ini,surround
adalahfold
ed, mengelilingi string yang awalnya kosong''
(equiv.ε
) Dengan masing-masing karakter string.Ini pertama kali membuat string karakter
$' + .'
, yang, ketika dikalikan dengan angka, mengulangi setiap karakter. Ini membuat kita dengan:++ ..
. Ini kemudian dicor ke string. Kemudian, kami mengulangi string ini tiga kali, dan akhirnya menambahkan.
, memberi kami string yang diinginkan.Pendekatan yang berbeda untuk 39 byte:
#\
adalah memasukkan dan mengambil karakter awal dari string sebagai nilai awal. Ini juga hanya berfungsi pada Array.sumber
JavaScript (ES6), 117 byte
Solusi non rekursif membawa saya 128 byte:
Dimana
\n
mewakili karakter baris baru literal.sumber
C, 97 byte
sumber
Jelly , 18 byte
Cobalah online!
Pendekatan yang sama dengan jawaban J Zgarb:
12ŒRA
adalahabs([-12 … 12])
,x2
mengulangi setiap elemen dua kali,»þ`
membuat tabel maksimum, secaraị“ + .”
siklik mengindeks ke dalam string, danY
bergabung dengan baris baru.sumber
05AB1E ,
393533 byteCobalah online!
Versi 33 Byte yang lebih keren sekarang karena Emigna berkomentar menyelamatkan saya 2 byte:
Cobalah online!
sumber
". + "DøJ3×'.«.pvy¤25yg-׫«})«»
selama 33 byte.… .+•â3fM~•3BSè.pvy¤25yg-׫«})«»
selama 34 byte pada "versi dingin".MATL , 21 byte
Cobalah online!
sumber
Ruby, 77 byte
sumber
[i%26-13,i/52].map(&:abs).max%4
(menghemat satu byte)Arang , 25 byte
Cobalah online! Tautan berisi mode verbose untuk penjelasan
sumber
Python 3 , 89 byte
Cobalah online!
sumber
Haskell, 385 Bytes
Putaran pertama kode golf di sini ... menanti untuk melihat bagaimana orang lain menangani yang ini.
Keluaran:
sumber
where
ke dalam satu baris dan digunakan;
untuk pemisahan. 3)f:f:[]
isf:[f] and
d: '': '': [] `isd:" "
. 4)m
mengambil parameter tetapi tidak menggunakannya. Sebarism
dant
. 5) mendefinisikan fungsi baru#
untuk menggantikanreplicate
:c#x=c<$[1..8*n+x]
dan menyebutnya sukad#2
dan' '#(-6)
. 6)mod 2 == 0
bisa diganti denganeven
, atau flip tes dan penggunaanodd
dan pegolfotherwise
:1<2
. ...b n=f:f:s:s:map(\x->l++x++r)(b$n-1)++s:s:f:[f]where f=d#2;s=l++' '#(-6)++r;l=d:d:" ";r=reverse l;d|odd n='+'|1<2='.';c#x=c<$[1..8*n+x]
.Oktaf, 53 byte
Hasilkan pola berulang 1 sampai 8 dari pusat ke luar dan gunakan sebagai indeks untuk ekstraksi elemen
. ++ .
Cobalah secara Online!
sumber
Bash, 191 byte
Mungkin bisa lebih kecil, tetapi lebih kecil dari upaya algoritmik saya.
sumber
C #, 203 byte
Program yang lengkap dan mudah dibaca:
Fungsi golf :
sumber
05AB1E , 33 byte
Cobalah online!
Penjelasan
sumber
PowerShell ,
171151 byteCobalah online!
Ho-hum menjawab. Saya yakin ada cara yang lebih pendek (mengingat jawaban yang panjang, saya yakin), tetapi ini menunjukkan beberapa trik yang rapi.
Penjelasan:
1..12|%{' . +'[$_%4]}
menghasilkan array string (panjang satu karakter), dalam pola yang benar yang kita butuhkan. Cobalah online!Kami kemudian menambahkan
|%{($a+=$_+$_)})+"$a."
yang mengambil array dan memperluasnya berdasarkan baris sebelumnya. Cobalah online!String itu kemudian dikirim ke dalam satu lingkaran
|%{$c=if(++$i%2){('+','.')[($b=!$b)]}else{' '};$_.PadRight(25,$c)}
,. Setiap iterasi, kami memilih karakter yang benar (baik plus, titik, atau spasi), dan kemudian menggunakan.PadRight
fungsi untuk menambah jumlah karakter yang sesuai. Cobalah online!Sekarang, kita memiliki fondasi sudut kanan atas. Kita perlu membalik setiap string
|%{,($_+-join$_[($z=25..0)])*2}
dan menambahkannya bersama sehingga kita bisa mendapatkan bagian atas blok. Ini dilakukan dengan-join
perintah dan pengindeksan mundur25..0
. Selain itu, kami merangkum string dalam array,(...)
dan membuat mereka menjadi dua*2
sehingga kami mendapatkan seluruh bagian atas.Cobalah online!Itu semua disimpan ke dalam
$x
dan dienkapsulasi dalam parens sehingga menempatkan string pada pipa. Akhirnya, kami mundur$x
(pastikan untuk menghapus baris tengah duplikat-duplikat, kalau tidak kita akan memiliki empat..
di tengah) dan meninggalkan yang ada di dalam pipa. ImplisitWrite-Output
menempelkan baris baru di antara string, jadi kami mendapatkannya secara gratis.sumber