Eisbär, Eisbär, was hörst du?


50

Der Text des Kinderbuchs Eisbär, Eisbär, Was hörst du? hat ein sehr einfaches Muster. Sie können den Text verwenden, um einführende Programmierkonzepte zu vermitteln.

Mein Sohn langweilte sich schnell bei dieser Idee und ich beschloss, stattdessen ein bisschen Golf zu spielen.

Die Herausforderung

Schreiben Sie in der Programmiersprache Ihrer Wahl das kleinstmögliche Programm, das den folgenden Text ausgibt. Die Ausgabe sollte genau übereinstimmen, einschließlich Groß- und Kleinschreibung, Abstand und Interpunktion.

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-Komplexität wäre ein guter Tag für diese
Charredgrass

3
Sind die Großbuchstaben Bund Cin Polar Bearund Boa Constrictornotwendig? (In Batch kostet mich das 10% meiner Byteanzahl ...)
Neil

Ist es erlaubt, einen Hash zu senden und die Lösung mit einer eingeschränkten Menge zu erzwingen? : D
Polym

4
Dies ist eine sehr schöne erste Herausforderung!
Alex A.

1
Ich würde +1 geben, aber du hast 42 positive Stimmen, und wer bin ich, um die Wege der Galaxis zu stören?
FantaC

Antworten:


34

05AB1E, 349 331 330 322 314 311 Bytes

•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—«.“?

Probieren Sie es online aus

Erläuterung

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

35B0¡…ing«lV
Auspacken, auf 0 aufteilen, zu jedem Wort "ing" hinzufügen, nach lower konvertieren und in Variable Y speichern

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

36B1ð:0¡™
Auspacken, 1 durch Leerzeichen ersetzen, auf 0 teilen und in Groß- / Kleinschreibung konvertieren

D©„, «D‚ø
Duplizieren, zur späteren Verwendung speichern, "," zu einer Kopie hinzufügen, diese duplizieren und zip.

“€À€·€î—«?“¶«¸
Wörter aus dem Wörterbuch "Was hören Sie?", Gefolgt von einer neuen Zeile, die einer neuen Liste hinzugefügt wurde

‘€JU
Kartesisches Produkt der Liste "Animal, Animal" und "what you hear? \ N", abgeflacht und verbunden und in Variable X gespeichert. Pruduces Liste der Zeichenfolgen der Form "Animal, Animal, what you hear? N ".

¦“„¾“‚˜l
Nehmen Sie die verbleibende Liste der Tiere von vor, entfernen Sie den Tierpfleger und fügen Sie Kinder hinzu, konvertieren Sie in Kleinbuchstaben.

v
Für jedes Tier:

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

Drücke "I hear0 in my ear.", Teile auf 0 und drücke als separate Saiten.

yð«Y¦õ‚˜Nè«
Drücken Sie "Tiergeräusch", wenn Kinder kein Geräusch haben

sr„ a
Drücken Sie "a" an der richtigen Stelle

N5Qi'n«}
Wenn das Tier "Elefant" ist, addiere "n"

ð«
Platz hinzufügen.

N9›ijrj¨ðs«…...«}
Wenn das Tier ein Kind ist, entfernen Sie das Leerzeichen und fügen Sie "..." hinzu

srJˆ}
Setzen Sie sich mit dem Satz "Ich höre ein (n) Tiergeräusch in meinem Ohr." (Wie auch die untergeordneten), in globalem Array und Endschleife speichern

X¯‚ø€J
Rufen Sie die ersten Zeilen ab, machen Sie einen Reißverschluss und beginnen Sie mit der Produktion des ersten Teils des Reims "Animal, Animal, was hören Sie? \ NIch höre ein (n) Tiergeräusch in meinem Ohr."

vy,¶?}
Drucken, gefolgt von einer neuen Zeile.

…...DU?
Drucken Sie "..." und speichern Sie eine Kopie in der Variablen X.

Y¨v
Für jeden Ton außer "Pfeifen":

N__i ', ¶} Beginnen Sie jede Zeile mit Ausnahme der ersten mit ", \ n" (wobei das Komma in die vorherige Zeile gesetzt wird).

yð“€è€…“
Push Sound, Space und "Like A"

N6Qi'n«}
Wenn Elefant, fügen Sie "n" hinzu.

ð®NèJl?}X,
Rufe das im Register gespeicherte Tier ab, verbinde alles, drucke und beende die Schleife, gefolgt von "...". Dies erzeugt die "Geräusche wie ein (n) Tier" -Linien.

“€Š's€À I—«.“?
Print dictionary string "das ist was ich höre."


30
Dieser ruft Cthulhu herbei.
Aloisdg sagt Reinstate Monica

6
Ich kann nicht sehen, wo der Code endet und die gepackten Daten beginnen.
Adám

4
@Adám ich weiß. Es sieht sehr nach Kauderwelsch aus :) Ich werde irgendwann eine Erklärung hinzufügen, die es hoffentlich klarer machen wird. Vielleicht möchte ich es zuerst noch einmal versuchen.
Emigna

28
So stellen sich Laien wahrscheinlich Code vor.
noɥʇʎԀʎzɥʇʎԀʎ

1
Ich habe keine Ahnung, was ich gerade gelesen habe ...
Nico

9

PHP, 420 414 434 414 412 Bytes

Aufruf von CLI oder Voranstellen <pre>auf Ausgabe.

$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.";
  • ein paar Hinweise für undefinierte Konstanten; Die implizite Umwandlung von PHP in einen wörtlichen String setzt wieder ein
  • Das Hinzufügen des "n" für "ein Elefant" hat 20 Bytes gedauert ... hmpf.
  • habe die 20 Bytes zurückbekommen, indem ich Sachen umgeordnet habe :)

Nervenzusammenbruch

$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 Bytes

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)

Eine lustige Herausforderung!

Vielen Dank an Downgoat, dass er mir 27 Tonnen Bytes gespart hat atobund an Titus für 4 Bytes!

Ungolfed:

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 Zum Golfen dürfen Sie globale Variablen setzen. (Tun Sie dies jedoch nicht in einer rekursiven Funktion!)
Neil

1
Ihr Code funktioniert nicht, ich gehe davon aus, dass der Stack einige Buchstaben in Ihrem base64-Code ausgetauscht hat. Nach dem Split erhalte ich ["ujA66Gq87O3N + W63NutrLOHLM7a7pqXrc7J2q", "", "bellow", "why2U ="].
Lolesque

1
Definieren c=console.log;am Anfang dann Gebrauch c () 6 Bytes zu speichern. Oder speichern Sie den String einfach in einer Variablen und drucken Sie ihn einmal mit alert () aus.
Lolesque

1
@lolesque Das c=console.logfunktioniert nicht, weil logein thisvon sein muss consoleoder es einen Fehler erzeugt. (Es sei denn, es funktioniert nicht in einigen Browsern / Umgebungen?) Die Idee, alles in eine Zeichenfolge zu
packen,

7

/// , 523 512 Bytes

/_/\/\///:/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:.

Probieren Sie es online!

608 Bytes weniger als die eigentliche Nachricht (1120), das ist weniger als die Hälfte davon (560)!


6

Dyalog APL , 387 Bytes

⎕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­·Õ}ýÚ'

Um das Lesen zu erleichtern: ⎕UCS¯2(219⌶)¯128+⎕UCS'...'

⎕UCS '... 'Zeichenkette in Unicode-Codepunkte konvertieren

¯128+ Subtrahiere 128, um -128 ≤ n ≤ 127 zu erhalten

¯2(219⌶) un-zlib

⎕UCS Unicode-Codepunkte in Zeichenfolgen konvertieren

Die Quellzeichenfolge besteht aus den folgenden 365 Byte zlib'ed Unicode-Codepunkten:

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 Bytes

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.")

(Guthaben für 13 Bytes sollte an Gábor Fekete gehen, und weitere 4 Bytes wurden von Taylor Lopez gespeichert.)

Sie könnten also vermuten, dass ich eine Sprache wie Python als Lehrmittel verwenden würde. Dies war das Programm, bevor ich anfing, Golf zu spielen.

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
Sie können die Syntax zum Entpacken verwenden, um einige Bytes zu speichern: ändern Sie a=A[i]zu a,b=A[i]und dann können Sie schreiben aund banstelle von a[0]und a[1]. Dies spart 12 Bytes.
Gábor Fekete

Wenn Sie N=lambda m:("a","an")["E"==m[0]]+" "+m.lower()zu N=lambda m:"an"[:("E"==m[0])+1]und n=a[0]+", ";P(n+n+"what do you hear?")zu wechseln , a+=", ";P(a+a+"what do you hear?")werden 2 weitere Bytes gespart.
Gábor Fekete

Allgemeine Golffrage. Wo haben Sie len(A), da der Zweck dieser Herausforderung einfach darin besteht, die statische Ausgabe zu generieren (nicht die dynamische Eingabe), ist es akzeptabel, 11stattdessen eine fest codierte zu verwenden, um Bytes zu sparen?
Taylor Lopez

1
@ TaylorLopez sicher, es ist schlechte Praxis im Allgemeinen, aber für das Golfen, wo das Ziel ist, Code zu minimieren, sehe ich keinen Grund, warum nicht.
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"

Probieren Sie es hier aus - Permalink


Können Sie das ings weg Golf spielen ? Ich werde verrückt, wenn ich sehe, wie PHP Pyth schlägt.
Titus

1
Der Code wird ausgegeben a elephant.
Antti29

Alle Probleme (einschließlich der Tatsache, dass PHP Pyth schlägt) sind behoben!
KoreanwGlasses

3

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

()=>{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, wo die Ausgabe a ist string.

Erläuterung

  1. Init tals String mit dem Format noise,animal,noise,animal,...und geteilt durch ,.
  2. Deklarieren rund s. rist der erste Teil des Liedes und sder letzte Teil. zund nsind hier um damit umzugehen Elephant.
  3. Gehen tund bauen Sie rund sin der gleichen Schleife. Seltsame ternäre + interpolierte Sachen.
  4. Geben Sie den ersten Teil des Songs gefolgt vom letzten Teil zurück.

Code

()=>{
    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;
};

Probieren Sie es online!


3

Python 2 - 454 Bytes

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 Bytes

Verlinken Sie mit R-Fiddle, um den Code zu testen

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]))
  • Verschoben childrenaus dem Vektor a, und bekam in dem entsprechenden Eintrag befreite dVektor 8 Byte zu speichern
  • Weitere children27 Bytes wurden eingespart, da durch das Verschieben überflüssige Subskripte aufgeräumt und entfernt wurden .
  • Globalisierte die tolowerFunktion, sparte 5 Bytes
  • Ersetzen Sie writeLinesdurch catund formatieren Sie es entsprechend neu ( \nstellenweise hinzugefügt ), um 3 Byte zu sparen
  • Es wurde erkannt, dass, wenn dnur 7 Elemente nicht die volle 11 sind, R nur wieder zum Start zurückkehren wird. Als 11 <14 funktioniert das dann bei uns. 9 Bytes gespeichert.
  • globalisierte Indizes, 13 Bytes gespeichert.
  • catFunktion trennte sich mit " ", änderte sich zurück zu writeLines. 4 Bytes hinzugefügt ( catkann durch Hinzufügen ,sep=""zur Funktion behoben werden )

Willkommen bei PPCG! Dies ist eine schöne erste Antwort. Gibt es eine Möglichkeit, Ihren Code online auszuprobieren?
Aloisdg sagt Reinstate Monica

1
Versuchen Sie es mit r-fiddle.org/#/fiddle?id=5pqkHPyL&version=1, obwohl ich ein Zeichen (Backslash) hinzufügen musste, damit es das Apostroph in " That 's" korrekt liest
Robert Maidstone

Danke. In R-Fiddle, sah ich , dass Sie eine haben ' 'vor jedem Punkt des anach "Polar Bear". Es ist normal?
Aloisdg sagt Reinstate Monica

Ich bin mir nicht ganz sicher, was du meinst. Meinen Sie den Raum im ersten Abschnitt des Gedichts? Wie im Raum vor "Lion" hier? "Eisbär, Eisbär ... \ nIch höre einen ... \ n Löwe, Löwe ... \ nIch höre einen ..." Das hatte ich vorher nicht bemerkt. Es kommt von der Katzenfunktion, die durch ein Leerzeichen trennt. Dies kann durch Hinzufügen von sep = "" zur Funktion behoben werden. In diesem Fall ist jedoch die Verwendung von writeLines vorzuziehen. (Ich habe den Code wieder auf writeLines geändert)
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]);}}

Ich hatte eine großartige Zeit mit meinem Kollegen diese Herausforderung anzunehmen! Danke für die Idee.

Formatiert:

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: Vielen Dank für Ihre zahlreichen und tollen Tipps, sie haben mir sehr geholfen und ich werde versuchen, auch die anderen zum Laufen zu bringen.


1
Entfernen Sie alle unnötigen Leerzeichen. Verwenden Sie new[]stattdessen o. new string[]Sie können dies auch zu einer anonymen Funktion machen, wie in @ aloisdgs Antwort
TheLethalCoder,

Willkommen bei PPCG! Gute Idee in dieser Antwort! Anregungen zur Verbesserung finden Sie in den Tipps zum Codegolf auf der C # -Seite. Mach weiter!
Aloisdg sagt Reinstate Monica

1
Du bist in die a elephantFalle gegangen (ich auch). Es ist an elephant;)
Aloisdg sagt Reinstate Monica

Nehmen Sie Ihre "ing" s aus dem Verbarray heraus und verschieben Sie sie in die Ausgabe, um weitere Einsparungen zu erzielen.
GuitarPicker

3

Batch, 650 647 Bytes

@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

Denn %*ist das nächste, was Batch zu einem Array hat. Wenn ich kann Polar bearund Boa constrictordann kann ich 10% sparen ... aber ich bin immer noch mehr als 50% des Originaltextes ...

Bearbeiten: 3 Bytes durch Setzen e=echo(eines (anstelle eines Leerzeichens gespart , wodurch ich Leerzeilen ausgeben kann, obwohl ich sie dann @echo offvollständig ausschreiben muss.


2

Bash + Zcat, 402 Bytes

Nur ein Witz:
ein 2-zeiliges Bash-Skript, das sich selbst beendet und die zweite Zeile an zcat weiterleitet.
Die zweite Zeile ist der gezippte Text.

So bereiten Sie es vor: Der gesamte Text in einer Datei a. Dann

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

Die so erstellte Datei liefert den Starttext 402 Bytes.


Können Sie den tatsächlichen Code posten? 402 Bytes ist nicht so viel (dh Sie können es veröffentlichen.)
Erik der Outgolfer

@ EʀɪᴋᴛʜᴇGᴏʟғᴇʀ Auf den Code tail -n+2 \$0|zcat;exitfolgen nur ein Zeilenumbruch und eine Binärzeichenfolge von 379 Bytes (die komprimierte Version des vorgeschlagenen Textes). Wussten Sie den Grund für die Ablehnung? (Es ist ein halbstandardmäßiges Verfahren für die Bash-Selbstinstallation von Skripten mit einem darin enthaltenen Archiv, IMHO unterscheidet sich nicht so sehr von der Verwendung einer Bibliothek in c ++).
Hastur

Anscheinend verwenden Sie coreutils ( zcat), sodass Ihr Header ( Bash + coreutils, 402 Byte ) anstelle von ( Bash (mit zcat) 402 ) sein muss. Und können Sie Ihre Antwort bearbeiten (einfach <!>am Ende Ihres Beitrags anhängen )? Ich möchte die downvote entfernen> :(
Erik the Outgolfer

@EʀɪᴋᴛʜᴇGᴏʟғᴇʀ zcatist nicht von coreutils, es kommt mit gzip. In vielen Systemen ist ein Skript mit dem man gzip -cd "$@"... Übrigens habe ich in Bash + zcat, 402 Bytes geändert.
Hastur

Gut, Downvote entfernt. Die Gegenstimme ist meine.
Erik der Outgolfer

2

F #, 591 589 579 576 573 567 552 Bytes

Dies ist mein erster Versuch, Code-Golf mit einer Sprache zu spielen, die ich mag. Ich wette, es gibt einige Möglichkeiten, wie dies kürzer gemacht werden könnte. Läuft in FSI, benötigt also kein .NET-Boilerplate.

Bearbeiten: 10 Bytes durch Entfernen rasiert \r. Es wird in VSCode immer noch gut gerendert. Schneiden Sie weitere drei Bytes mit der Funktionskomposition und weitere drei Bytes mit einem Lambda und dann sechs Bytes mit einer for-Schleife anstelle von Seq.iter (Lambda entfernen). Schließlich wurden 15 Bytes durch Umordnen geschnittena(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
Willkommen bei PPCG, nette Antwort!
Katze

Ich weiß, dass #F eine .net-Sprache ist, aber ich denke, zum Zweck dieser Herausforderung können Sie das "\ r \ n" durch ein einfaches "\ n" ersetzen, da das Konzept dasselbe ist und Bytes spart
Vale

@Vale danke. 10 Bytes gespeichert
Asibahi

1
Beeinflusst die Zählung nicht, aber Sie haben "Hippopotamus" falsch geschrieben.
GentlePurpleRain

@GentlePurpleRain Heh. Ich dachte, ich hätte nach allen Schreibweisen gesucht. Ich werde es reparieren.
Asibahi

1

Emacs Lisp, 576 (621) Bytes

(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."))))

Wenn Sie "einen Elefanten" reparieren, dauert es etwas länger:

(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."))))

Ungolfed:

(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."))))

Ihre Regex könnte von ^[aeiou]bis verkürzt werden ^e, nicht wahr?
Owacoder

Für den Elefanten ja, aber wenn andere Tiere hinzugefügt würden, müsste sich das ändern. Mit bereits 600 Bytes schaden 6 Bytes nicht so sehr.
Lord Yuuma

1

C 596 Bytes

Rufen Sie f()ohne Argumente an. Dies ist nicht das beste Golf der Welt, ich kann es wahrscheinlich mehr schrumpfen.

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.");}

Probiere es auf ideone aus.


Können Sie einen Link zu ideone hinzufügen?
Aloisdg sagt Reinstate Monica

2
Ideone Link hinzugefügt.
Owacoder

a[99][99]-> **a(-6). Sie können hier nicht f()ohne Argumente anrufen , Sie brauchen eine n. Ersetzen f(n){durch f{n;. Noch ein -1 hier. Auch f()ist jetzt aufrufbar.
Erik der Outgolfer

@owacoder Wie kommt es? **abedeutet ein Array von Zeichenarrays (oder ein Zeichenzeigerzeiger), und für mich hat es immer funktioniert (gcc 4.8). Welchen Compiler benutzt du? Wenn Sie gcc nicht verwenden, müssen Sie es angeben. Wenn Sie gcc verwenden, ist dies eine Standardeinstellung.
Erik der Outgolfer

@owacoder Nein! Es macht ein Array, das 98 Zeichenfolgen der Länge 98 passt! Und du solltest deinen ideone Link definitiv nicht "online ausprobieren" nennen! Golf, ersetzen a[99][99]mit a[<how many elements do I modify?>+1][<what is the maximum length of any string in here?>+1].
Erik der Outgolfer

1

Python 3, 442 441 Bytes

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.")

Im Grunde genommen nur eine Schleife, die zwei Zeichenfolgen aufbaut, die die beiden Teile der Geschichte darstellen. Der 'n'[:'el'in n]behandelt das "an" für Elefanten. Das [44:-30]Abhacken des führenden "Ich höre einen Eisbären in meinem Ohr knurren" und das nachfolgende "Pfeifen wie ein Tierpfleger".


1

QB64 (QuickBASIC), 581 Byte

Der Code wird ein wenig erweitert, wenn Sie ihn in den Interpreter werfen, aber diese Quelldatei kann unverändert geladen werden. Wenn Sie die gesamte Ausgabe sehen möchten, bevor ein Bildlauf durchgeführt wird, müssen Sie width 80,46am Anfang eine Anweisung hinzufügen .

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
Ich weiß, das ist ein bisschen spät, aber: Ich denke, Sie können einige Bytes mit GOSUB/ RETURNanstelle von CALL/ SUB/ sparen END SUB. Sie können auch die Anführungszeichen DATAfür alle Einträge einfügen, die keine Leerzeichen enthalten. Da es schließlich nur ein Tier gibt, das mit einem Vokal beginnt, A$="Elephant"ist es tatsächlich 1 Byte kürzer als LEFT$(A$,1)="E". Gute Verwendung von RESTORE, übrigens!
DLosc

1

LUA 535 Bytes

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.")

Probieren Sie es online aus


1

PHP, 366 Bytes

Faule Antwort, aber warum einen benutzerdefinierten Dekomprimierer schreiben, wenn gzip verfügbar ist?

Hex-Dump von PHP-Code (kann mit xxd -r gespeichert werden )

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.');

Ich habe ein paar Iterationen von zopfli verwendet , um den Quelltext in 349 Byte komprimierte Daten zu konvertieren, wobei das Zeichen vermieden wurde, das sonst mit Backslashes maskiert werden müsste.


1

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

Enthält eine Reihe von nicht druckbaren Elementen. Folgen Sie dem Link unten, um sie anzuzeigen.

`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 Ê#.`]¬]¬Ã·]¬

Probier es aus

+14 Bytes, weil ich die Walross-Linie zusammengeballt hatte; Nächste Woche muss ich noch einmal darüber nachdenken, um zu sehen, ob ich eines dieser Bytes zurückbekomme.


1

Powershell 921 889 886 898 Bytes

es ist nicht perfekt, spart aber 300 Bytes :)

EDIT: Danke Jonathan Frech, ich habe 32 Bytes gespart. Und danke Veskah für die Korrektur der Ausgabe.

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 $$."

Wäre die Verwendung eines Standard-7-Bit-ASCII-Zeichens anstelle eines öBytes nicht effizienter?
Jonathan Frech

Außerdem enthält Ihre erste Zeile ein überflüssiges Leerzeichen sowie einen langen Funktionsnamen.
Jonathan Frech

Danke für die Hinweise :)! (Ich habe das Ö benutzt, nur weil ich gelernt habe, dass ich bereits alle verwendbaren ASCII-Zeichen XD verwendet habe)
Add-TheNewOne

Das Zeichen öwird in einigen Codepages nur mit einem Byte dargestellt, UTF-8 benötigt zwei Byte für dieses Zeichen.
Jonathan Frech

Ihre Ausgabe ist ein bisschen aus. Die letzte Strophe wiederholt Eisbär, was alles von eins macht und Sie schließen das Pfeifen ein, das nicht benötigt wird. Es fehlt auch eine Ellipse. Es an elephantgibt auch einen zusätzlichen Zeilenumbruch zwischen den früheren Strophen, der durch Entfernen der entfernt werden kann "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")))

Hier ist mein erster Versuch. Muss ich lieben die Formatierung und wie unleserlich es ist. Hoffe die Warnungen von use 'clojure.stringsind akzeptabel.

Probieren Sie es online aus.

Formatierter Code:

(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 oder 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;}

In JShell sind jedoch nur 516 Byte erforderlich, um das Ergebnis zu erhalten

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."

Es gibt falsche Ausgabe in Bezug auf Leerzeichen, Tabulatoren, Kleinbuchstaben und anvs a.. Ich habe es behoben und auf 507 Bytes
golfen

@ KevinCruijssen Ihrem Code fehlt das "Ing" von "Ich höre ein ... ... ** Ing ** in meinem Ohr". Auch sehr wahrscheinlich golfable durch beginnend imit 0bis zu 10Wechsel b=a[i-1]mit b=a[i++]und Entfernen des Zuwachses wo es derzeit ist.
Olivier Grégoire

0

Swift2, 519 Bytes

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")

Mit der Konvention, dass eine Lösung nicht ausführbar sein muss, erzeugen Sie die Ausgabe nur über eine Funktion, diese kann auf 479 Bytes gekürzt werden. Die Ausgabe erfolgt in 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 (clang) , 552 Bytes

(*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.");}

Probieren Sie es online!



0

Perl 5 , 413 Bytes

@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."

Probieren Sie es online!


0

JavaScript, 424 Bytes

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))

Probier es aus


0

Pyth, 342 Bytes

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.

Probieren Sie es hier online aus .

Erklärung folgt.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.