Orso polare, Orso polare, cosa senti?


50

Il testo del libro per bambini Orso polare, Orso polare, Che cosa senti? ha un modello molto semplice. È possibile utilizzare il testo per insegnare concetti di programmazione introduttiva.

Mio figlio si è presto annoiato di questa idea, quindi ho deciso di giocarci un po 'con esso.

La sfida

Nel tuo linguaggio di programmazione preferito, scrivi il programma più piccolo possibile che stamperà il seguente testo. L'output deve corrispondere esattamente, inclusi maiuscole, spaziature e punteggiatura.

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-complessità sarebbe un buon tag per questo
charredgrass

3
Sono il maiuscolo Be Cin Polar Beare Boa Constrictornecessario? (In Batch questo mi costa il 10% del mio conteggio di byte ...)
Neil

È consentito inviare un hash e forzare la soluzione con un set limitato? : D
polimero

4
Questa è una prima bella sfida!
Alex A.

1
Farei +1 ma sei a 42 voti positivi, e chi sono io per disturbare le vie della galassia?
FantaC,

Risposte:


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

Provalo online

Spiegazione

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

35B0¡…ing«lV
Decomprimere, dividere su 0, aggiungere "ing" a ciascuna parola, convertire in basso e memorizzare nella variabile Y

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

36B1ð:0¡™
Decomprimere, sostituire 1 con spazio, dividere su 0 e convertire in custodia del titolo

D©„, «D‚ø
Duplica, salva per registrarti per un uso successivo, aggiungi "," a una copia, duplica e zip.

“€À€·€î—«?“¶«¸
Le parole del dizionario "cosa senti?", Seguite da una nuova riga, aggiunte a un nuovo elenco

‘€JU
Prodotto cartesiano dell'elenco di "Animale, animale" e "che cosa senti? \ N", appiattito e unito e lo memorizza nella variabile X. Pruduce l'elenco di stringhe del modulo "Animale, animale, cosa senti? N ".

¦“„¾“‚˜l
Prendi l'elenco rimanente di animali da prima, rimuovi il guardiano dello zoo e aggiungi i bambini, converti in lettere minuscole.

v
Per ogni animale:

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

Premi "I hear0 in the ear.", Dividi su 0 e premi come stringhe separate.

yð«Y¦õ‚˜Nè«
Spingi "suono animale" con i bambini che non hanno suono

sr„ a
Spingere "a" nella posizione corretta

N5Qi'n«}
Se l'animale è "Elefante" aggiungi "n"

ð«
Aggiungi spazio.

N9›ijrj¨ðs«…...«}
Se l'animale è un bambino, rimuovi lo spazio e aggiungi "..."

srJˆ}
Unisciti alla frase "Sento un (n) suono di animale nel mio orecchio." (oltre a quello per i bambini), archiviare in array globale ed end loop

X¯‚ø€J
Recupera le prime righe, comprimilo e unisciti producendo la prima parte della rima "Animale, Animale, cosa senti? \ NIo sento un suono (n) animale nel mio orecchio."

vy,¶?}
Stampa seguita da una nuova riga.

…...DU?
Stampa "..." e archivia una copia nella variabile X.

Y¨v
Per ogni suono tranne "fischio":

N__i ', ¶} Per ogni riga tranne la prima, iniziala con ", \ n" (facendo andare la virgola sulla riga precedente)

yð“€è€…“
Spingere suono, spazio e "come un"

N6Qi'n«}
Se Elephant aggiungi "n".

ð®NèJl?}X,
Recupera l'animale salvato nel registro, unisciti a tutto, stampa e termina seguito da "...". Questo produce le linee "suono come un (n) animale".

“€Š's€À I—«.“?
Stampa la stringa del dizionario "è quello che sento."


30
Questo sta convocando Cthulhu.
aloisdg dice Reinstate Monica il

6
Non riesco a vedere dove finisce il codice e iniziano i dati compressi.
Adám,

4
@ Adám lo so. Sembra un po 'incomprensibile :) Aggiungerò eventualmente una spiegazione che, si spera, la renderà più chiara. Potrei provare a giocarci ancora un po 'prima.
Emigna,

28
Questo è probabilmente il modo in cui i laici immaginano il codice.
noɥʇʎԀʎzɐɹƆ

1
Non ho idea di cosa ho appena letto ...
Nico,

9

PHP, 420 414 434 414 412 byte

chiamare dalla CLI o anteporre <pre>all'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.";
  • un paio di avvisi per costanti indefinite; Il cast implicito di PHP su stringhe letterali inizia di nuovo
  • l'aggiunta della "n" per "un elefante" ha richiesto 20 byte ... hmpf.
  • ottenuto i 20 byte di nuovo riordinando roba :)

abbattersi

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

Piuttosto una sfida divertente!

Grazie Downgoat per avermi salvato 27 tonnellate di byte usando atobe Titus per 4 byte!

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 Ai fini del golf, è possibile impostare variabili globali. (Non farlo in una funzione ricorsiva però!)
Neil

1
Il tuo codice non funziona, suppongo che stack abbia scambiato alcune lettere nel tuo codice base64. Dopo la divisione ottengo ["ujA66Gq87O3N + W63NutrLOHLM7a7pqXrc7J2q", "", "bellow", "why2U ="].
Lolesque,

1
Definire c=console.log;all'inizio quindi utilizzare c () per salvare 6 byte. O semplicemente salva la stringa in una variabile e stampala una volta con alert ().
Lolesque,

1
@lolesque The c=console.lognon funziona perché logdeve avere un thisof consoleo produce un errore. (A meno che non lo faccia in alcuni browser / ambienti?) L'idea di mettere tutto in una stringa suona bene, però
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:.

Provalo online!

608 byte in meno rispetto al messaggio effettivo (1120), questo è meno della metà (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­·Õ}ýÚ'

Per facilitare la lettura: ⎕UCS¯2(219⌶)¯128+⎕UCS'...'

⎕UCS '... 'converte la stringa in punti di codice Unicode

¯128+ sottrai 128 per ottenere -128 ≤ n ≤ 127

¯2(219⌶) un-zlib

⎕UCS converte i punti di codice Unicode in stringa

La stringa di origine è i seguenti 365 byte di punti di codice Unicode zlib:

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

(Il credito per 13 byte salvati dovrebbe andare a Gábor Fekete e altri 4 byte sono stati salvati da Taylor Lopez.)

Quindi probabilmente potresti immaginare che avrei usato una lingua come Python come strumento di insegnamento. Questo era il programma prima di iniziare a giocare a 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
È possibile utilizzare la sintassi di decompressione per salvare alcuni byte: passare a=A[i]a a,b=A[i]e quindi è possibile scrivere ae banziché a[0]e a[1]. Ciò salverà 12 byte.
Gábor Fekete,

Passando N=lambda m:("a","an")["E"==m[0]]+" "+m.lower()a N=lambda m:"an"[:("E"==m[0])+1]e n=a[0]+", ";P(n+n+"what do you hear?")a a+=", ";P(a+a+"what do you hear?")si risparmieranno altri 2 byte.
Gábor Fekete,

Domanda generale sul golf. Dove hai len(A), dato che lo scopo di questa sfida è semplicemente generare l'output statico (non gestire l'input dinamico), è accettabile usare un hard-coded 11invece per salvare byte?
Taylor Lopez,

1
@TaylorLopez certo, è una cattiva pratica in generale, ma per il golf dove l'obiettivo è minimizzare il codice, non vedo alcun motivo per cui no.
aaaantoine,

5

Pyth - 427 384 byte

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

Provalo qui - permalink


Puoi golf via la ings? Impazzisco vedendo PHP battere Pyth.
Tito

1
Il codice viene generato a elephant.
Antti29,

Tutti i problemi (incluso il fatto che PHP ha battuto Pyth) sono stati risolti!
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 dove l'output è a string.

Spiegazione

  1. Init tcome stringa con il formato noise,animal,noise,animal,...e diviso per ,.
  2. Dichiarare re s. rè la prima parte della canzone e sl'ultima parte. ze nsono qui per gestire Elephant.
  3. Cammina te costruisci re snello stesso loop. Strano ternario + roba interpolata.
  4. Restituisce la prima parte della canzone seguita dall'ultima parte.

Codice

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

Provalo 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

Link a R-Fiddle per provare il codice

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]))
  • Si è spostato childrendal vettore ae si è liberato della voce corrispondente nel dvettore per salvare 8 byte
  • Più riordino e rimozione degli abbonamenti resi ridondanti spostando children, salvati ulteriori 27 byte.
  • Globalizzata la tolowerfunzione, salvata 5 byte
  • Sostituire writeLinescon cate riformattato in modo appropriato (aggiunto \nin punti) salvato 3 byte
  • Realizzato che se dsono solo 7 elementi non tutti gli 11, R tornerà di nuovo all'inizio. Come 11 <14 quindi questo funziona per noi. Salvato 9 byte.
  • sottoscrizioni globalizzate, salvate 13 byte.
  • catla funzione si stava separando con " ", modificata in writeLines. Aggiunti 4 byte ( catpossono essere corretti aggiungendo ,sep=""alla funzione)

Benvenuti in PPCG! Questa è una bella prima risposta. C'è un modo per provare il tuo codice online?
aloisdg dice Reinstate Monica il

1
Prova questo r-fiddle.org/#/fiddle?id=5pqkHPyL&version=1 anche se ho dovuto aggiungere un personaggio (barra rovesciata) per farlo leggere l'apostrofo in "che è" correttamente
Robert Maidstone,

Grazie. In R-Fiddle, ho visto che hai un ' 'prima di ogni elemento di adopo "Polar Bear". È normale?
aloisdg dice Reinstate Monica il

Non sono del tutto sicuro di cosa intendi. Intendi lo spazio nella prima sezione della poesia? Come nello spazio prima di "Lion" qui? "Orso polare, Orso polare ...... \ nSento un ...... \ n Leone, Leone ..... \ nSento un ..." Non l'avevo notato prima. Deriva dalla funzione gatto che si separa usando uno spazio. Questo può essere risolto aggiungendo sep = "" alla funzione, tuttavia diventa preferibile usare writeLines. (Ho cambiato il codice di nuovo in writeLines)
Robert Maidstone,

3

C #, 592 572 byte

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]);}}

Ci siamo divertiti così tanto a raccogliere questa sfida con il mio collega! Grazie per l'idea

formattato:

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: Grazie per i tuoi numerosi e fantastici consigli, hanno aiutato molto e cercherò di far funzionare anche gli altri.


1
Rimuovi tutto lo spazio bianco non necessario, puoi new[]invece usare o. new string[]Inoltre puoi trasformarlo in una funzione anonima come nella risposta di @ aloisdg
TheLethalCoder

Benvenuti in PPCG! Buona idea in questa risposta! Puoi trovare qualche spunto per migliorarlo nei suggerimenti per giocare a golf nella pagina C # . Continua così!
aloisdg dice Ripristinare Monica

1
Sei caduto nella a elephanttrappola (anche io). Lo è an elephant;)
aloisdg dice Reinstate Monica il

Elimina i tuoi "ing" nell'array di verbi e spostali sull'output per ulteriori risparmi.
GuitarPicker,

3

Lotto, 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

Perché %*è la cosa più vicina a un array. Se posso usare Polar beare Boa constrictorquindi posso risparmiare il 10% ... ma sono ancora più del 50% del testo originale ...

Modifica: salvato 3 byte impostando e=echo(con un (invece di uno spazio, il che mi consente di usarlo per riecheggiare le righe vuote, anche se poi devo scrivere per @echo offintero.


2

Bash + zcat, 402 byte

Solo uno scherzo:
uno script bash a 2 righe che si codifica e reindirizza la seconda riga a zcat.
La seconda riga è il testo gzip.

Come prepararlo: tutto il testo in un file a. Poi

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

Il file così creato quando eseguito restituisce il testo iniziale, 402 byte.


Puoi pubblicare il codice attuale? 402 byte non sono così tanti (cioè puoi pubblicarlo).
Erik the Outgolfer

@ EʀɪᴋᴛʜᴇGᴏʟғᴇʀ Il codice è tail -n+2 \$0|zcat;exitseguito solo da una nuova riga e da una stringa binaria di 379 byte (la versione gzip del testo proposto). Conoscevi il motivo del downvote? (è una procedura semi standard per bash di script autoinstallanti con un archivio all'interno, IMHO non così diverso dall'uso di una libreria in c ++).
Hastur,

Sembra che usi coreutils ( zcat), quindi l'intestazione deve essere ( Bash + coreutils, 402 byte ) invece di ( Bash (con zcat) 402 ). E puoi modificare la tua risposta (basta aggiungere <!>alla fine del tuo post)? Voglio rimuovere il downvote> :(
Erik the Outgolfer

@ EʀɪᴋᴛʜᴇGᴏʟғᴇʀ zcatnon proviene da coreutils, viene fornito gzip. In molti sistemi c'è uno script che chiama gzip -cd "$@"... A proposito, ho modificato in Bash + zcat, 402 byte.
Hastur,

Buono, downvote rimosso. Il voto è mio.
Erik the Outgolfer,

2

F #, 591 589 579 576 573 567 552 byte

Questo è il mio primo tentativo di giocare a golf con una lingua che mi piace. Scommetto che ci sono alcuni modi in cui questo potrebbe essere ridotto. Funziona in FSI, quindi non è necessario il boilerplate .NET.

Modifica: rasato 10 byte rimuovendolo \r. Rende ancora bene in VSCode quindi vai a capire. Tagliare altri tre byte con la composizione della funzione e altri tre con un lambda, quindi sei con un ciclo for anziché Seq.iter (eliminando il lambda). Alla fine sono stati tagliati 15 byte riordinandoa(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
Benvenuto in PPCG, bella risposta!
gatto

So che #F è una lingua .net, ma penso che ai fini di questa sfida sia possibile sostituire "\ r \ n" con un semplice "\ n", poiché il concetto è lo stesso e salva byte
Vale

@Vale grazie. salvato 10 byte
asibahi

1
Non influisce sul conteggio, ma hai sbagliato "Ippopotamo".
GentlePurpleRain

@GentlePurpleRain Heh. Pensavo di aver cercato tutte le ortografie. Io lo aggiusterò.
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."))))

Quando si fissa "un elefante", ci vuole leggermente più tempo:

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

Il tuo regex potrebbe essere ridotta da ^[aeiou]a ^e, non potrebbe?
owacoder,

Per l'elefante sì, ma se fossero aggiunti altri animali avrebbe bisogno di cambiare. Con già 600 byte, 6 byte non fanno così male.
Lord Yuuma,

1

C, 596 byte

Chiama f()senza alcun argomento. Questo non è il miglior golf del mondo, probabilmente posso ridurlo di più.

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

Provalo su ideone.


Puoi aggiungere un link a ideone?
aloisdg dice Reinstate Monica il

2
Aggiunto collegamento ideone.
owacoder,

a[99][99]-> **a(-6). Non puoi chiamare f()senza argomenti qui, hai bisogno di un n. Sostituisci f(n){con f{n;. Un altro -1 qui. Inoltre, f()ora è richiamabile.
Erik the Outgolfer,

@owacoder Come mai? **aindica una matrice di matrici di caratteri (o un puntatore del puntatore di caratteri) e, per me, ha sempre funzionato (gcc 4.8). Quale compilatore usi? Se non usi gcc, devi specificarlo. Se usi gcc, è un valore predefinito.
Erik the Outgolfer,

@owacoder No! Crea un array che misura 98 stringhe di lunghezza 98! E non dovresti assolutamente chiamare il tuo link ideone "Provalo online!" Per giocare a golf, sostituirlo a[99][99]con 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.")

Fondamentalmente, solo un ciclo che crea due stringhe che rappresentano le due parti della storia. Le 'n'[:'el'in n]maniglie "an" per elefanti. Le [44:-30]braciole del primo "Sento un orso polare ringhiare nel mio orecchio" e il finale "fischi come un guardiano dello zoo".


1

QB64 (QuickBASIC), 581 byte

Il codice si espande un po 'quando lo si lancia nell'interprete, ma questo file sorgente è valido per essere caricato così com'è. Se vuoi vedere l'intero output prima che scorra oltre, dovrai aggiungere width 80,46un'istruzione all'inizio.

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
So che è un po 'tardi, ma: penso che puoi salvare alcuni byte usando GOSUB/ RETURNinvece di CALL/ SUB/ END SUB. Inoltre, puoi inserire le virgolette DATAper tutte le voci che non contengono spazi. Infine, poiché c'è solo un animale che inizia con una vocale, in A$="Elephant"realtà è 1 byte più corto di LEFT$(A$,1)="E". Bel uso di RESTORE, a proposito!
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.")

Provalo online


1

PHP, 366 byte

Risposta pigra, ma perché scrivere un decompressore personalizzato quando gzip è disponibile?

Dump esadecimale del codice PHP (può essere salvato con 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.');

Ho usato alcune iterazioni di zopfli per convertire il testo sorgente in 349 byte di dati compressi, evitando il carattere che altrimenti dovrebbe essere evitato con barre rovesciate.


1

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

Contiene un mucchio di non stampabili; segui il link qui sotto per vederli.

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

Provalo

+14 byte perché avevo messo in rilievo la linea del tricheco; dovrà passare un altro passaggio su di esso la prossima settimana per vedere se riesco a recuperare uno di quei byte.


1

Powershell 921 889 886 898 byte

non è perfetto, ma salva 300 byte :)

EDIT: Grazie Jonathan Frech, ho salvato 32 byte. E grazie Veskah per aver corretto l'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 $$."

L'utilizzo di un carattere ASCII a 7 bit standard invece di un öbyte sarebbe più efficiente?
Jonathan Frech,

Inoltre, penso che ci sia uno spazio bianco superfluo nella tua prima riga, insieme a un lungo nome di funzione.
Jonathan Frech,

Grazie per i suggerimenti :)! (Ho usato Ö solo perché mi hanno insegnato che ho già usato tutti i segni ASCII utilizzabili XD)
Add-TheNewOne

Il carattere öè rappresentato usando solo un singolo byte in alcune codepage, UTF-8 richiede due byte per questo carattere.
Jonathan Frech,

L'output è un po 'spento. L'ultima strofa ripete l'orso polare che rende tutto diverso da uno e includi fischi che non sono necessari. Manca anche un'ellissi. Scrive anche an elephantC'è anche un'interruzione di linea aggiuntiva tra le stanze precedenti che può essere eliminata rimuovendo il "n".
Veskah,

0

clojure, 526 byte

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

Ecco il mio tentativo iniziale. Devi amare la formattazione e quanto sia illeggibile. Spero che gli avvertimenti use 'clojure.stringsiano accettabili.

Provalo online.

Codice formattato:

(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 o 516 byte

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

Ma per ottenere risultati in JShell sono necessari solo 516 byte

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

Fornisce un output errato per quanto riguarda spazi, tabulazioni, lettere minuscole e anvs a.. L'ho corretto e golfato a 507 byte
Kevin Cruijssen

@KevinCruijssen Nel tuo codice manca "ing" di "Sento un ... ... ** ing ** nell'orecchio". Inoltre, molto probabilmente golfable iniziando icon 0fino a 10cambiare b=a[i-1]con b=a[i++]e rimuovendo l'incremento in cui si trova attualmente.
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 byte

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

Utilizzando la convenzione che una soluzione non può essere eseguibile, produce solo l'output tramite alcune funzioni, questo può essere ridotto a 479 byte. L'output è 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 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.");}

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

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

Provalo


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.

Provalo online qui .

Spiegazione da seguire.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.