Beruang Kutub, Beruang Kutub, apa yang Anda dengar?


50

Teks buku anak-anak Beruang Kutub, Beruang Kutub, Apa yang Kamu Dengar? memiliki pola yang sangat sederhana. Anda mungkin menggunakan teks untuk mengajarkan konsep pemrograman pengantar.

Anak saya cepat bosan dengan ide ini, jadi saya memutuskan untuk bermain golf dengannya.

Tantangan

Dalam bahasa pemrograman pilihan Anda, tulislah program sekecil mungkin yang akan mencetak teks berikut. Output harus sama persis, termasuk case, spasi, dan tanda baca.

Polar Bear, Polar Bear, what do you hear?
I hear a lion roaring in my ear.

Lion, Lion, what do you hear?
I hear a hippopotamus snorting in my ear.

Hippopotamus, Hippopotamus, what do you hear?
I hear a flamingo fluting in my ear.

Flamingo, Flamingo, what do you hear?
I hear a zebra braying in my ear.

Zebra, Zebra, what do you hear?
I hear a boa constrictor hissing in my ear.

Boa Constrictor, Boa Constrictor, what do you hear?
I hear an elephant trumpeting in my ear.

Elephant, Elephant, what do you hear?
I hear a leopard snarling in my ear.

Leopard, Leopard, what do you hear?
I hear a peacock yelping in my ear.

Peacock, Peacock, what do you hear?
I hear a walrus bellowing in my ear.

Walrus, Walrus, what do you hear?
I hear a zookeeper whistling in my ear.

Zookeeper, Zookeeper, what do you hear?
I hear children...

...growling like a polar bear,
roaring like a lion,
snorting like a hippopotamus,
fluting like a flamingo,
braying like a zebra,
hissing like a boa constrictor,
trumpeting like an elephant,
snarling like a leopard,
yelping like a peacock,
bellowing like a walrus...
that's what I hear.

6
kolmogorov-kompleksitas akan menjadi tag yang baik untuk ini
charredgrass

3
Apakah huruf besar Bdan Cdalam Polar Beardan Boa Constrictorperlu? (Dalam Batch ini biayanya 10% dari jumlah byte saya ...)
Neil

Apakah mengirimkan hash dan bruteforcing solusi dengan set terbatas diizinkan? : D
polym

4
Ini adalah tantangan pertama yang sangat bagus!
Alex A.

1
Saya memberi +1 tetapi Anda berada di 42 upvotes, dan siapa saya yang mengganggu cara galaksi?
FantaC

Jawaban:


34

05AB1E, 349 331 330 322 314 311 byte

•4i;kV_†©:š×Îj€Yå—‚‘%˜ESδþ¤çÑ9¶‹{Å€7¾à{Ì®qA•35B0¡…ing«lV•7ü[¿‘¢wÀ¶à-‚¤î„jHâ™ÐJ'µ‡ÀÂý6›ü‚š¸€%NtÅýµL›fU¥ì€€uîT¡›Ÿ{!œ>'Ì&ý§¨Ü?é>•36B1ð:0¡™D©„, «D‚ø“€À€·€î—«?“¶«¸â€˜€JU¦“„¾“‚˜lv„I “—«0€†€¯¶å.“«0¡`yð«Y¦õ‚˜Nè«sr„ aN5Qi'n«}ð«N9›ijrj¨ðs«…...«}srJˆ}X¯‚ø€Jvy,¶?}…...DU?Y¨vN__i',¶}yð“€è€…“N6Qi'n«}ð®NèJl?}X,“€Š's€À I—«.“?

Cobalah online

Penjelasan

•4i;kV_†©:š×Îj€Yå—‚‘%˜ESδþ¤çÑ9¶‹{Å€7¾à{Ì®qA•
String dikemas berisi suara GROWL0ROAR0SNORT0FLUT0BRAY0HISS0TRUMPET0SNARL0YELP0BELLOW0WHISTL

35B0¡…ing«lV
Buka kemasan, pisah 0, tambahkan "ing" ke setiap kata, konversikan menjadi lebih rendah dan simpan dalam variabel Y

•7ü[¿‘¢wÀ¶à-‚¤î„jHâ™ÐJ'µ‡ÀÂý6›ü‚š¸€%NtÅýµL›fU¥ì€€uîT¡›Ÿ{!œ>'Ì&ý§¨Ü?é>•
String yang dikemas berisi binatang POLAR1BEAR0LION0HIPPOPOTAMUS0FLAMINGO0ZEBRA0BOA1CONSTRICTOR0ELEPHANT0LEOPARD0PEACOCK0WALRUS0ZOOKEEPER

36B1ð:0¡™
Buka kemasan, ganti 1 dengan spasi, pisah 0 dan konversi ke judul huruf

D©„, «D‚ø
Gandakan, simpan untuk mendaftar untuk digunakan nanti, tambahkan "," ke satu salinan, duplikat itu dan zip.

“€À€·€î—«?“¶«¸
Kata-kata kamus "apa yang Anda dengar?", Diikuti oleh baris baru, ditambahkan ke daftar baru

‘€JU
Produk Cartesian dari daftar "Hewan, Hewan," dan "apa yang Anda dengar? \ N", diratakan dan bergabung dan simpan dalam variabel X. Pruduces daftar string dari bentuk "Hewan, Hewan, apa yang Anda dengar? N ".

¦“„¾“‚˜l
Ambil daftar hewan tersisa dari sebelumnya, keluarkan penjaga kebun binatang dan tambahkan anak-anak, konversi ke huruf kecil.

v
Untuk setiap hewan:

„I “—«0€†€¯¶å.“«0¡`

Tekan "Saya dengar0 di telingaku.", Bagi pada 0 dan tekan sebagai string terpisah.

yð«Y¦õ‚˜Nè«
Dorong "suara binatang" dengan anak-anak yang tidak memiliki suara

sr„ a
Tekan "a" di tempat yang benar

N5Qi'n«}
Jika hewan itu "Gajah", tambahkan "n"

ð«
Tambahkan ruang.

N9›ijrj¨ðs«…...«}
Jika hewan adalah anak-anak, hapus spasi dan tambahkan "..."

srJˆ}
Bergabung dengan kalimat "Saya mendengar suara binatang di telingaku." (dan juga anak-anak), simpan dalam array global dan akhir lingkaran

X¯‚ø€J
Ambil kembali baris pertama, ritsleting dan bergabunglah memproduksi bagian pertama dari sajak "Hewan, Hewan, apa yang Anda dengar? \ NSaya mendengar suara binatang di telingaku."

vy,¶?}
Cetak diikuti oleh baris baru.

…...DU?
Cetak "..." dan simpan salinan dalam variabel X.

Y¨v
Untuk setiap suara kecuali "siulan":

N__i ', ¶} Untuk setiap baris kecuali yang pertama, mulailah dengan ", \ n" (membuat koma masuk ke baris sebelumnya)

yð“€è€…“
Mendorong suara, ruang, dan "seperti"

N6Qi'n«}
Jika Gajah menambahkan "n".

ð®NèJl?}X,
Ambil kembali hewan yang disimpan dalam register, gabungkan semuanya, cetak dan akhiri lingkaran diikuti oleh "...". Ini menghasilkan garis "terdengar seperti binatang (n),".

“€Š's€À I—«.“?
Cetak string kamus "itulah yang saya dengar."


30
Yang ini memanggil Cthulhu.
aloisdg berkata Reinstate Monica

6
Saya tidak bisa melihat di mana kode berakhir dan data yang dikemas dimulai.
Adám

4
@ Adám saya tahu. Ini terlihat sangat mirip omong kosong :) Saya akan menambahkan penjelasan pada akhirnya yang diharapkan akan membuatnya lebih jelas. Saya mungkin ingin mencoba dan golf lagi dulu.
Emigna

28
Ini mungkin bagaimana orang awam membayangkan kode.
noɥʇʎԀʎzɐɹƆ

1
Saya tidak tahu apa yang baru saja saya baca ...
Nico

9

PHP, 420 414 434 414 412 byte

panggilan dari CLI atau tambahkan <pre>ke output.

$v=[growl,roar,snort,flut,bray,hiss,trumpet,snarl,yelp,bellow,whistl];$a[6]=n;foreach($n=['polar bear',lion,hippopotamus,flamingo,zebra,'boa constrictor',elephant,leopard,peacock,walrus,zookeeper]as$i=>$p)echo$i?"I hear a$a[$i] $p $v[$i]ing in my ear.

":"",$q=ucwords($p),", $q, what do you hear?
",$i>9?"I hear children...

...":""&$z[]="$v[$i]ing like a$a[$i] $p";echo join(",
",$z),"...
that's what I hear.";
  • beberapa pemberitahuan untuk konstanta yang tidak terdefinisi; PHP implisit dilemparkan ke string literal menendang lagi
  • menambahkan "n" untuk "seekor gajah" memakan waktu 20 byte ... hmpf.
  • mendapatkan 20 byte kembali dengan menyusun kembali hal-hal :)

kerusakan

$n=['polar bear',lion,hippopotamus,flamingo,zebra,'boa constrictor',elephant,leopard,peacock,walrus,zookeeper];
$v=[growl,roar,snort,flut,bray,hiss,trumpet,snarl,yelp,bellow,whistl];
$a[6]=n;
// loop through nouns with index $i
foreach($n as$i=>$p) echo
    // print first part:
        // not first noun: print second line to previous step
        $i?"I hear a$a[$i] $p $v[$i]ing in my ear.\n\n":"",
        // uppercase the first letter of each word in the noun, print
        $q=ucwords($p),
        // print uppercase noun again and the rest of the line
        ", $q, what do you hear?\n",
        // for last noun print bridge, else print nothing
        $i>9?"I hear children...\n\n...":""
    // ... AND add line to second part
        &$z[]="$v[$i]ing like a$a[$i] $p"
;
// print second part and final line
echo join(",\n",$z),"...\nthat's what I hear.";

8

JavaScript, 545 541 497 byte

a="Polar Bear|Lion|Hippopotamus|Flamingo|Zebra|Boa Constrictor|Elephant|Leopard|Peacock|Walrus|Zookeeper".split`|`;s=btoa`º0:èj¼ìíÍùn·6ëk,áË3¶»¦¥ës²v«<ÛzYhÃ<!Ëe`.split`z`;a.map((m,n)=>{console.log(m+", "+m+", what do you hear?\n "+((n>9)?"I hear children...\n":"I hear a"+(n==5?"n ":" ")+a[n+1].toLowerCase()+" "+s[n+1]+"ing in my ear.\n"))});p="...";a.map((m,n)=>{if(n>9)return;p+=s[n]+"ing like a"+(n==6?"n ":" ")+m.toLowerCase()+(n>8?"...\nthat's what I hear.":",\n")});console.log(p)

Tantangan yang cukup menyenangkan!

Terima kasih Downgoat karena telah menyelamatkan saya 27 ton byte menggunakan atob, dan Titus untuk 4 byte!

Tidak Disatukan:

a="Polar Bear|Lion|Hippopotamus|Flamingo|Zebra|Boa Constrictor|Elephant|Leopard|Peacock|Walrus|Zookeeper".split`|`;
s=btoa`º0:èj¼ìíÍùn·6ëk,áË3¶»¦¥ës²v«<ÛzYhÃ<!Ëe`.split`z`;
a.map((m,n)=>{
  console.log(m+", "+m+", what do you hear?\n "+((n==10)?"I hear children...\n":"I hear a" + (n==5?"n ":" ") + a[n+1].toLowerCase() + " " + s[n+1] + "ing in my ear.\n"))
});
p="...";a.map((m,n)=>{
  if(n==10) return;
  p+=s[n] + "ing like a" + (n==6?"n ":" ") + m.toLowerCase() + (n==9?"...\nthat's what I hear.":",\n")
});
console.log(p);

a.map((n,m)=>n>9||(p+=s[n]...))
Neil

1
@ OldBunny2800 Untuk keperluan bermain golf, Anda diizinkan untuk mengatur variabel global. (Jangan lakukan ini dalam fungsi rekursif!)
Neil

1
Kode Anda tidak berfungsi, saya berasumsi stack menukar beberapa huruf dalam kode base64 Anda. Setelah pemisahan saya mendapatkan ["ujA66Gq87O3N + W63NutrLOHLM7a7pqXrc7J2q", "", "bellow", "why2U ="].
lolesque

1
Tentukan c=console.log;di awal kemudian gunakan c () untuk menyimpan 6 byte. Atau cukup simpan string dalam variabel dan cetak sekali dengan tanda ().
Lolesque

1
@lolesque The c=console.logtidak bekerja karena logharus memiliki thisdari consoleatau menghasilkan kesalahan. (Kecuali jika tidak ada di beberapa browser / lingkungan?) Gagasan untuk memasukkan semuanya ke dalam string terdengar bagus,
apsillers

7

/// , 523 512 byte

/_/\/\///:/ar_!/, what do you he:?
I he: _$/!a_#/ing in my e:.

_%/ing like a_&/, _*/,
_0/Pol: Be:_1/ion_2/ippopotamus_3/lamingo_4/ebra_5/oa _S/onstrictor_6/lephant_7/eopard_8/eacock_9/alrus_Q/ookeeper_R/trumpet/0&0$ l1 ro:#L1&L1$ h2 snort#H2&H2$ f3 flut#F3&F3$ z4 bray#Z4&Z4$ b5cS hiss#B5CS&B5CS$n e6 R#E6&E6$ l7 snarl#L7&L7$ p8 yelp#P8&P8$ w9 bellow#W9&W9$ zQ whistl#ZQ&ZQ!children...

...growl% pol: be:*ro:% l1*snort% h2*flut% f3*bray% z4*hiss% b5cS*R%n e6*snarl% l7*yelp% p8*bellow% w9...
that's what I he:.

Cobalah online!

608 byte kurang dari pesan sebenarnya (1120), ini kurang dari setengahnya (560)!


6

Dyalog APL , 387 byte

⎕UCS¯2(219⌶)¯128+⎕UCS'øZýÓÁî°üÁ~`Û¯ß(4Õ+ÖjáïvXô ¶Dhkë ©4¹³`LxÖ4¢gͼ4ªBáDÚN¼ùV ÂÅF]@¸hÆà bKÚ¸_oQãÔÝ ¸$8§ú_ÔÈxÖ ~6*ãªd ¿ð>¥ÐB8þôÍxwÄ6Å
ô¡é¢wBlDµ¯ë
Ãbqè+ý+ÜÈýgu!gWËØ#0="«ë"HDÝÀV·¦/ÕMÆí}h<àì7å ÝÒëëñX³ýM <dÄ<ëmµñqP]¥c¬l¾¤ìÚã/$ÝÕqÙÞîCLéMÝÏ}OÔϤr$¤è©~ì2[¢{·YWÒ俦à¶)YØ©;s÷¬¥+ó&¿ÉâgËr
,Ýî©)¥Ö­2è´ÝÅd{úK5­·Õ}ýÚ'

Untuk memudahkan membaca: ⎕UCS¯2(219⌶)¯128+⎕UCS'...'

⎕UCS '... 'konversi string ke titik kode Unicode

¯128+ kurangi 128 untuk mendapatkan -128 ≤ n ≤ 127

¯2(219⌶) un-zlib

⎕UCS mengonversi poin kode Unicode ke string

String sumber adalah 365 byte poin kode Unicode zlib'ed berikut:

F8 5A FD D3 C1 EE 04 B0 8C FC C1 7E 60 DB AF 91 DF 28 34 D5 2B D6 6A E1 EF 15 76 96 58 F4 09 B6 44 11 93 04 68 6B EB A0 A9 94 34 B9 10 98 0F B3 60 4C 78 0C D6 91 1C 34 A2 89 67 CD BC 34 AA 42 95 E1 44 9E DA 4E BC 0B 0F F9 87 85 56 20 83 C2 C5 46 5D 40 B8 68 C6 E0 20 92 62 13 81 89 4B DA B8 5F 9A 6F 51 E3 D4 DD 9F A0 B8 24 38 A7 FA 5F D4 C8 78 7F D6 A0 7E 36 2A E3 AA 64 20 BF F0 3E A5 D0 42 9A 95 38 FE F4 CD 8A 78 99 77 C4 17 89 11 10 36 82 C5 0D 8A 9A F4 A1 12 E9 A2 92 77 9D 42 1E 6C 44 B5 AF EB 0D 04 C3 62 71 87 9C E8 2B FD 2B DC 04 C8 FD 67 75 21 67 57 04 CB D8 23 12 30 9A 3D 22 AB EB 22 48 9E 44 DD C0 56 B7 87 85 A6 2F D5 03 4D 9D C6 ED 7D 1E 68 3C E0 EC 37 9C 94 08 86 E5 09 DD D2 EB EB F1 58 B3 FD 4D 20 04 3C 17 64 C4 3C EB 6D B5 F1 11 89 71 50 5D A5 63 AC 6C 9A BE A4 EC DA E3 2F 24 DD D5 71 D9 DE EE 04 43 4C E9 4D DD CF 7D 4F 13 D4 CF 13 A4 72 24 A4 E8 1A 9E A9 7E EC 1F 32 5B 19 10 A2 7B B7 01 59 57 D2 E4 BF A6 E0 B6 29 94 59 D8 A9 3B 73 1D 94 9B F7 AC A5 2B F3 26 BF C9 E2 67 7F CB 72 0A 2C DD EE A9 29 A5 D6 AD 92 32 E8 B4 DD C5 64 7B FA 8A 4B 35 AD B7 D5 7D 82 0F FD 1 DA

6

Python 3, 497 484 480 byte

P=print
N=lambda m:"an"[:("E"==m[0])+1]+" "+m.lower()
h="I hear "
A=[a.split("|")for a in"Polar Bear|growl:Lion|roar:Hippopotamus|snort:Flamingo|flut:Zebra|bray:Boa Constrictor|hiss:Elephant|trumpet:Leopard|snarl:Peacock|yelp:Walrus|bellow:Zookeeper|whistl".split(":")]
for i in range(11):
 a,b=A[i]
 if i:P(h+N(a)+" "+b+"ing in my ear.\n")
 a+=", ";P(a+a+"what do you hear?")
P(h+"children...\n\n..."+",\n".join([z+"ing like "+N(y)for y,z in A[:-1]])+"...\nthat's what I hear.")

(Kredit untuk 13 byte yang disimpan harus ke Gábor Fekete, dan tambahan 4 byte disimpan oleh Taylor Lopez.)

Jadi Anda mungkin bisa menebak saya akan menggunakan bahasa seperti Python sebagai alat pengajaran. Ini adalah program sebelum saya mulai bermain golf.

def startsWithVowel(name):
    firstLetter = name[0]
    return firstLetter in ["A", "E", "I", "O", "U"]

def aOrAn(name):
    return "an" if startsWithVowel(name) else "a"

animals = [
#    NAME (0),     SOUND (1)
    ("Polar Bear", "growling"),
    ("Lion", "roaring"),
    ("Hippopotamus", "snorting"),
    ("Flamingo", "fluting"),
    ("Zebra", "braying"),
    ("Boa Constrictor", "hissing"),
    ("Elephant", "trumpeting"),
    ("Leopard", "snarling"),
    ("Peacock", "yelping"),
    ("Walrus", "bellowing"),
    ("Robot Dragon", "screeching"),
    ("Owl", "hooting"),
    ("Monkey", "laughing"),    
    ("Zookeeper", "whistling")]

NAME = 0
SOUND = 1
for animalNumber in range(len(animals)):
    thisAnimal = animals[animalNumber]
    if animalNumber + 1 < len(animals):    
        nextAnimal = animals[animalNumber + 1] 
    else: 
        nextAnimal = None

    print("{n}, {n}, what do you hear?".format(n=thisAnimal[NAME]))

    if nextAnimal != None:
        print("I hear {a} {n} {s} in my ear.".format(n=nextAnimal[NAME].lower(),
                                                     s=nextAnimal[SOUND],
                                                     a=aOrAn(nextAnimal[NAME])))
    else:
        print("I hear children...")

        children = []        
        for animal in animals[:-1]:
            children.append("{s} like {a} {n}".format(n=animal[NAME].lower(), 
                                                      s=animal[SOUND],
                                                      a=aOrAn(animal[NAME])))
        print("...{}...".format(",\n".join(children)))
        print("that's what I hear.")

2
Anda bisa menggunakan sintaks unpacking untuk menyimpan beberapa byte: ubah a=A[i]menjadi a,b=A[i]lalu Anda bisa menulis adan bbukannya a[0]dan a[1]. Ini akan menghemat 12 byte.
Gábor Fekete

Mengubah N=lambda m:("a","an")["E"==m[0]]+" "+m.lower()ke N=lambda m:"an"[:("E"==m[0])+1]dan n=a[0]+", ";P(n+n+"what do you hear?")untuk a+=", ";P(a+a+"what do you hear?")akan menghemat 2 byte lebih banyak.
Gábor Fekete

Pertanyaan bermain golf umum. Di mana Anda memiliki len(A), karena tujuan dari tantangan ini adalah hanya untuk menghasilkan output statis (tidak berurusan dengan input dinamis), apakah dapat diterima untuk menggunakan hard-coded 11bukan untuk menghemat byte?
Taylor Lopez

1
@TaylorLopez yakin, ini praktik buruk pada umumnya, tetapi untuk bermain golf di mana tujuannya adalah untuk meminimalkan kode, saya tidak melihat alasan mengapa tidak.
aaaantoine

5

Pyth - 427 384 Bytes

=G"1, 1, what do you hear?\nI hear a 2 in my ear.\n"=Hc"growling/Polar Bear/roaring/Lion/snorting/Hippopotamus/fluting/Flamingo/braying/Zebra/hissing/Boa Constrictor/trumpeting/Elephant/snarling/Leopard/yelping/Peacock/bellowing/Walrus/whistling/Zookeeper"\/FNT
::G\1@H+yN1\2++r@H+yN3Zd@H+yN2)p+::G"I(.|\n)*"k\1@H20"I hear children...\n\n..."FN9
::"1 like a 2,"\1@HyN\2r@H+yN1Z)p"bellowing like a walrus...\nthat's what I hear.

J"%s, %s, what do you hear?"K"I hear a%sing in my ear.\n"=Hc"Polar Bear/roar/Lion/snort/Hippopotamus/flut/Flamingo/bray/Zebra/hiss/Boa Constrictor/trumpet/Elephant/snarl/Leopard/yelp/Peacock/bellow/Walrus/whistl/Zookeeper/growl"\/FN11
%J*2[@HyN)?qNT"I hear children...\n"%Kjd[?qN5\nkr@H+yN2Z@HhyN))p"..."FN9
+%=J"%sing like a%s"[@HtyN+?qN5\nk+dr@HyNZ)?qN8"..."\,)
"that's what I hear"

Coba di sini - permalink


Bisakah Anda bermain golf ing? Aku jadi gila melihat PHP mengalahkan Pyth.
Titus

1
Keluaran kode a elephant.
Antti29

Semua masalah (termasuk fakta bahwa PHP mengalahkan Pyth) sudah diperbaiki!
KoreanwGlasses

3

C #, 575 525 520 526 507 504 497 494 493 byte

()=>{var t="growl,Polar Bear,roar,Lion,snort,Hippopotamus,flut,Flamingo,bray,Zebra,hiss,Boa Constrictor,trumpet,Elephant,snarl,Leopard,yelp,Peacock,bellow,Walrus,whistl,Zookeeper".Split(',');string r="",s="",z="a ",n="an ";for(int i=0,j=0;i<21;r+=t[++i]+$", {t[i]}, what do you hear?\nI hear "+(i>19?@"children...

...":(i==11?n:z)+t[++i+1].ToLower()+$" {t[i]}ing in my ear.\n\n"))s+=j<20?t[j]+"ing like "+(j==12?n:z)+t[++j].ToLower()+(++j<20?@",
":@"...
"):"that's what I hear.";return r+s;};

C # lambda di mana outputnya adalah a string.

Penjelasan

  1. Init tsebagai string dengan format noise,animal,noise,animal,...dan dibagi dengan ,.
  2. Nyatakan rdan s. radalah bagian pertama dari lagu dan sbagian terakhir. zdan di nsini untuk menangani Elephant.
  3. Berjalan tdan bangun rdan sdalam satu lingkaran yang sama. Barang-barang terner aneh + yang diinterpolasi.
  4. Kembalikan bagian pertama lagu diikuti oleh bagian terakhir.

Kode

()=>{
    var t="growl,Polar Bear,roar,Lion,snort,Hippopotamus,flut,Flamingo,bray,Zebra,hiss,Boa Constrictor,trumpet,Elephant,snarl,Leopard,yelp,Peacock,bellow,Walrus,whistl,Zookeeper".Split(',');
    string r="",s="",z="a ",n="an ";
    for(int i=0,j=0;i<21;r+=t[++i]+$", {t[i]}, what do you hear?\nI hear "+(i>19?@"children...

...":(i==11?n:z)+t[++i+1].ToLower()+$" {t[i]}ing in my ear.\n\n"))
        s+=j<20?t[j]+"ing like "+(j==12?n:z)+t[++j].ToLower()+(++j<20?@",
":@"...
"):"that's what I hear.";
    return r+s;
};

Cobalah online!


3

Python 2 - 454 byte

a="polar bear,lion,hippopotamus,flamingo,zebra,boa constrictor,elephant,leopard,peacock,walrus,zookeeper,whistl,bellow,yelp,snarl,trumpet,hiss,bray,flut,snort,roar,growl".split(',')
e='...\n\n'
r=range
print'\n'.join([(a[i].title()+', ')*2+"what do you hear?\nI hear "+((i<10)*("a%s %sing in my ear.\n"%("n "[i!=5:]+a[i+1],a[~-~i]))or"children%s..."%e+",\n".join(a[~j]+"ing like a"+"n "[j!=6:]+a[j]for j in r(10))+e+"that's what I hear.")for i in r(11)])

3

R 518 509 482 477 474 465 452 456 byte

Tautan ke R-Fiddle untuk mencoba kode

a=c("Polar Bear","Lion","Hippopotamus","Flamingo","Zebra","Boa Constrictor","Elephant","Leopard","Peacock","Walrus","Zookeeper")
b=c("...growl","roar","snort","flut","bray","hiss","trumpet","snarl","yelp","bellow","whistl")
d=c(rep("a ",6),"an ")
f=tolower(a)
cat(c(paste0(a,", ",a,", what do you hear?\nI hear ",c(paste0(d,f," ",b,"ing in my ear.")[-1],"children..."),"\n\n"),paste0(b,"ing like ",d,f,c(rep(",\n",9),"...\nthat's what I hear."))[-11]))
  • Pindah childrendari vektor a, dan singkirkan entri yang sesuai dalam dvektor untuk menghemat 8 byte
  • Lebih merapikan dan menghapus subskrip yang dibuat berlebihan dengan memindahkan children, menyimpan lebih lanjut 27 byte.
  • Globalisasi tolowerfungsinya, menyimpan 5 byte
  • Ganti writeLinesdengan catdan diformat ulang dengan tepat (ditambahkan \ndi beberapa tempat) yang disimpan 3 byte
  • Menyadari bahwa jika dhanya 7 elemen yang bukan 11 penuh, R hanya akan mengulang kembali ke awal. 11 <14 maka ini bekerja untuk kita. Disimpan 9 byte.
  • subskrip global, disimpan 13 byte.
  • catfungsi terpisah dengan " ", diubah kembali ke writeLines. Menambahkan 4 byte ( catdapat diperbaiki dengan menambahkan ,sep=""fungsi)

Selamat datang di PPCG! Ini jawaban pertama yang bagus. Apakah ada cara untuk mencoba kode Anda secara online?
aloisdg mengatakan Reinstate Monica

1
Coba ini r-fiddle.org/#/fiddle?id=5pqkHPyL&version=1 walaupun saya harus menambahkan karakter (backslash) untuk membuatnya membaca tanda kutip di "itu" dengan benar
Robert Maidstone

Terima kasih. Dalam R-Fiddle, saya melihat bahwa Anda memiliki ' 'sebelum setiap item asetelah "Polar Bear". Apakah ini normal?
aloisdg berkata Reinstate Monica

Saya tidak sepenuhnya yakin apa yang Anda maksud. Apakah maksud Anda ruang di bagian pertama puisi itu? Seperti di ruang sebelum "Singa" di sini? "Beruang Kutub, Beruang Kutub ...... aku mendengar ...... Singa, Singa ..... aku mendengar ..." Aku tidak memperhatikan ini sebelumnya. Itu berasal dari fungsi kucing yang memisahkan menggunakan spasi. Ini dapat diperbaiki dengan menambahkan sep = "" ke fungsi, namun kemudian menggunakan writeLines menjadi lebih disukai. (Saya telah mengubah kode kembali ke writeLines)
Robert Maidstone

3

C #, 592 572 Bytes

using System;class p{static void Main(){string[] s={"","","Polar Bear","Lion","Hippopotamus","Flamingo","Zebra","Boa Contrictor","Elephant","Leopard","Peacock","Walrus","Zookeeper","growl","roar","snort","flut","bray","hiss","trumpet","snarl","yelp","bellow","whistl"};for(int i=2;i<13;i++){s[0]+=(s[i]+", "+s[i]+", what do you hear?\nI hear "+(i<12?"a"+(i==7?"n ":" ")+s[i+1].ToLower()+" "+s[i+12]+"ing in my ear.\n\n":"children...\n\n..."));if(i<12)s[1]+=s[i+11]+"ing like a"+(i==8?"n ":" ")+s[i].ToLower()+(i<11?",\n":"...\nthat's what I hear.\n");}Console.Write(s[0]+s[1]);}}

Bersenang-senang menghadapi tantangan ini dengan rekan saya! Terima kasih untuk idenya.

Diformat:

using System;
class p {
    static void Main() {
        string[] s = { "", "", "Polar Bear", "Lion", "Hippopotamus", "Flamingo", "Zebra", "Boa Contrictor", "Elephant", "Leopard", "Peacock", "Walrus", "Zookeeper", "growl", "roar", "snort", "flut", "bray", "hiss", "trumpet", "snarl", "yelp", "bellow", "whistl" };
        for (int i = 2; i < 13; i++) {
            s[0] += (s[i] + ", " + s[i] + ", what do you hear?\nI hear " + (i < 12 ? "a" + (i == 7 ? "n " : " ") + s[i + 1].ToLower() + " " + s[i + 12] + "ing in my ear.\n\n" : "children...\n\n..."));
            if (i < 12) s[1] += s[i + 11] + "ing like a" + (i == 8 ? "n " : " ") + s[i].ToLower() + (i < 11 ? ",\n" : "...\nthat's what I hear.\n");
        }
        Console.Write(s[0] + s[1]);
        Console.ReadKey();
    }
}

EDIT: Terima kasih atas tips Anda yang luar biasa dan banyak, mereka banyak membantu dan saya akan mencoba membuat yang lain juga bekerja.


1
Hapus semua spasi putih yang tidak perlu, Anda dapat menggunakan new[]sebagai gantinya. new string[]Anda juga dapat menjadikan ini sebagai fungsi anonim seperti pada jawaban @ aloisdg
TheLethalCoder

Selamat datang di PPCG! Ide bagus dalam jawaban ini! Anda dapat menemukan beberapa inspirasi untuk meningkatkannya dalam tips untuk kode golf di halaman C # . Teruskan!
aloisdg mengatakan Reinstate Monica

1
Anda jatuh dalam a elephantperangkap (saya juga melakukannya). Itu adalah an elephant;)
aloisdg mengatakan Reinstate Monica

Keluarkan "ing" Anda dalam array kata kerja dan pindahkan ke output untuk menghemat lebih banyak.
GuitarPicker

3

Batch, 650 647 byte

@echo off
set e=echo(
set s=shift
call:d a "polar bear" ...growl "Polar Bear" a lion roar Lion a hippopotamus snort Hippopotamus a flamingo flut Flamingo a zebra bray Zebra a "boa constrictor" hiss "Boa Constrictor" an elephant trumpet Elephant a leopard snarl Leopard a peacock yelp Peacock a walrus bellow
exit/b
:d
call:v %* Walrus a zookeeper whistl Zookeeper
%e%I hear children...
%e%
:l
%e%%3ing like %1 %~2,
%s%
%s%
%s%
%s%
if not "%5"=="" goto l
%e%%3ing like a %2...
%e%that's what I hear.
exit/b
:v
%e%%~4, %~4, what do you hear?
if "%5"=="" exit/b
%e%I hear %5 %~6 %7ing in my ear.
%e%
%s%
%s%
%s%
%s%
goto v

Karena %*Batch adalah hal yang terdekat dengan array. Jika saya dapat menggunakan Polar beardan Boa constrictorkemudian saya dapat menghemat 10% ... tapi saya masih lebih dari 50% dari teks asli ...

Sunting: Disimpan 3 byte dengan pengaturan e=echo(dengan (bukan spasi, yang memungkinkan saya untuk menggunakannya untuk menggemakan baris kosong, meskipun saya kemudian harus menulis @echo offsecara penuh.


2

Bash + zcat, 402 byte

Just a joke:
skrip bash 2 baris yang mengekor sendiri dan menyalurkan baris kedua ke zcat.
Baris kedua adalah teks yang di-gzip.

Cara mempersiapkannya: semua teks dalam file a. Kemudian

echo "tail -n+2 \$0|zcat;exit" > go.sh
gzip a ;
cat a.gz >> go.sh
chomod u+x go.sh

File yang dibuat saat dieksekusi mengembalikan teks awal, 402 Bytes.


Bisakah Anda memposting kode yang sebenarnya? 402 byte tidak terlalu banyak (yaitu Anda dapat mempostingnya).
Erik the Outgolfer

@ EʀɪᴋᴛʜᴇGᴏʟғᴇʀ Kode hanya tail -n+2 \$0|zcat;exitdiikuti oleh baris baru dan string biner 379 byte (versi teks yang diusulkan gzip). Apakah Anda tahu alasan downvote? (Ini adalah prosedur semi standar untuk bash self menginstal skrip dengan arsip di dalamnya, IMHO tidak begitu berbeda dari penggunaan perpustakaan di c ++).
Hastur

Tampaknya Anda menggunakan coreutils ( zcat), jadi header Anda harus ( Bash + coreutils, 402 bytes ) alih-alih ( Bash (dengan zcat) 402 ). Dan, bisakah Anda mengedit jawaban Anda (cukup tambahkan <!>di akhir posting Anda)? Saya ingin menghapus downvote> :(
Erik the Outgolfer

@ EʀɪᴋᴛʜᴇGᴏʟғᴇʀ zcatbukan dari coreutils, ia datang dengan gzip. Dalam banyak sistem adalah skrip dengan panggilan itu gzip -cd "$@"... BTW I dimodifikasi dalam Bash + zcat, 402 byte.
Hastur

Bagus, downvote dihapus. Suara positif adalah milikku.
Erik the Outgolfer

2

F #, 591 589 579 576 573 567 552 byte

Ini adalah percobaan pertama saya di golf kode dengan bahasa yang saya suka. Saya yakin ada beberapa cara ini bisa dibuat lebih pendek. Berjalan di FSI, jadi tidak perlu .NET boilerplate.

Sunting: Dicukur 10 byte dengan menghapus \r. Itu masih membuat baik di VSCode jadi pergi mencari. Potong tiga byte lagi dengan komposisi fungsi, dan tiga byte lainnya dengan lambda, lalu enam dengan for loop, bukan Seq.iter (singkirkan lambda). Akhirnya 15 byte dipotong dengan mengatur ulanga(s:string)

let A="Polar Bear,Lion,Hippopotamus,Flamingo,Zebra,Boa Constrictor,Elephant,Leopard,Peacock,Walrus,Zookeeper".Split(',')
let S="growl,roar,snort,flut,bray,hiss,trumpet,snarl,yelp,bellow,whistl".Split(',')
let a(s:string)=(if s.[0]='E'then"an "else"a ")+s.ToLower()
let f i=sprintf"%s, %s, what do you hear?\nI hear "A.[i]A.[i]
for i in 0..9 do printfn"%s%s %sing in my ear.\n"(f i)(a A.[i+1])S.[i+1]
printf"%schildren...\n\n..."(f 10)
let t i=sprintf"%sing like %s"S.[i](a A.[i])
Seq.iter(t>>printfn"%s,")[0..8]
printfn"%s...\nthat's what I hear."(t 9)

3
Selamat datang di PPCG, jawaban yang bagus!
kucing

Saya tahu #F adalah bahasa .net, tetapi saya pikir untuk tujuan tantangan ini Anda dapat mengganti "\ r \ n" dengan "\ n" yang sederhana, karena konsepnya sama dan menghemat byte
Vale

@ Terima kasih. disimpan 10 byte
asibahi

1
Tidak memengaruhi penghitungan, tetapi Anda salah mengeja "Hippopotamus".
GentlePurpleRain

@GentlePurpleRain Heh. Saya pikir saya mencari semua ejaan. Saya akan memperbaikinya.
asibahi

1

Emacs Lisp, 576 (621) byte

(let*((a'("polar bear""lion""hippopotamus""flamingo""zebra""boa constrictor""elephant""leopard""peacock""walrus""zookeeper"))(l(length a))(m(- l 1))(s'("growl""roar""snort""flut""bray""hiss""trumpet""snarl""yelp""bellow""whistl")))(dotimes(i l)(message"%s, what do you hear?"(let((a(capitalize(nth i a))))(concat a", "a)))(if(not(eq i m))(message "I hear a %s %sing in my ear.\n"(nth(1+ i)a)(nth(1+ i)s))(message"I hear children...\n")(dotimes(j m)(message(concat(when(eq j 0)"...")"%sing like a %s"(if(eq(1+ j)m)"..."","))(nth j s)(nth j a)))(message"That's what I hear."))))

Saat memperbaiki "gajah", dibutuhkan sedikit lebih lama:

(let*((a'("polar bear""lion""hippopotamus""flamingo""zebra""boa constrictor""elephant""leopard""peacock""walrus""zookeeper"))(l(length a))(m(- l 1))(s'("growl""roar""snort""flut""bray""hiss""trumpet""snarl""yelp""bellow""whistl")))(dotimes(i l)(message"%s, what do you hear?"(let((a(capitalize(nth i a))))(concat a", "a)))(if(not(eq i m))(message "I hear a %s %sing in my ear.\n"(nth(1+ i)a)(nth(1+ i)s))(message"I hear children...\n")(dotimes(j m)(message(concat(when(eq j 0)"...")"%sing like a"(and(string-match-p"^[aeiou]"(nth j a))"n")" %s"(if(eq(1+ j)m)"..."","))(nth j s)(nth j a)))(message"That's what I hear."))))

Tidak Disatukan:

(let* ((animals '("polar bear"
                  "lion"
                  "hippopotamus"
                  "flamingo"
                  "zebra"
                  "boa constrictor"
                  "elephant"
                  "leopard"
                  "peacock"
                  "walrus"
                  "zookeeper"))
       (l (length animals))
       (m(- l 1))
       (sounds '("growl"
                 "roar"
                 "snort"
                 "flut"
                 "bray"
                 "hiss"
                 "trumpet"
                 "snarl"
                 "yelp"
                 "bellow"
                 "whistl")))
  (dotimes (i l)
    (message "%s, what do you hear?"
             (let ((animal (capitalize (nth i animals))))
               (concat animal ", " animal)))
    (if (not (eq i m))
        (message "I hear a %s %sing in my ear.\n"
                 (nth (1+ i) animals)
                 (nth (1+ i) sounds))
      (message "I hear children...\n")
      (dotimes (j m)
        (message
         (concat
          (when (eq j 0) "...")
          "%sing like a"
          (and (string-match-p"^[aeiou]" (nth j animals)) "n")
          " %s"
          (if (eq (1+ j) m) "..." ","))
         (nth j sounds )
         (nth j animals)))
      (message"That's what I hear."))))

Regex Anda bisa disingkat ^[aeiou]menjadi ^e, bukan?
owacoder

Untuk gajah, ya, tetapi jika hewan lain ditambahkan, ia perlu diubah. Dengan 600 byte sudah, 6 byte tidak terlalu sakit.
Lord Yuuma

1

C, 596 byte

Panggil f()tanpa argumen. Ini bukan golf terbaik di dunia, saya mungkin bisa menyusut lebih banyak.

f(n){char*t,a[99][99]={"Polar Bear","Lion","Hippopotamus","Flamingo","Zebra","Boa Constrictor","Elephant","Leopard","Peacock","Walrus","Zookeeper","growl","roar","snort","flut","bray","hiss","trumpet","snarl","yelp","bellow","whistl"};for(n=0;n<11;){strcpy(t=a[n+30],n^6?" ":"n ");strcat(t,a[n++]);for(;*t=tolower(*t);++t);}for(n=0;printf("%s, %s, what do you hear?\n",a[n],a[n]),n<10;++n)printf("I hear a%s %sing in my ear.\n\n",a[n+31],a[12+n]);puts("I hear children...\n");for(n=11;n<21;++n)printf("%s%sing like a%s%s\n",n^11?"":"...",a[n],a[n+19],n^20?",":"...");puts("that's what I hear.");}

Cobalah di ideone.


Bisakah Anda menambahkan tautan ke ideone?
aloisdg mengatakan Reinstate Monica

2
Menambahkan tautan ideone.
owacoder

a[99][99]-> **a(-6). Anda tidak dapat menelepon f()tanpa argumen di sini, Anda memerlukan n. Ganti f(n){dengan f{n;. -1 lain di sini. Juga, f()sekarang bisa dipanggil.
Erik the Outgolfer

@owacoder Bagaimana bisa? **aberarti array array karakter (atau penunjuk pointer karakter), dan, bagi saya, itu selalu berfungsi (gcc 4.8). Kompiler apa yang Anda gunakan? Jika Anda tidak menggunakan gcc, Anda harus menentukannya. Jika Anda menggunakan gcc, itu default.
Erik the Outgolfer

@owacoder Tidak! Itu membuat array yang cocok dengan 98 string dengan panjang 98! Dan Anda tidak boleh menyebut tautan ideone Anda "Coba online!" Untuk bermain golf, ganti a[99][99]dengan a[<how many elements do I modify?>+1][<what is the maximum length of any string in here?>+1].
Erik the Outgolfer

1

Python 3, 442 441 byte

h=t=''
for n,s in zip('polar bear,lion,hippopotamus,flamingo,zebra,boa constrictor,elephant,leopard,peacock,walrus,zookeeper'.split(','),'...growl roar snort flut bray hiss trumpet snarl yelp bellow whistl'.split()):u='n'[:'el'in n],n,s,n.title();h+="I hear a{0} {1} {2}ing in my ear.\n\n{3}, {3} what do you hear?\n".format(*u);t+="{2}ing like a{0} {1},\n".format(*u)
print((h+'I hear children...\n\n'+t)[44:-30]+"...\nthat's what I hear.")

ungolfed:

animals = 'polar bear,lion,hippopotamus,flamingo,zebra,boa constrictor,elephant,leopard,peacock,walrus,zookeeper'.split(',')

sounds = '...growl roar snort flut bray hiss trumpet snarl yelp bellow whistl'.split()

h=t=''
for n,s in zip(animals,sounds):
    u='n'[:'el'in n], n, s, n.title()

    h+="I hear a{0} {1} {2}ing in my ear.\n\n{3}, {3} what do you hear?\n".format(*u)

    t+="{2}ing like a{0} {1},\n".format(*u)

print((h+'I hear children...\n\n'+t)[44:-30]+"...\nthat's what I hear.")

Pada dasarnya, hanya satu lingkaran yang membangun dua string yang mewakili dua bagian dari cerita. The 'n'[:'el'in n]menangani para "sebuah" untuk gajah. The [44:-30]daging off terkemuka "Saya mendengar beruang kutub menggeram di telingaku" dan trailing "bersiul seperti zookeeper sebuah".


1

QB64 (QuickBASIC), 581 byte

Kode sedikit mengembang ketika Anda melemparkannya ke dalam interpreter, tetapi file sumber ini valid untuk memuat apa adanya. Jika Anda ingin melihat keseluruhan output sebelum bergulir, maka Anda perlu menambahkan width 80,46pernyataan di awal.

READ a$,v$
FOR x=0 TO 10
?a$+", "+a$+", what do you hear?"
IF x>9THEN
?"I hear children...":?:?"...";
RESTORE
FOR y=0 TO 9
READ a$,v$
?v$+"ing like ";
CALL j(a$)
IF y<9THEN?", "ELSE?"...":?"that's what I hear."
NEXT
END
ELSE
READ a$,v$
?"I hear ";
CALL j(a$)
?" "+v$+"ing in my ear."
?
END IF
NEXT
DATA"Polar Bear","growl","Lion","roar","Hippopotamus","snort","Flamingo","flut","Zebra","bray","Boa Constrictor","hiss","Elephant","trumpet","Leopard","snarl","Peacock","yelp","Walrus","bellow","Zookeper","whistl"
SUB j (A$)
?"a";
IF LEFT$(A$,1)="E"THEN?"n";
?" "+LCASE$(A$);
END SUB

1
Saya tahu ini agak terlambat, tetapi: Saya pikir Anda dapat menyimpan beberapa byte dengan menggunakan GOSUB/ RETURNbukannya CALL/ SUB/ END SUB. Anda juga dapat memasukkan tanda kutip DATAuntuk semua entri yang tidak memiliki spasi di dalamnya. Akhirnya, karena hanya ada satu hewan yang dimulai dengan vokal, A$="Elephant"sebenarnya 1 byte lebih pendek dari LEFT$(A$,1)="E". Penggunaan yang bagus RESTORE, BTW!
DLosc

1

LUA 535 byte

p=print a="growl.roar.snort.flut.bray.hiss.trumpet.snarl.yelp.bellow.whist"b="polar bear.lion.hippopotamus.flamingo.zebra.boa constrictor.elephant.leopard.peacock.walrus.zookeeper."z=a.gmatch(a,"%P+")x=b.gmatch(b,"%P+")w=''for j=1,11 do i=x()v=z()e=j==7 and'n 'or' 'p(j==1 and''or'I hear a'..e..i..' '..v..'ing in my ear.\n')w=w..(j>10 and''or v..'ing like a'..e..i..(j>9 and'...'or',')..'\n')y=i:gsub("^%l",a.upper):gsub("%s%l",a.upper)p(y..', '..y..' what do you hear?')end p('I hear children...\n')p('...'..w.."that's what I hear.")

ungolfed:

sound_list = "growl.roar.snort.flut.bray.hiss.trumpet.snarl.yelp.bellow.whist"
animal_list = "polar bear.lion.hippopotamus.flamingo.zebra.boa constrictor.elephant.leopard.peacock.walrus.zookeeper."

sound_it = string.gmatch(sound_list, "%P+")
animal_it = string.gmatch(animal_list, "%P+")
part_2 = ''

for i = 1, 11  do
    animal = animal_it()
    sound = sound_it()
    aORan = i == 7 and 'n ' or ' '

    print(i == 1 and '' or 'I hear a'..aORan..animal..' '..sound..'ing in my ear.\n')

    part_2 = part_2..(i > 10 and '' or sound..'ling like a'..aORan..animal..(i > 9 and '...' or ',')..'\n')

    big_animal = animal:gsub("^%l", string.upper):gsub("%s%l", string.upper)
    print(big_animal..', '..big_animal..' what do you hear?')
end

print('I hear children...\n')
print('...'..part_2.."that's what I hear.")

Cobalah online


1

PHP, 366 byte

Jawab malas, tapi mengapa menulis dekompresor khusus ketika gzip tersedia?

Hex dump kode PHP (dapat disimpan dengan xxd -r )

0000000: 3c3f 3d67 7a69 6e66 6c61 7465 2827 7d53  <?=gzinflate('}S
0000010: c16a 8430 10bd e72b e6d6 cbe0 2f14 b6b4  .j.0...+..../...
0000020: b4d0 c3de 0abd 8d6e baca c64c 1823 62bf  .......n...L.#b.
0000030: be51 3354 1472 58f3 76de f864 e6bd 5cd9  .Q3T.rX.v..d..\.
0000040: 91c0 c592 20ec f1d4 5284 1bc3 cc23 b4a9  .... ...R....#..
0000050: f26c 3ed6 1308 5cc7 1e84 493a 7f87 ce43  .l>...\...I:...C
0000060: 3f43 222a 633e 1381 b03d 0bef b75d 081c  ?C"*c>...=...]..
0000070: 3852 3f0e 3078 9678 147a df75 20ec ff15  8R?.0x.x.z.u ...
0000080: 857f 1cf5 498a 1318 4f9a 6f99 4450 54d4  ....I...O.o.DPT.
0000090: fab5 b510 a4df 7c14 fa5e 1884 7c14 246a  ......|..^..|.$j
00000a0: 2668 d80f 51ba 26b2 a4b9 87e1 2876 6182  &h..Q.&.....(va.
00000b0: 97ff 1e84 63a1 f001 0fd6 d9d0 928f 1065  ....c..........e
00000c0: ec83 3dcd fc9a 7904 4565 632d 0792 5bf2  ..=...y.Eec-..[.
00000d0: 84c4 9dcc dd48 0405 25a5 60a9 e1e6 01b3  .....H..%.`.....
00000e0: 75e1 2874 dd38 0405 25a1 899c a494 d4d6  u.(t.8..%.......
00000f0: 399e 8e4a 5f2b 89a0 67c9 4ee6 87b5 c10a  9..J_+..g.N.....
0000100: 4cc9 86e8 4ea6 2a8f a0b0 b4fb a6ed dc4d  L...N.*........M
0000110: acaf aaf4 6e7a dc85 a755 d375 0fbb ccbf  ....nz...U.u....
0000120: dea4 3ab5 a211 2651 2adf 1e34 1a7b adb6  ..:...&Q*..4.{..
0000130: fb8c 1bcd 6f26 35d7 6896 3c2a a121 45a3  ....o&5.h.<*.!E.
0000140: c1ca d543 eed0 683a b465 971c 34d9 6ca5  ...C..h:.e..4.l.
0000150: 3404 68d4 3b1d 29bb 65b2 17ca a847 cb2a  4.h.;.).e....G.*
0000160: 624b f169 d8d6 b66d aa32 7f27 293b       bK.i...m.2.');

Saya menggunakan beberapa iterasi zopfli untuk mengonversi teks sumber menjadi 349 byte data terkompresi, menghindari karakter 'yang seharusnya harus melarikan diri dengan backslash.


1

Japt , 308 303 299 295 288 280 294 289 286 byte

Berisi banyak hal yang tidak patut; ikuti tautan di bawah ini untuk melihatnya.

`Pol BÁLiyHippopotam«yFlaÚÁoyZeßBoa CÆqÎtyE¤pÊCyLeopÂýPea¬ckyWalr«yZookeep`qy
`gwÓ2ÂüÍdfl©dßdÊdtruÛFdsnÓ)lpdÞ)owdØtl`qd
[¡[X',SX`, Ø º y Ê#?
I Ê# `Y<A?[Y¶5?``:'aSUg°Y v SVgY `g  my e.`R]¬:[`å,Á`Q='.³R²QU¯J £[Vv `g ¦ke `Y¶6?``:'aSXv]¬Ãq`,
` QR`È  's Ø I Ê#.`]¬]¬Ã·]¬

Menguji

+14 byte karena saya telah mengacaukan garis walrus; perlu mengambil lagi lulus minggu depan untuk melihat apakah saya bisa mendapatkan semua byte itu kembali.


1

Powershell 921 889 886 898 Bytes

itu tidak sempurna, tetapi menghemat 300 Bytes :)

EDIT: Terima kasih Jonathan Frech, saya menyimpan 32 Bytes. Dan terima kasih Veskah untuk mengoreksi Output.

filter Z($1,$2){while($1){$x,$1=$1
$y,$2=$2
[tuple]::Create($x,$y)}}
$0="ing"
$$="hear"
$1="I $$ a "
$3='in my ear.'
$a='Polar Bear'
$b='Lion'
$c='Hippopotamus'
$d='Flamingo'
$e='Zebra'
$f='Boa Constrictor'
$g='Elephant'
$h='Leopard'
$i='Peacock'
$j='Walrus'
$k='Zookeeper'
$v="children"
$2="roar$0"
$4="snort$0"
$5="flut$0"
$6="bray$0"
$7="hiss$0"
$8="trumpet$0"
$9="snarl$0"
$x="yelp$0"
$y="bellow$0"
$^="whistl$0"
$l="$1$b $2$3"
$m="$1$c $4$3"
$n="$1$d $5$3"
$o="$1$e $6$3"
$p="$1$f $7$3"
$q="I $$ an $g $8$3"
$r="$1$h $9$3"
$s="$1$i $x$3"
$t="$1$j $y$3"
$u="$1$k $^$3"
$z=' like a '
$w="I $$ $v..."
z $a,$b,$c,$d,$e,$f,$g,$h,$i,$j,$k $l,$m,$n,$o,$p,$q,$r,$s,$t,$u,$w|%{"$($_.item1),"*2+"what do you $$?";$_.item2;""}
"...growl$0$z$a,"
z $b,$c,$d,$e,$f $2,$4,$5,$6,$7|%{$_.item2+$z+$_.item1+","}
"$8 like an $g,"
z $h,$i $9,$x,$y|%{$_.item2+$z+$_.item1+","}
$y+$z+"Walrus..."
"that's what I $$."

Tidak akan menggunakan karakter ASCII 7 bit standar alih-alih ölebih efisien byte?
Jonathan Frech

Selain itu, saya pikir ada beberapa spasi kosong di baris pertama Anda, bersama dengan nama fungsi yang panjang.
Jonathan Frech

Terima kasih atas petunjuknya :)! (Saya menggunakan Ö hanya karena mengajarkan saya sudah menggunakan semua tanda ASCII yang dapat digunakan XD)
Add-TheNewOne

Karakter öhanya direpresentasikan menggunakan byte tunggal dalam beberapa codepages, UTF-8 membutuhkan dua byte untuk karakter ini.
Jonathan Frech

Output Anda sedikit salah. Bait terakhir mengulangi beruang kutub yang membuat semuanya menjadi satu dan Anda termasuk bersiul yang tidak diperlukan. Itu juga kehilangan elips. Ini juga menulis. an elephantAda juga garis tambahan antara bait sebelumnya yang dapat dihapus dengan menghapus "n".
Veskah

0

clojure, 526 bytes

(use 'clojure.string)(let[l lower-case
a(partition 2(split"Polar Bear,...growl,Lion,roar,Hippopotamus,snort,Flamingo,flut,Zebra,bray,Boa Constrictor,hiss,Elephant,trumpet,Leopard,snarl,Peacock,yelp,Walrus,bellow,Zookeeper,whistl,children,x"#","))b(map(fn[[w x][y e]][(str
w", "w", what do you hear?
I hear a "(l y)" "e"ing in my ear.

")(str x"ing like a "(l w))])a(rest a))r
replace](print(r(str(r(join""(map first b))#".*x.*""I hear children...")(join",
"(butlast(map last b)))"...
that's what I hear.")#"(?i)a(?= e)""an")))

Inilah upaya awal saya. Harus menyukai format dan betapa tidak terbacanya. Semoga peringatan dari use 'clojure.stringdapat diterima.

Cobalah online.

Kode yang diformat:

(use 'clojure.string)
(let [animal-sound (partition 2 (split "Polar Bear,...growl,Lion,roar,Hippopotamus,snort,Flamingo,flut,Zebra,bray,Boa Constrictor,hiss,Elephant,trumpet,Leopard,snarl,Peacock,yelp,Walrus,bellow,Zookeeper,whistl,children,x" #","))
      sentences (map (fn [[animal-1 sound-1] [animal-2 sound-2]]
                       [(str animal-1 ", " animal-1 ", what do you hear?\nI hear a "
                             (lower-case animal-2) " " sound-2 "ing in my ear.\n\n") (str sound-1 "ing like a " (lower-case animal-1))])
                     animal-sound (rest animal-sound))]
  (print (replace (str
                    (replace (join "" (map first sentences)) #".*x.*" "I hear children...")
                    (join ",\n" (butlast (map last sentences)))
                    "...\nthat's what I hear.") #"(?i)a(?= e)" "an")))

0

Java, 571 555 538 atau 516 Bytes

String p(){String r="",z="...",b,x;String[]a="Polar Bear!Lion!Hippopotamus!Flamingo!Zebra!Boa Constrictor!Elephant!Leopard!Peacock!Walrus!Zookeeper!growling!roaring!snorting!fluting!braying!hissing!trumpeting!snarling!yelping!bellowing!whistling".split("!");for(int i=1;i<11;i++){b=i==6?"n ":" ";x=a[i-1];z+=a[i+10]+" like a"+b+x+(i==10?"...":"\n");r+=x+" , "+x+", what do you hear?\n I hear a"+b+a[i].toLowerCase()+" "+a[i+11]+" in my ear.\n\n";}r+=a[10]+" what do you hear?\n\tI hear children...\n"+z+"\nthat's what I hear.";return r;}

Tetapi hanya 516 byte yang diperlukan untuk mendapatkan hasil dalam JShell

String r="",z="...",b,x;String[]a="Polar Bear!Lion!Hippopotamus!Flamingo!Zebra!Boa Constrictor!Elephant!Leopard!Peacock!Walrus!Zookeeper!growling!roaring!snorting!fluting!braying!hissing!trumpeting!snarling!yelping!bellowing!whistling".split("!");for(int i=1;i<11;i++){b=i==6?"n ":" ";x=a[i-1];z+=a[i+10]+" like a"+b+x+(i==10?"...":"\n");r+=x+" , "+x+", what do you hear?\n I hear a"+b+a[i].toLowerCase()+" "+a[i+11]+" in my ear.\n\n";}r+=a[10]+" what do you hear?\n\tI hear children...\n"+z+"\nthat's what I hear."

Ini memberikan output yang salah tentang spasi, tab, huruf kecil dan anvs a.. Saya telah memperbaiki dan memasukkannya ke 507 byte
Kevin Cruijssen

@KevinCruijssen kode Anda tidak memiliki "ing" dari "Saya mendengar ... ... ** ** di telingaku". Juga, sangat mungkin golfable dengan memulai idengan 0sampai 10berubah b=a[i-1]dengan b=a[i++]dan menghapus kenaikan di mana saat ini.
Olivier Grégoire

0

Swift2, 519 byte

var a=["Polar Bear","Lion","Hippopotamus","Flamingo","Zebra","Boa Constrictor","Elephant","Leopard","Peacock","Warlus","Zookeeper"],b=["...growl","roar","snort","flut","bray","hiss","trumpet","snarl","yelp","bellow","whistl"].map{"\($0)ing"},c=a.enumerate().map{"\($0.0==6 ?"an":"a") \($0.1)".lowercaseString},i=0,j=0
while i<11{print("\(a[i]), \(a[i++]), what do you hear?\nI hear \(i>10 ?"children...":"\(c[i]) \(b[i]) in my ear")\n")}
while j<10{print("\(b[j]) like \(c[j++])\(j>9 ?"...\nthat's what I hear.":",")")}

0

Haskell 537 499 497 Bytes

import Data.Char
a&b=a++b
b=putStr
c=concat
d=init
e('E':s)="an e"&s
e s="a "&map toLower s
f="I hear "
l=zip(lines"Polar Bear\nLion\nHippopotamus\nFlamingo\nZebra\nBoa Constrictor\nElephant\nLeopard\nPeacock\nWalrus\nZookeeper")$words"growl roar snort flut bray hiss trumpet snarl yelp bellow whistl"
main=(b.drop 41.c)[f&e n&" "&v&"ing in my ear.\n\n"&n&", "&n&", what do you hear?\n"|(n,v)<-l]>>b(f&"children...\n\n..."&(d.d.c)[v&"ing like "&e n&",\n"|(n,v)<-d l]&"...\nthat's what I hear.\n")

Menggunakan konvensi bahwa solusi tidak dapat dieksekusi, hanya menghasilkan output melalui beberapa fungsi, ini dapat disingkat menjadi 479 Bytes. Outputnya di g:

import Data.Char
a&b=a++b
c=concat
d=init
e('E':s)="an e"&s
e s="a "&map toLower s
f="I hear "
l=zip(lines"Polar Bear\nLion\nHippopotamus\nFlamingo\nZebra\nBoa Constrictor\nElephant\nLeopard\nPeacock\nWalrus\nZookeeper")$words"growl roar snort flut bray hiss trumpet snarl yelp bellow whistl"
g=(drop 41.c)[f&e n&" "&v&"ing in my ear.\n\n"&n&", "&n&", what do you hear?\n"|(n,v)<-l]&f&"children...\n\n..."&(d.d.c)[v&"ing like "&e n&",\n"|(n,v)<-d l]&"...\nthat's what I hear.\n"

0

C (dentang) , 552 byte

(*P)()=printf;l(char*s){for(;*s;s++)putchar(*s>64?*s|32:*s);}char*a[]={"Zookeeper","Walrus","Peacock","Leopard","Elephant","Boa Constrictor","Zebra","Flamingo","Hippopotamus","Lion","Polar Bear"},*s[]={"whistl","bellow","yelp","snarl","trumpet","hiss","bray","flut","snort","roar","growl"};f(i){for(i=11;i--;)P("%s, %s, what do you hear?\nI hear%s ",a[i],a[i],i?i^5?" a":" an":""),i?l(a[i-1]):0,P(i?" %sing in my ear.\n\n":"children...\n\n...",s[i-1]);for(i=11;--i;)P("%sing like a%s ",s[i],i^4?"":"n"),l(a[i]),P(i-1?",\n":"...\nthat's what I hear.");}

Cobalah online!



0

Perl 5 , 413 byte

@t=('Polar Bear',growl,Lion,roar,Hippopotamus,snort,Flamingo,flut,Zebra,bray,'Boa Constrictor',hiss,Elephant,trumpet,Leopard,snarl,Peacock,yelp,Walrus,bellow,Zookeeper,whistl);say$_=$t[$i],", $_, what do you hear?
I hear ",/Zo/?"children...
":"a".n x(/C/).lc" $t[$i+=2] $t[$i+1]ing in my ear.
"while!/Zo/;pop@t;pop@t;print'...';say+(shift@t)."ing like a ".lc.(@t?",":'...')while$_=shift@t;say"that's what I hear."

Cobalah online!


0

JavaScript, 424 byte

f=(x=0,a=btoa`>Z¯ ^j¼Ëó*i¢-jk¬ÌYZ)à£6^n¶³²
춸¶óW©©íÌ·¨¥ªÝÌ÷r$Íf¥®ë3f$yê^¯0`[s=`split`]`y`.join` `[s]`z`,g=z=>n[z]+`ing like `+h(17)+l(z)+(z>9?`...
that's what I hear.`:`,
`+g(++z)),h=m=>++x%m?`a `:`an `,l=y=>a[y].toLowerCase(n=btoa`º0:èj¼ìíÍùn·6ëk,áË3¶»¦¥ës²v«<ÛzYhÃ<!ËeÌ`[s]`z`))=>a[x]+`, ${a[x]}, what do you hear?
I hear `+(x>9?`children...

...`+g(0):h(6)+l(x)+` ${n[x]}ing in my ear.

`+f(x))

Menguji


0

Pyth, 342 byte

L:b"a e""an e"y>sm.F"
I hear a {1} {0} in my ear.

{2}, {2}, what do you hear?"+dr3edJC,+R"ing"c"growl
roar
snort
flut
bray
hiss
trumpet
snarl
yelp
bellow
whistl"bc"polar bear
lion
hippopotamus
flamingo
zebra
boa constrictor
elephant
leopard
peacock
walrus
zookeeper"b42"I hear children...
"jPPysm+j" like a "d",
"PJc2*6\."that's what I hear.

Cobalah online di sini .

Penjelasan untuk diikuti.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.