05AB1E , 162 159 157 bayt
kod
Kahretsin, çok uzun, ama en azından bir şey:
">:U"VI3Qið16×7166b1ð:0Y:DUJ,Yð13×JD?X,3838b1ð:0Y:D?X,16255b1ð:0Y:D?X,16367b1ð:0Y:4F?X,}ð21×Y3×J,}¹2Qið4×" U U"©J,"> :"®JD," > "?®,,ð6×'U3×J,}¹iY,}"quack
Çevrimiçi deneyin!
açıklama
Kodun ilk bölümü, dizgeye ">:U"Vayarlanan bölümden oluşuyor Y. Ondan sonra, girişin 3'e eşit olup olmadığını kontrol ederiz. Bu I3Qikısımda yapılır . Eşitse, dev magpie'yi yazdırıyoruz:
N = 3
İlk önce ð16×sadece 16 boşluk karakterini iten ile başlar . Ondan sonra bir numara var 7166b. Bu ">:U ", Retina :) 'dan biraz yardım alarak , parçayı kapsıyor . Bu betiği dizgiyi ikili sayıya dönüştürmek için kullandım . Bundan sonra olsun 1ð:0Y:her yerini parçası, 1bir boşluk karakteri ve her ile 0birlikte Yolarak ayarlandı, >:U. Ondan sonra D, bu dize oğalt depolamak Xkullanarak Uve Jyığın oin. Bu ,dizeyi, dizgenin tamamını yeni bir satırla yazdırarak çıkardık. Bundan sonra diğerleri, aynı prensibe dayanır. İf ifadesi ikinci sırada biter }.
Tam dönüşümü burada bulabilirsiniz .
N = 2
Şimdi girişin 2'ye eşit olup olmadığını kontrol ediyoruz. Bu ¹2Qikısımda yapılır . Bundan sonra, eşitse, boşluk karakterini 4 kez kullanarak iteriz ð4×. Ondan sonra " U U"ipi itip kullanarak ©saklıyoruz (Jelly: p'den açıkça çalınan fikir). JYığını yeniden yağdırıp bunu yeni bir satırla basarız. Ondan sonra "> :"dizgeye basar, " U U"kullanırız ®, Jyığını kullanırız ve Dbu dizgiyi çoğaltırız ve ikisini de aynı satıra yazdırırız.
Kısa bilgi yarışması, bu ne yapacak: " > "?®,?
Yukarıdaki dizeyi yazdırdıktan sonra, yüzün ikinci satırının kopyasını alıyoruz ve bunu yazdırıyoruz (çünkü 2. satırla aynı).
Bu davanın kapsadığı son kısım:
ð6×'U3×J,
ð6× # Push the space character × 6
'U3× # Push the "U" character three times
J, # Join and print pop with a newline
N = 1
Bunu açıklamak daha kolay:
¹1QiY
¹1Qi # Check if the input is equal to 1
Y # Push the magpie face
# This is then implicitly printed
N = 0
¹0Qi"quack
¹0Qi # Check if the input is equal to 0
"quack # Weird sound what magpies make
# Implicitly printed