> <> , 38 37 Byte
Lanet olsun size çift boşluk halinde * balık sallıyor *.
<v&0
>i:84*=?v0(?;67*o&1&
\ &0o?&a/
Şunları yapabilirsiniz çevrimiçi denemek (yapmanız gereken tüm alt kısmına yakın alanda yoluyla vermek girdi ve daha sonra vurmak Give
düğmesine). Daha fazla golf oynamak için öneriler her zaman açıktır, özellikle de ikinci ve üçüncü sıraların önünde bu israf alanlarını kaldırma fikirleri.
Ekstra alanlar için ek bir yeni satır yazdırmanıza izin verildiyse, kod göz alıcı bir 27 bayt olabilir :
>i:84*=?v0(?;67*o
^ oa<
açıklama
Not: Açıklamanın sırası, işaretçinin konumuna karşılık gelir (kod, sıranın ne olacağını açıklayamazsa, bunun nedeni, işaretçinin çalıştırdığı sıradır).
Satır 1:
<v&0
< redirects flow leftward
0 pushes 0 onto the stack
& pops 0 and puts it in the register
v redirects flow downward
Hat 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
Satır 3:
NB Bu satır tersten gider, bu yüzden sağdan sola doğru okuyun.
^ &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)
Temel olarak, program girişin (her seferinde bir karakter okunan) boşluk olmadığından emin olmak için test eder ve sonra bir yıldız işareti basar. Giriş yoksa sonlandırılır (giriş değeri -1'dir). Ek yeni satırlar yazdırmadığından emin olmak için, 0 veya 1 olarak ayarladığı register değerini kullanır. Ayarlama biçimim nedeniyle yığına itilen yabancı değerlerle ilgilenmez (ör. 1
yıldız işaretini yazdırdıktan sonra ayarlandığı zaman yazmacın değeri ); program sonlandığında yığında kalırlar ama hiçbir şey yapmazlar.
Kullandığımdan 84*
ve 67*
bunun yerine " "
ve "*"
sırasıyla kullanmamın biraz kafa karıştırıcı olabileceğini biliyorum , çünkü bunun nedeni ne olursa olsun programa ipler koymak istemiyor olmamdı.