Tantangan Khusus Hari Kemerdekaan (AS) untuk Anda hari ini. Anda harus menulis program yang mencetak representasi seni Amerika dari Bendera Amerika ini.
0
|---------------------------------------------------------
| * * * * * * #################################|
| * * * * * |
| * * * * * * |
| * * * * * #################################|
| * * * * * * |
| * * * * * |
| * * * * * * #################################|
| * * * * * |
| * * * * * * |
|########################################################|
| |
| |
|########################################################|
| |
| |
|########################################################|
| |
| |
|########################################################|
|---------------------------------------------------------
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Ruang tambahan di setiap baris, serta satu baris tambahan, diizinkan.
Perhatikan bahwa ini bukan tampilan bendera yang seharusnya, tetapi ini adalah yang terdekat yang bisa saya dapatkan dengan ASCII.
Seperti biasa, ini adalah kode-golf sehingga celah standar berlaku dan jawaban terpendek dalam byte menang!
code-golf
ascii-art
kolmogorov-complexity
DJMcMayhem
sumber
sumber
Jawaban:
CJam,
18412010910176746967646258 byteCobalah online di juru bahasa CJam .
Ide
Bagian yang paling menarik dari bendera adalah pola bintang dan garis-garis.
Jika kita mengulangi dua spasi dan tanda nomor 56 kali dan menambahkan bilah vertikal untuk masing-masing, kita dapatkan
Mengulangi pola ini 7 kali dan membuang dua baris pertama, kami memperoleh garis-garis:
Sekarang, jika kita mengulangi string
" * "
50 kali dan membagi hasilnya menjadi potongan dengan panjang 22, kita mendapatkan bintang-bintang:Spasi putih sedikit tidak aktif, tetapi kita bisa memperbaikinya dengan menghilangkan potongan terakhir dan menambahkan ruang ke yang tersisa.
Sekarang, jika kita melapiskan garis dan bintang, kita dapatkan
Yang tersisa untuk dilakukan adalah menambahkan dua garis 57 garis, menambahkan kolom 37 batang vertikal dan meletakkan ceri di atasnya.
Kode
sumber
Python 2, 113 byte
Mengiris string dan memeriksa modulo berlimpah.
sumber
i=0
dicetak sendiri.Brainf ** k,
3355311315981178782 byteBahasa apakah ini?
Ini adalah versi yang dioptimalkan dengan tangan yang menampilkan 28 loop. Saya pikir saya sudah mengambil ini sejauh yang akan terjadi.
Inilah jalannya di ideone.com :
Bagaimana cara kerjanya?
Program ini menggunakan 10 lokasi memori:
Baris 1
+++[>++++<-]
. Maka hasil akhirnya adalah register 0 adalah 0, dan register 1 adalah 12."0"
di bagian atas bendera!Baris 2
"|"
(ASCII 124) dan mengeluarkannya."0"
(ASCII 48) menjadi"-"
(ASCII 45) dan mengeluarkannya.Baris 3
" * "
5 kali." * "
ditulis"#"
dengan total 32."#"
,,"|"
dan"\n"
ditulis.Baris 4 - 11
Baris 12
Baris 13
"#"
8 kali setiap kali melalui loop.Baris 14
Baris 15
" "
8 kali setiap kali melalui loop.Baris 16
Baris 17
Baris 18
Baris 19
Baris 20
"|"
dan baris baru dua kali setiap kali melalui loop.sumber
/// : 225 karakter
sumber
JavaScript ( ES6 ), 153
156Menggunakan string template, ada 1 baris baru yang signifikan dan dihitung
Tes menjalankan cuplikan di bawah ini (menjadi EcmaScript 6, hanya Firefox)
Untuk menjadi lebih patriotik, ini adalah versi EcmaScript 5
sumber
Ruby,
104102 byteMenggunakan gagasan dari ManAtWork's Ruby menjawab dengan izin.
Ruby,
127 121112 byteMengubah kutipan menjadi
?
array yang digunakan alih-alih bersyarat untuk warna garis. digunakan conditional bukan formula untuk stripe length.Kuncinya di sini adalah menggambar garis-garis (baik merah /
#
putih /space
) dengan panjang yang benar, kemudian membenarkannya, padding dengan bintang-bintang. Rubyrjust
memungkinkan kita menentukan string padding, yang berganti-ganti antara" * "
dan" *"
.Versi asli, 127 byte
sumber
map
di tengah-tengahputs
tapi aku tidak bisa menggunakannya sendiri, bahkan jika saya mengelilingi dengan kurung:puts((0.18).map{})
. Jika Anda melihat peningkatan lebih lanjut, beri tahu saya, atau batalkan hapus jawaban Anda sendiri dan poskan di sana.rjust
dapat mengambil string dan bukan hanya char. Sayang sekali Python tidak bisa melakukan itu ...SWI-Prolog, 275 byte
Dalam bahasa asal Prancis, yang agak pas
Lihat hasilnya di sini
sumber
C,
235211208205203198197186 bytesunting: menambahkan beberapa saran Cool Guy dan memanfaatkan?: untuk mengganti beberapa pernyataan if.
sunting: dihapus overflow \ 0 pencegahan dan digunakan pembatas panjang string di printf sebagai gantinya.
sunting: ulang kedua persyaratan memset.
sunting: pindah menempatkan ("0") di dalam header untuk menghapus titik koma.
sunting: sedikit refactoring untuk mendapatkan 11 byte lebih banyak.
sumber
|
pada awal setiap baris ...i;c(){puts("0");for(;i<37;i++){char b[58]="|";if(i<21){memset(b,!((i-1)%3)?35:32,56);if(i<10)memcpy(b," * * * * * * "+((i%2)?0:2),23);b[56]='|';}if(!i||i==20){memset(b,45,57);}puts(b);}}
45
'-'
35
'#'
32
' '