Bugün alay ettin mi?


9

Debian Linux dağıtımı (ve Ubuntu, Kali ve diğerleri gibi Debian tabanlı dağıtımlar) APT adlı bir paket yöneticisi kullanır. Programı kurmak için foobir terminale

sudo apt-get install foo

APT'nin küçük bir Paskalya Yumurtası aşağıdaki gibidir

apt-get moo

Hangi yazdıktan sonra aşağıdaki çıktıyı üretecektir

                 (__) 
                 (oo) 
           /------\/ 
          / |    ||   
         *  /\---/\ 
            ~~   ~~   
..."Have you mooed today?"...

Bu EXACT çıktısını üreten bir programı olabildiğince az baytla yazmalısınız. (sondaki boşluklar ve yeni bir çizgi dahil)

Burada, \nyeni satır karakterlerini temsil etmek için eklenen ve *sondaki boşlukları temsil etmek için a ile aynı çıktı bulunur

                 (__)*\n
                 (oo)*\n
           /------\/*\n
          / |    ||***\n
         *  /\---/\*\n
            ~~   ~~***\n
..."Have you mooed today?"...\n

Yorumlarda istendiği gibi, burada mooing md5sum.

35aa920972944a9cc26899ba50024115  -

1

@aditsu oh, sanırım yeteneklerin ne olduğunu yanlış anladım. Yeteneklerin apt-get adı olduğunu düşündüm.
James

Referans için, çıktısını gönderebilir misiniz apt-get moo|md5sum?
aditsu çıkıldı çünkü SE EVIL

25
Bash, 11 bayt:: apt-get mooP
Dennis

5
@Dennis Arch Linux üzerinde çalışmaz ... sonucu yeniden üretemez: P
Otomo

Yanıtlar:


6

Bash, 95 bayt

0000000: 7a 63 61 74 3c 3c 27 27 0a 1f 8b 08 01 01 01 01 01  zcat<<''.........
0000011: 02 03 53 40 07 1a f1 f1 9a 0a 5c 98 c2 f9 f9 a8 c2  ..S@......\......
0000022: fa ba 60 10 a3 8f 2c aa af 50 03 a2 6a 40 24 42 58  ..`...,..P..j@$BX
0000033: 0b 28 11 03 54 ab 1f 83 6a 70 5d 1d 8c e0 d2 d3 d3  .(..T...jp]......
0000044: 53 f2 48 2c 4b 55 a8 cc 2f 55 c8 cd cf 4f 4d 51 28  S.H,KU../U...OMQ(
0000055: c9 4f 49 ac b4 57 02 ca 70 01                       .OI..W..p.

Yukarıdaki, tersinir bir hexdump. Dosyayı oluşturmak için

xxd -r -c 17 > 55918.sh

hexdump'ı yapıştırın ve Enterardından Ctrl+ düğmesine basın D.

Oluşturulan dosyayı çalıştırmak için,

bash 55918.sh 2>&-

Diğer dosya adları da kullanılacaktır.

Kompresör olarak zopfli'yi seçtim çünkü Coreutils program zcat ile uyumlu ve gzip, bzip2 ve xz'den daha iyi sıkıştırma elde ediyor.

zcat<<''aşağıdaki satırları (EOF'a kadar) okuyacak ve giriş olarak bunları besleyecektir zcat.

Zcat, bash'da olduğu gibi (HEREDOC boş bir satırla sonlandırılmadığından) bir uyarı yazacaktır (sıkıştırılmış dosyanın sağlama toplamını çıkardığım için). Bu uyarılar, Meta'da fikir birliği2>&- başına varsayılan olarak izin verilen STDERR (tarafından bastırılır ) olarak yazdırılır .


10

CJam, 96

Bu çok kötü bayt kullanır, bu yüzden altıgen bir dökümü:

00000000  22 ee 51 1e 53 41 15 ee  51 20 53 41 15 9a 5f 5a  |".Q.SA..Q SA.._Z|
00000010  b9 5f 41 15 8c 5f 41 f9  38 24 2a 15 7e 55 1c 5f  |._A.._A.8$*.~U._|
00000020  b9 30 5f b9 41 15 a8 26  2a 26 2a 15 36 45 91 c3  |.0_.A..&*&*.6E..|
00000030  ed cb 41 f3 df eb 41 db  20 cb c9 41 e9 df c9 c3  |..A...A. ..A....|
00000040  f3 7f 45 36 15 22 7b 69  32 6d 64 5c 5f 63 5c 37  |..E6."{i2md\_c\7|
00000050  6d 64 22 20 5f 6f 2d 7c  7e 2e 22 3d 2a 3f 7d 2f  |md" _o-|~."=*?}/|

Dosyayı java yorumlayıcıyla çalıştırabilirsiniz; ISO-8859-1 kodlaması kullanmak gerekebilir, örneğin:
java -Dfile.encoding=ISO-8859-1 …

Çevrimiçi deneyin

Eşdeğer (ve çok daha uzun) ASCII sürümü:

[238 81 30 83 65 21 238 81 32 83 65 21 154 95 90 185 95 65 21 140 95 65 249 56 36 42 21 126 85 28 95 185 48 95 185 65 21 168 38 42 38 42 21 54 69 145 195 237 203 65 243 223 235 65 219 32 203 201 65 233 223 201 195 243 127 69 54 21]:c
{i2md\_c\7md" _o-|~."=*?}/

Çevrimiçi deneyin

Açıklama:

Tekrarlar var 7 karakter vardır: _o-|~.. Bunların her biri her bir tekrar eden dizisi için 0 ilâ 6 aralığında bir sayı n olarak kodlanabilir, bir karakterin indeksi (n) ve tek bir bayt olarak tekrar (k) 'nın sayısı hem de kodlayan am: 2 * (k * 7 + n)ki bir karakter olarak yazılmış kodu. Ve ben herhangi bir tek karakter kodlama 2 * c + 1, nerede c ASCII kodu. Her şey ilk dizgide gider ve programın geri kalanı kodu çözer:

{…}/      for each character in the string
  i       convert to integer (extended-ASCII code)
  2md     integer division by 2, obtaining the quotient (q) and remainder (r)
           r decides whether it's a repetition or single character
  \_      swap q and r, and duplicate q
  c\      convert q to character and move it before the other q
           this is for the r=1 case (single character)
  7md     divide q by 7, obtaining the quotient (k) and remainder (n)
  "…"=    get the corresponding character from that string (decoding n)
  *       repeat the character k times
  ?       use the single character or the repetition, depending on r

Eski versiyon (109):

" H(_2) 
 H(o2) 
 B/-6\/ 
 A/ | 4|2 3
 9* 2/\-3/\ 
 C~2 3~2 3
.6"{_'M,48>&{~*}&}/3/"Have you mooed today?"`*N

Çevrimiçi deneyin


6

Pyth, 100

r"17 (__) 
17 (oo) 
11 /6-\/ 
10 / |4 ||3 
9 *  /\\3-/\ 
12 ~~3 ~~3 
3.\"Have you mooed today?\"3."9

Çevrimiçi deneyin: Gösteri

r"string"9 run-length-dizginin kodunu çözer.

Düzenle:

İşte 97 karakterlik bir çözüm: Gösteri . Büyük olasılıkla bu da 97 bayttır (iso-8859-1'de). Ama baytları yazmak ve açıklama yapmak için çok yorgun. Yarın akşam, sanırım.


4

GolfScript (107 bayt)

Bu çok basit bir kodlamadır: yeni satırlar ile değiştirilir ^ve boşluklar çalışma uzunluğu ile kodlanır. Sonuç bazı yazdırılamayan karakterler içeriyor, bu yüzden burada xxdçıktı olarak sunuyorum :

0000000: 2711 285f 5f29 015e 1128 6f6f 2901 5e0b  '.(__).^.(oo).^.
0000010: 2f2d 2d2d 2d2d 2d5c 2f01 5e0a 2f01 7c04  /------\/.^./.|.
0000020: 7c7c 035e 092a 022f 5c2d 2d2d 2f5c 015e  ||.^.*./\---/\.^
0000030: 0c7e 7e03 7e7e 035e 2e2e 2e22 4861 7665  .~~.~~.^..."Have
0000040: 0179 6f75 016d 6f6f 6564 0174 6f64 6179  .you.mooed.today
0000050: 3f22 2e2e 2e27 7b2e 3332 3c7b 2220 222a  ?"...'{.32<{" "*
0000060: 7d2a 7d25 225e 222f 6e2a 0a              }*}%"^"/n*.

Çevrimiçi demo

Bunun, karşılık gelen CJam kodundan bir karakter daha kısa olduğunu unutmayın. Dengeleme, 'ana dize için ayırıcı olarak kullanılır ( \kaçmak için iki s "kaydeder), bir ikod çözme döngüsünde karakter değerlerini tamsayılara dönüştürmek için bir tasarruf ve ücretsiz bir satırsonu alma; vs tek karakterli dize değişmezlerinin yerini alacak karakter değişmezlerine sahip olma.


Bu soru kısaca etiketlendiğinden , Ayrıca yalnızca (108) yazdırılabilir karakter içeren bir sürüm yaptım:

'Y(__)I
Y(oo)I
S/------\/I
R/I|L||K
Q*J/\---/\I
T~~K~~K
..."HaveIyouImooedItoday?"...'{.82-.*82<{72-' '*}*}%

Bunun yerine karakter olarak mekanların çalışma uzunlukları kodlama ^Aiçin ^R(ve kodlayıcı ^Jolarak ^önlemek çarpışmalar), el değmemiş yeni satır bırakır ve aynı çalışma uzunlukları kodlar Iiçin Y.

Bu arada, genel amaçlı GolfScript Kolmogorov programım 120 baytlık bir program üretiyor.


1

Lua, 186 178 bayt

@DJ McMayhem tarafından yapılan bir öneri sayesinde 8 bayt kaydedildi

p=print s=" "a=s:rep(17)b=s:rep(9)p(a.."(__) ")p(a.."(oo) ")p(b.."  /------\\/ ")p(b.." / |    ||   ")p(b.."*  /\\---/\\ ")p(b.."   ~~   ~~   ")p"...\"Have you mooed today?\"..."

Ungolfed:

p=print --Save the print function for later use
s=" " --Space character
a=s:rep(17) --string.rep(string, times) repeats the given string
b=s:rep(9)
p(a.."(__) ") --print out the lines
p(a.."(oo) ")
p(b.."  /------\\/ ")
p(b.." / |    ||   ")
p(b.."*  /\\---/\\ ")
p(b.."   ~~   ~~   ")
p"...\"Have you mooed today?\"..."

Satır 2'yia=repeat(" ",17)
James

Ah teşekkür ederim :) Böyle bir şey yapabilir miyim anlamaya çalışıyordum ...
Nikolai97

1

> <> , 217 bayt

!v"                 (__) "a"                 (oo) "a"           /------\/ "a"          / |    ||   "a"         *  /\---/\ "a"            ~~   ~~   "a"..."c3*2-"Have you mooed today?"c3*2-"..."a!
 >r>l0)?v;
    ^   o<

Ne yazık ki bu oldukça sıkıcı bir cevap. Yığına (a) 10 değeri ekleyerek yapılan yeni satırlar ile tüm ineği çeken bir dize okunarak başlar. Daha sonra sadece ineği çeken bir döngüye girer.

Başlangıçta bir dizi boşluk eklemek için bir döngü yaptım, ama aslında sadece boşluk koymaktan daha pahalı bir bayttı.

DÜZENLEME: Balık "> <>"


1

PowerShell, 144 bayt

$a="        "
"$a$a (__) "
"$a$a (oo) "
"$a   /------\/ "
"$a  / |    ||   "
"$a *  /\---/\ "
"$a    ~~   ~~   "
'..."Have you mooed today?"...'

Yukarıdaki kod, Unix tarzı yeni satırlar ( \n) yazdıran ortamlarda düzgün çalışır . Linux'ta Pash ile doğru çıktıyı üretir .

Matematiksel olarak, PowerShell için, $adeğişken için 8 boşluğa sahip olmak en uygunudur, çünkü değişken ile inek arasında $bdeğerli bir şey yapmak için çok fazla ek boşluk anlamına gelir ve daha fazla araç, kafası.


4
"Yeni satır karakteri" nin yerel ayarlara / platforma bağımlı olduğunu ve çıktınızı diğer herhangi bir program kadar uygun hale getirdiğini iddia ediyorum.
sleblanc

1. "Yeni satır karakteri" diye bir şey yoktur. satır başı \r, \nsatır başı. Birlikte, \r\nWindows'ta yeni bir satır oluşturur. 2. PowerShell yalnızca Windows değildir. Kodunuzu Pash (Mono için Windows PowerShell'in açık kaynaklı bir uygulaması) ile test ettim ve çıktı uygun MD5 karmasına sahip. 3. Yukarıdakilerden dolayı, yayınınızı açma özgürlüğünü aldım. Buna katılmıyorsanız, lütfen tekrar wiki yapın.
Dennis

Çok ilginç, @Dennis ... \r\nve arasındaki farkların farkındayım \n, ama dediğim gibi MD5'i Windows'ta berbat bir şey olmadan doğru şekilde alamadım. Yine de bu düzenleme için teşekkürler. İlk önce Pash'i de duydum, bu yüzden de teşekkürler. Ben Cygwin altında inşa etmek ne kadar karmaşık olacağını merak ediyorum ... ;-)
AdmBorkBork

0

Molekül , 145 bayt

"   "_____:a"  (__) 
";a____"  (oo) 
";a__"  /------\\/ 
";a__" / |    ||   
";a__"*  /\\---/\\ 
";a____"~~"b"~~
...\"Have you mooed today?\"..."

İlk defa ASCII sanatını sıkıştırmaya çalışıyorum: P

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.