Tantangan ini adalah tantangan seni ASCII sederhana yang diilhami oleh gerhana matahari yang terjadi pada 21 Agustus 2017. Diberikan input 0 <= n <= 4
, hasilkan tahapan yang sesuai dari gerhana yang dijelaskan di bawah ini:
n=0:
*****
** **
* *
* *
** **
*******
n=1:
*****
** *****
* *******
* *******
** ******
*******
n=2:
*****
*********
***********
***********
***********
*******
n=3:
*****
***** **
******* *
******* *
****** **
*******
n=4:
*****
** **
* *
* *
** **
*******
Aturan
- Anda dapat 0 atau 1 indeks, sebutkan apa yang Anda pilih.
- Karakter yang digunakan adalah ruang dan
*
, Anda dapat menggunakan karakter apa pun yang dapat dicetak untuk*
(selain ruang). - Ruang tambahan adalah opsional (Anda mungkin atau mungkin tidak memilikinya).
- Ini adalah kode-golf , byte-count terendah adalah pemenangnya.
*
" ... termasuk spasi? ;)Jawaban:
Python 2 ,
161149142135 byteCobalah online!
-7 Terima kasih kepada Tn . Xcoder .
sumber
Arang ,
82815543 byte-38 byte terima kasih kepada Neil!
Cobalah online! Tautan adalah untuk versi verbose.
Saya lakukan untuk sih itu. : P
Saya mungkin akan keluar-golf dengan 40 byte.2638 byte ... Cukup dekat?sumber
PolygonHollow
. : P 2) Ohh, bagus. Terima kasih!Cinnamon Gum , 70 byte
Hexdump:
Cobalah online!
Saya telah menunggu sangat lama untuk mengetahui bagaimana menggunakan bahasa ini. : P
Jadi, Cinnamon Gum adalah Bubblegum, tetapi lebih merupakan bahasa "nyata" daripada Bubblegum.
Byte pertama (
l
) mengatur mode ke mode kamus. Sisa dari byte adalah string berikut yang dikompresi.Ini pada dasarnya membuat tabel pencarian dengan masing-masing teks ditugaskan ke nomor. Program kemudian mengambil input dan output teks masing-masing.
sumber
argument%4
atauargument&3
menyimpan byte?JavaScript (ES6),
103102 byteSunting: Disimpan 1 byte berkat @darrylyeo.
sumber
*666777333*\n
dalam variabel.SOGL V0.12 ,
4039 byteCoba Di Sini!
sumber
VI, 108 byte
<CR>
adalahEnter
stroke,<C-?>
dapat disamakan denganControl + ?
, dan<Esc>
untukEscape
jelas. Masing-masing dihitung untuk 1 byte (lihat meta ). Jeda baris dalam solusinya adalah agar mudah dibaca. Hanya<CR>
mewakiliEnter
pukulan nyata .Memasukkan
File input harus berisi hanya 1 karakter, mewakili
n
.Meluncurkan
VI harus dimulai seperti:
Penjelasan
Ada 3 bagian dalam solusi. Saya akan menjelaskan bagian ke-2 dulu (baris ke-2), karena ini adalah yang paling mudah untuk dijelaskan.
Menggambar matahari
Perintah untuk menggambar matahari adalah:
Matahari harus ditarik dengan
,
*
,0
,1
dan3
, seperti ini:Simetri akan membantu mengurangi ukuran byte bagian ini, tetapi itu tidak terlalu penting. Saya tidak akan menjelaskan baris lengkap, tetapi polanya
*****
digunakan untuk dengan mudah menghasilkan baris terakhir, dan polanya**1110333**
telah diambil sebagai referensi untuk menghasilkan 3 baris lain yang berisi0
,1
dan3
.Penting untuk digunakan
0
,1
dan3
untuk bagian matahari yang bisa diisi (lihat penjelasan selanjutnya). Menggambar matahari ini membutuhkan 55 byte , dan mungkin bisa bermain golf dengan beberapa trik.Mengisi matahari sesuai dengan
n
Untuk mengisi matahari dengan benar, petunjuk yang harus diikuti adalah:
n = 0
, lalu0
,1
dan3
(semua digit) harus diganti dengann = 1
, maka1
harus diganti dengan, digit lainnya dengan
*
n = 2
, lalu0
,1
dan3
(semua digit) harus diganti dengan*
n = 3
, maka3
harus diganti dengan, digit lainnya dengan
*
n = 4
, lalu0
,1
dan3
(semua digit) harus diganti dengan(seperti
n = 0
)Dari itu, kita dapat menyimpulkan bahwa substitusi yang diperlukan adalah:
( substitusi pertama )
*
( substitusi kedua )Perhatikan bahwa "beberapa digit" dapat berarti "tanpa digit" (
n = 2
misalnya). Dan "semua digit lainnya" juga dapat mewakili "tanpa digit", jika semua digit telah diganti oleh substitusi pertama (n = 0
misalnya).The substitusi kedua dapat dengan mudah ditulis dalam 11 bytes :
The substitusi pertama tergantung pada
n
, jadi pertama kita harus menghitung apa yang akan digit diganti. Jika karakter yang diganti disimpan dalam registera
, perintah substitusi ditulis dalam juga 11 byte :<C-r>a
diganti dengan isi registera
ketika perintah diketik.Untuk menghitung nilai
a
, mengikuti instruksi sebelumnya, algoritmanya adalah (dalam pseudo-code):"X"
string digunakan karena ketikan = 2
, tidak ada digit yang diganti oleh spasi. String apa pun yang bukan matahari bisa digunakan di sini, selama pergantian pertama tidak menghasilkan apa-apa.Ini dapat ditulis dalam 31 byte :
Larutan
Masukkan semua bagian ini dalam urutan yang benar, dan Anda memiliki solusinya:
sumber
PHP, 114 +1 byte
+1 byte untuk
-R
. Terima kasih @Neil untuk petunjuknya.menggunakan garis bawah untuk
*
, 0-diindeks. Jalankan sebagai pipa dengan-nR
atau coba online .Membutuhkan PHP 5.5 atau yang lebih baru:
PHP yang lebih lama tidak memahami pengindeksan string literal (kesalahan parse);
PHP 7.1 mengeluh tentang nilai-nilai non-numerik (ganti
+$c
dengan$c>0
untuk memperbaikinya).sumber
" _"[$c*2>>$argn&1]
menghindari parameter pergeseran negatif jika Anda membutuhkannya.Python 2 ,
170169 byteCobalah online!
sumber
Python 2 , 181 byte
Cobalah online!
Pendekatan yang sangat naif,
bekerja di golf dinvm.sumber
Java 8,
225213211 byteCoba di sini.
sumber
05AB1E , 46 byte
Cobalah online!
sumber