Tugas
Diberikan string huruf ASCII huruf kecil kosong a
- z
, ambil karakter pertamanya, dan:
- Kelilingi dengan kuadrat salinan karakter kedua ,
- Kelilingi itu dengan berlian salinan karakter ketiga ,
- Kelilingi itu dengan kuadrat salinan karakter keempat ...
… Berganti-ganti antara batas persegi dan berlian sampai ujung tali. Ruang kosong antara perbatasan harus diwakili oleh ruang ASCII ( ).
Untuk menambahkan batas bujur sangkar , gambarkan sebuah bujur sangkar tepat di sekitar seluruh "array kerja" saat ini:
sssssssssss
t s t s
t t s t t s
t t s t t s
t aaa t s t aaa t s
t aca t => st aca ts
t aaa t s t aaa t s
t t s t t s
t t s t t s
t s t s
sssssssssss
Untuk menambahkan batas berlian , gambar bentuk berlian terpusat yang menyentuh persegi terluar secara diagonal , tetapi tidak secara ortogonal :
s
s s
s s
s s
s s
s s
s s
wwwwwwwwwww s wwwwwwwwwww s
w o w s w o w s
w o o w s w o o w s
w o o w s w o o w s
w o eee o w s w o eee o w s
wo eme ow => s wo eme ow s
w o eee o w s w o eee o w s
w o o w s w o o w s
w o o w s w o o w s
w o w s w o w s
wwwwwwwwwww s wwwwwwwwwww s
s s
s s
s s
s s
s s
s s
s
Program Anda harus menampilkan array terakhir.
- Setiap baris dapat berisi jumlah spasi tambahan.
- Anda dapat menampilkan daftar string yang mewakili garis, atau string yang dipisahkan baris baru dengan baris tambahan opsional.
- Garis depan / kiri kosong tidak diizinkan.
- Kolom ruang terdepan juga dilarang.
Ini adalah kode-golf . Kode terpendek dalam byte menang.
Uji kasus
Contoh-contoh di atas output untuk diharapkan cat
, cats
, meow
, dan meows
, dalam membaca urutan. Beberapa kasus lain yang layak ditangani:
Untuk input
a
, program Anda harus menampilkan:a
Untuk input
ab
, program Anda harus menampilkan:bbb bab bbb
Untuk input
codegolf
, program Anda harus menampilkan:fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff f l f f l l f f l l f f l l f f l l f f l l f f l l f f l l f f l l f f l l f f l l f f l l f f l l f f l l f f l l f f l ooooooooooooooooooooooooooo l f f l o g o l f f l o g g o l f f l o g g o l f f l o g g o l f f l o g g o l f f l o g g o l f f l o g g o l f f l o g eeeeeeeeeee g o l f f l o g e d e g o l f f l o g e d d e g o l f f l o g e d d e g o l f f l o g e d ooo d e g o l f fl og ed oco de go lf f l o g e d ooo d e g o l f f l o g e d d e g o l f f l o g e d d e g o l f f l o g e d e g o l f f l o g eeeeeeeeeee g o l f f l o g g o l f f l o g g o l f f l o g g o l f f l o g g o l f f l o g g o l f f l o g g o l f f l o g o l f f l ooooooooooooooooooooooooooo l f f l l f f l l f f l l f f l l f f l l f f l l f f l l f f l l f f l l f f l l f f l l f f l l f f l l f f l l f f l f fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
Implementasi referensi
Saya menulis beberapa kode Julia bahwa output program Anda harus cocok (setidaknya secara visual). Cobalah online!
\r\n
) dan bukannya satu (\n
)?prompt
danconsole.log
. Anda juga dapat menggunakan string template yang menghemat 2 byte per panggilan fungsi pada Strings (sepertifill(' ')
menjadifill` `
)S-i-1
menjadiS+~i
, dani%2||o--
keo-=~i&1
.a=Array(D*2+1).fill
.map((_,$,a)=>[...a])
menghemat 10 byte.Haskell,
138137136 byteMenentukan fungsi
f
yang mengembalikan hasilnya sebagai daftar baris-1 byte terima kasih kepada @Lynn
sumber
C ++ -
373 366 362359 byte-1 oleh @TuukkaX, -6 oleh @Kevin Cruijssen, -4 oleh impor, -3 oleh @Baum mit Augen
http://ideone.com/5y54mx
Catatan: Solusi ini menggunakan titik ('.') Sebagai karakter "spasi" untuk membuat ruang kosong lebih terlihat. Untuk menggunakan ruang sebagai gantinya, kita harus mengubah
S(s,46)
keS(s,32)
. Skornya tetap sama.Tidak Disatukan:
Coba ungolfed online
Bagaimana cara menggunakan:
Keluaran:
sumber
std::vector<S> V
memiliki ruang putih yang tidak berguna.if(A(i)<=R(k)&&A(j)<=R(k)&&k%2?A(i)==R(k)||A(j)==R(k)
dalam&&
dan||
dapat&
dan|
untuk -3 byte; danint r=R(w.size()-1),...
bisa menjadiint l=w.size(),r=R(l-1),...
danfor(k=0;k<w.size();++k)
kemudian menjadifor(k=0;k<l;++k)
-3 byte.using S=std::string;
untuk mengamankan dua byte pertypedef
.Mathematica, 167 byte
Input harus berupa daftar karakter.
misalnya
sumber
JavaScript (ES6), 252 byte
Dimana
\n
mewakili karakter baris baru literal.sumber
JavaScript (ES6), 204
229 238Fungsi anonim mengembalikan array string
Kurang golf
Uji
sumber
Java -
429417 byteCredit masuk ke @Anedar karena itu berpengaruh pada struktur jawaban ini
Tidak Disatukan:
sumber
JavaScript (ES6), 322 byte
Tidak kompetitif
Kurang Golphed
Tes dengan
Keuntungan mudah dengan meninggalkan yang terdepan
var L=
dan.join("\n")
dalam pernyataan pengembalian untuk -17 byte, tetapi ketik kembali untuk menguji kode : DIni adalah jawaban dua pass, mengevaluasi lebar (
w
) yang diperlukan untuk plot plot persegi atau berlian, sebelum merencanakan poin denganP
pada pass kedua menggunakan rotasi dan terjemahan.d
adalah dimensi (tinggi atau lebar) dari persegi yang tidak diputar sebelum terjemahan atau rotasi.Rotasi dan skala dengan rincian from2 dari jawaban Mathematica . Penggunaan templat string yang diberi tag dari jawaban pertama di utas ini . Terima kasih untuk pembelajarannya. Memilih pertanyaan dan jawaban.
sumber
Powershell,
269245238 byteTidak digabungkan, dijelaskan & tes ditulis:
sumber