> <> , 38 37 Bytes
Terkutuk Anda ruang ganda kasus * getar ikan *.
<v&0
>i:84*=?v0(?;67*o&1&
\ &0o?&a/
Kamu bisa mencobanya secara online (yang perlu Anda lakukan adalah memberi input melalui bidang di dekat bagian bawah lalu tekan Give
tombol). Saran untuk bermain golf lebih lanjut selalu disambut, terutama gagasan untuk menghilangkan ruang-ruang yang boros di depan garis kedua dan ketiga.
Jika Anda diizinkan untuk mencetak baris baru tambahan untuk ruang tambahan, kode ini bisa menjadi 27 byte kekalahan :
>i:84*=?v0(?;67*o
^ oa<
Penjelasan
Catatan: urutan penjelasan akan sesuai dengan lokasi penunjuk (jadi jika kode dijelaskan dari apa yang akan dianggap urutan, itu karena urutan penunjuk yang menjalankannya).
Baris 1:
<v&0
< redirects flow leftward
0 pushes 0 onto the stack
& pops 0 and puts it in the register
v redirects flow downward
Baris 2:
>i:84*=?v0(?;67*o&1&
> redirects flow leftward
i: pushes input and then duplicates it
84* pushes 32 (the space character numerically)
=?v pops 32 and input and redirects flow downward if they're equal
0(?; pops input and terminates if input is less than 0*
67*o pushes 42 (asterisk) and prints it
&1& pushes register value and then puts 1 in the register
*in ><>, the command i returns -1 if no input is given
Baris 3:
NB Baris ini terbalik, jadi baca kanan ke kiri.
^ &0o?&a<
< redirects flow leftward
a pushes 10 (newline) onto the stack
o?& prints a newline if the register is not 0
&0 sets the register to 0
^ redirects flow upwards (back to the second line)
Pada dasarnya, tes program untuk memastikan input (yang dibaca satu karakter pada satu waktu) bukan spasi dan kemudian mencetak tanda bintang. Ini berakhir jika tidak ada input (nilai input -1). Untuk memastikan itu tidak mencetak baris baru tambahan, ia menggunakan nilai register, yang baik set ke 0 atau 1. Karena cara saya mengaturnya, itu tidak peduli tentang nilai-nilai asing yang didorong ke tumpukan (misalnya nilai register saat diset ke1
setelah mencetak tanda bintang); mereka tetap berada di tumpukan ketika program berakhir tetapi tidak melakukan apa pun.
Saya tahu itu mungkin agak membingungkan karena saya menggunakan 84*
dan 67*
bukannya masing " "
- "*"
masing, tapi itu karena saya tidak merasa ingin memasukkan string ke dalam program untuk alasan apa pun.