หมีขั้วโลก, หมีขั้วโลก, คุณได้ยินเสียงอะไร?


50

ข้อความของหนังสือสำหรับเด็กPolar Bear, Polar Bear, What Do Hear Hear? มีรูปแบบที่ง่ายมาก คุณอาจใช้ข้อความเพื่อสอนแนวคิดการเขียนโปรแกรมเบื้องต้น

ลูกชายของฉันเบื่อกับความคิดนี้อย่างรวดเร็วดังนั้นฉันจึงตัดสินใจเล่นกอล์ฟด้วยความคิดแทน

ความท้าทาย

ในภาษาการเขียนโปรแกรมที่คุณเลือกเขียนโปรแกรมที่เล็กที่สุดเท่าที่จะเป็นไปได้ซึ่งจะพิมพ์ข้อความต่อไปนี้ ผลลัพธ์ควรตรงกันทุกประการรวมถึงตัวพิมพ์เล็กช่องว่างและเครื่องหมายวรรคตอน

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-complexจะเป็นแท็กที่ดีสำหรับสิ่งนี้
charredgrass

3
เป็นตัวพิมพ์ใหญ่BและCในPolar BearและBoa Constrictorจำเป็นหรือไม่ (ในชุดนี้ค่าใช้จ่ายฉัน 10% ของจำนวนไบต์ของฉัน ... )
Neil

การส่งแฮชและแก้ไขปัญหาด้วยชุดอนุญาต จำกัด หรือไม่ : D
polym

4
นี่เป็นความท้าทายครั้งแรกที่ดีมาก!
Alex A.

1
ฉัน +1 แต่คุณอยู่ที่ 42 upvotes และฉันเป็นใครรบกวนวิถีของกาแลคซี?
FantaC

คำตอบ:


34

05AB1E, 349 331 330 322 314 311 ไบต์

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

ลองออนไลน์

คำอธิบาย

•4i;kV_†©:š×Îj€Yå—‚‘%˜ESδþ¤çÑ9¶‹{Å€7¾à{Ì®qA•
สตริงที่บรรจุเสียง GROWL0ROAR0SNORT0FLUT0BRAY0HISS0TRUMPET0SNARL0YELP0BELLOW0WHISTL

35B0¡…ing«lV
แกะแยกที่ 0 เพิ่ม "ing" ให้กับแต่ละคำแปลงเป็นต่ำกว่าและเก็บไว้ในตัวแปร Y

•7ü[¿‘¢wÀ¶à-‚¤î„jHâ™ÐJ'µ‡ÀÂý6›ü‚š¸€%NtÅýµL›fU¥ì€€uîT¡›Ÿ{!œ>'Ì&ý§¨Ü?é>•
สตริงที่บรรจุสัตว์ POLAR1BEAR0LION0HIPPOPOTAMUS0FLAMINGO0ZEBRA0BOA1CONSTRICTOR0ELEPHANT0LEOPARD0PEACOCK0WALRUS0ZOOKEEPER

36B1ð:0¡™
แยกออกแทนที่ 1 ด้วยช่องว่างแบ่งเป็น 0 แล้วแปลงเป็นชื่อตัวพิมพ์

D©„, «D‚ø
ทำซ้ำบันทึกเพื่อลงทะเบียนเพื่อใช้ในภายหลังเพิ่ม "," ลงในหนึ่งสำเนาทำซ้ำและ zip

“€À€·€î—«?“¶«¸
คำในพจนานุกรม "คุณได้ยินอะไรบ้าง" ตามด้วยบรรทัดใหม่เพิ่มลงในรายการใหม่

‘€JU
รายการคาร์ทีเซียนของรายการ "สัตว์สัตว์" และ "คุณได้ยินอะไรบ้าง \ n" แบนและเข้าร่วมแล้วเก็บไว้ในตัวแปร X. Pruduces รายการสตริงของรูปแบบ "สัตว์สัตว์คุณได้ยินอะไรบ้าง? n "

¦“„¾“‚˜l
นำรายชื่อสัตว์ที่เหลือจากก่อนเอาสัตว์เลี้ยงและเพิ่มลูก ๆ เปลี่ยนเป็นตัวเล็ก

v
สำหรับสัตว์แต่ละตัว:

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

กด "ฉันได้ยิน 0 ในหูของฉัน" แยกที่ 0 แล้วกดเป็นสตริงแยกกัน

yð«Y¦õ‚˜Nè«
กด "เสียงสัตว์" โดยที่เด็กไม่มีเสียง

sr„ a
กด "a" ในตำแหน่งที่ถูกต้อง

N5Qi'n«}
หากสัตว์เป็น "ช้าง" เพิ่ม "n"

ð«
เพิ่มพื้นที่

N9›ijrj¨ðs«…...«}
ถ้าสัตว์เป็นเด็กให้ลบที่ว่างแล้วเพิ่ม "... "

srJˆ}
เข้าร่วมประโยค "ฉันได้ยินเสียงสัตว์ (n) อยู่ในหูของฉัน" (เช่นเดียวกับลูก ๆ หนึ่ง) เก็บในอาเรย์ส่วนกลางและลูปสิ้นสุด

X¯‚ø€J
ดึงบรรทัดแรก zip และเข้าร่วมในการผลิตส่วนแรกของสัมผัส "สัตว์สัตว์คุณจะได้ยินอะไร \ n ฉันได้ยินเสียงสัตว์ (n) ในหูของฉัน"

vy,¶?}
พิมพ์ตามด้วยบรรทัดใหม่

…...DU?
พิมพ์ "... " และเก็บสำเนาไว้ในตัวแปร X

Y¨v
สำหรับแต่ละเสียงยกเว้น "ผิวปาก":

N__i ', ¶} สำหรับแต่ละบรรทัดยกเว้นบรรทัดแรกให้เริ่มด้วย ", \ n" (ทำให้คอมมาอยู่ในบรรทัดก่อนหน้า)

yð“€è€…“
กดเสียงพื้นที่และ "ชอบ"

N6Qi'n«}
หาก Elephant เพิ่ม "n"

ð®NèJl?}X,
ดึงสัตว์ที่บันทึกไว้ในการลงทะเบียนเข้าร่วมทุกอย่างพิมพ์และสิ้นสุดการวนตามด้วย "... " สิ่งนี้ทำให้เกิด "เสียงเหมือนสัตว์ (n)"

“€Š's€À I—«.“?
พิมพ์สตริงพจนานุกรม "นั่นคือสิ่งที่ฉันได้ยิน"


30
อันนี้กำลังเรียกคธูลู
aloisdg พูดว่า Reinstate Monica

6
ฉันไม่สามารถดูว่ารหัสสิ้นสุดและข้อมูลเริ่มต้นที่บรรจุ
อดัม

4
@ Adámฉันรู้ ดูเหมือนมากซึ่งพูดพล่อยๆ :) ฉันจะเพิ่มคำอธิบายในที่สุดซึ่งหวังว่าจะทำให้ชัดเจนขึ้น ฉันอาจต้องการลองเล่นกอล์ฟก่อน
Emigna

28
นี่อาจเป็นวิธีที่คนธรรมดาจินตนาการรหัส
noɥʇʎԀʎzɐɹƆ

1
ฉันไม่รู้เลยว่าฉันเพิ่งอ่านอะไร ...
นิโก้

9

PHP, 420 414 434 414 412 ไบต์

โทรจาก CLI หรือเสริม<pre>เพื่อส่งออก

$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.";
  • ประกาศสองรายการสำหรับค่าคงที่ที่ไม่ได้กำหนด การแปลงสคริปโดยนัยของ PHP ไปยังสตริงตัวอักษรจะเริ่มขึ้นอีกครั้ง
  • การเพิ่ม "n" สำหรับ "an elephant" ใช้เวลา 20 ไบต์ ... hmpf
  • ได้ 20 ไบต์กลับโดยการจัดเรียงลำดับใหม่ :)

ชำรุด

$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 ไบต์

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)

ค่อนข้างสนุกท้าทาย!

ขอบคุณ Downgoat ที่ช่วยฉัน27ไบต์ให้ใช้atobและ Titus สำหรับ 4 ไบต์!

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 สำหรับวัตถุประสงค์ของการเล่นกอล์ฟคุณได้รับอนุญาตให้ตั้งค่าตัวแปรทั่วโลก (อย่าทำอย่างนี้ในฟังก์ชั่นแบบเรียกซ้ำ!)
Neil

1
รหัสของคุณไม่ทำงานฉันถือว่าสแต็คแลกเปลี่ยนตัวอักษรบางตัวในรหัส base64 ของคุณ หลังจากการแยกฉันได้รับ ["ujA66Gq87O3N + W63NutrLOHLM7a7pqXrc7J2q", "", "ร้อง", "Why2U ="]
lolesque

1
กำหนดc=console.log;ที่จุดเริ่มต้นจากนั้นใช้ c () เพื่อบันทึก 6 ไบต์ หรือเพียงแค่บันทึกสตริงในตัวแปรและพิมพ์ครั้งเดียวด้วยการแจ้งเตือน ()
lolesque

1
@lolesque c=console.logไม่ได้เพราะlogต้องมีthisของconsoleหรือสร้างข้อผิดพลาด (เว้นแต่จะไม่มีในบางเบราว์เซอร์ / สภาพแวดล้อม?) ความคิดที่จะทำให้ทุกอย่างในสตริงฟังดูดี แต่
apsillers

7

/// , 523 512 ไบต์

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

ลองออนไลน์!

608 ไบต์น้อยกว่าข้อความจริง (1120) น้อยกว่าครึ่งหนึ่งของข้อความ (560)!


6

Dyalog APL , 387 ไบต์

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

เพื่อความสะดวกในการอ่าน: ⎕UCS¯2(219⌶)¯128+⎕UCS'...'

⎕UCS '... 'แปลงสตริงเป็นจุดโค้ด Unicode

¯128+ ลบ 128 เพื่อรับ -128 ≤ n ≤ 127

¯2(219⌶) ยกเลิก zlib

⎕UCS แปลงคะแนนโค้ด Unicode เป็นสตริง

สตริงที่มาคือ 365 ไบต์ของจุดโค้ด Unicode zlib'ed:

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 ไบต์

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

(เครดิตสำหรับ 13 ไบต์ที่บันทึกควรไปที่Gábor Fekete และอีก 4 ไบต์ถูกบันทึกโดย Taylor Lopez)

ดังนั้นคุณอาจเดาได้ว่าฉันจะใช้ภาษาอย่าง Python เป็นเครื่องมือในการสอน นี่คือรายการก่อนที่ฉันจะเริ่มเล่นกอล์ฟ

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
คุณสามารถใช้ไวยากรณ์การเปิดออกเพื่อประหยัดไบต์บางอย่างเปลี่ยนแปลงa=A[i]ไปa,b=A[i]และจากนั้นคุณสามารถเขียนaและbแทนและa[0] a[1]วิธีนี้จะประหยัด 12 ไบต์
Gábor Fekete

เปลี่ยนN=lambda m:("a","an")["E"==m[0]]+" "+m.lower()ไปN=lambda m:"an"[:("E"==m[0])+1]และn=a[0]+", ";P(n+n+"what do you hear?")เพื่อa+=", ";P(a+a+"what do you hear?")จะประหยัด 2 ไบต์
Gábor Fekete

คำถามเล่นกอล์ฟทั่วไป คุณมีที่len(A)ใดเนื่องจากวัตถุประสงค์ของการท้าทายนี้คือการสร้างเอาต์พุตแบบสแตติก (ไม่ใช่การจัดการกับอินพุตแบบไดนามิก) เป็นที่ยอมรับได้หรือไม่ที่จะใช้ฮาร์ดโค้ด11แทนที่จะบันทึกไบต์?
Taylor Lopez

1
@TaylorLopez แน่นอนว่ามันเป็นการปฏิบัติที่ไม่ดีโดยทั่วไป แต่สำหรับการเล่นกอล์ฟที่เป้าหมายคือการย่อขนาดโค้ดฉันไม่เห็นเหตุผลว่าทำไมถึงไม่
aaaantoine

5

Pyth - 427 384 ไบต์

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

ลองที่นี่ - ลิงก์ถาวร


คุณสามารถตีกอล์ฟออกไปingได้ไหม? ฉันบ้าไปแล้วที่เห็น PHP เอาชนะ Pyth
ติตัส

1
a elephantเอาต์พุตรหัส
Antti29

แก้ไขปัญหาทั้งหมด (รวมถึงความจริงที่ว่า PHP เอาชนะ Pyth) ได้รับการแก้ไขแล้ว!
KoreanwGlasses

3

C #, 575 525 520 526 507 504 497 494 493 ไบต์

()=>{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 # stringแลมบ์ดาที่ส่งออกเป็น

คำอธิบาย

  1. init tเป็นสตริงที่มีรูปแบบและแยกจากnoise,animal,noise,animal,...,
  2. ประกาศและr เป็นส่วนแรกของเพลงและส่วนสุดท้าย และอยู่ที่นี่ในการจัดการsrsznElephant
  3. เดินtและสร้างrและsอยู่ในลูปเดียวกัน สิ่งที่ประกอบไปด้วยแปลก + สอดแทรก
  4. ส่งคืนส่วนแรกของเพลงตามด้วยส่วนสุดท้าย

รหัส

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

ลองออนไลน์!


3

Python 2 - 454 ไบต์

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 ไบต์

เชื่อมโยงไปยัง R-Fiddle เพื่อลองใช้รหัส

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]))
  • ย้ายchildrenออกจากเวกเตอร์aและลบรายการที่เกี่ยวข้องในdเวกเตอร์เพื่อบันทึก 8 ไบต์
  • การจัดระเบียบและลบตัวห้อยเพิ่มเติมทำให้ซ้ำซ้อนโดยการย้ายchildrenบันทึกไปแล้ว 27 ไบต์
  • โลกาภิวัตน์tolowerฟังก์ชั่นที่บันทึกไว้ 5 ไบต์
  • แทนที่writeLinesด้วยcatและจัดรูปแบบใหม่อย่างเหมาะสม (เพิ่ม\nในสถานที่) บันทึก 3 ไบต์
  • ตระหนักว่าหากdเป็นเพียง 7 องค์ประกอบไม่ใช่เต็ม 11 R จะวนกลับไปที่จุดเริ่มต้นอีกครั้ง ในฐานะที่เป็น 11 <14 แล้วสิ่งนี้เหมาะสำหรับเรา บันทึกแล้ว 9 ไบต์
  • ตัวย่อที่ทำให้เป็นโกลบอลบันทึก 13 ไบต์
  • catฟังก์ชั่นได้รับการแยกที่มีการเปลี่ยนแปลงกลับไป" " writeLinesเพิ่ม 4 ไบต์ ( catสามารถแก้ไขได้โดยการเพิ่ม ,sep=""ฟังก์ชั่น)

ยินดีต้อนรับสู่ PPCG! นี่เป็นคำตอบแรกที่ดี มีวิธีลองรหัสของคุณออนไลน์หรือไม่?
aloisdg พูดว่า Reinstate Monica

1
ลองr-fiddle.org/#/fiddle?id=5pqkHPyL&version=1นี้ แม้ว่าฉันจะต้องเพิ่มตัวละคร (แบ็กสแลช) เพื่อให้มันอ่านเครื่องหมายอะโพสโทรฟีใน "นั่น" ถูกต้อง
Robert Maidstone

ขอขอบคุณ. ใน R-Fiddle ฉันเห็นว่าคุณมี' 'ไอเท็มก่อนหน้าaหลังจาก"Polar Bear"นั้น เป็นเรื่องปกติหรือไม่
aloisdg พูดว่า Reinstate Monica

ฉันไม่แน่ใจว่าคุณหมายถึงอะไรทั้งหมด คุณหมายถึงช่องว่างในส่วนแรกของบทกวีหรือไม่? เช่นเดียวกับในอวกาศก่อน "สิงโต" ที่นี่? "หมีขั้วโลก, หมีขั้วโลก ...... \ n ฉันได้ยิน ...... \ n สิงโต, สิงโต ..... \ n ฉันได้ยิน ... " ฉันไม่ได้สังเกตเรื่องนี้มาก่อน มันมาจากฟังก์ชั่นของแมวโดยใช้ช่องว่าง สิ่งนี้สามารถแก้ไขได้โดยการเพิ่ม sep = "" ไปยังฟังก์ชันอย่างไรก็ตามการใช้ writeLines จะดีกว่า (ฉันได้เปลี่ยนรหัสกลับไปเป็น writeLines)
Robert Maidstone

3

C #, 592 572 ไบต์

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

มีช่วงเวลาที่ดีมากที่ได้รับความท้าทายนี้กับเพื่อนร่วมงานของฉัน! ขอบคุณสำหรับความคิด

จัดรูปแบบ:

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

แก้ไข:ขอบคุณสำหรับเคล็ดลับมากมายและยอดเยี่ยมพวกเขาช่วยได้มากและฉันจะพยายามทำให้คนอื่นทำงานได้ดี


1
ลบช่องว่างที่ไม่จำเป็นออกทั้งหมดคุณสามารถใช้new[]แทน o new string[]นอกจากนี้คุณสามารถทำให้สิ่งนี้เป็นฟังก์ชั่นนิรนามเช่นในคำตอบของ @ aloisdg
TheLethalCoder

ยินดีต้อนรับสู่ PPCG! ความคิดที่ดีในคำตอบนี้! คุณอาจพบแรงบันดาลใจในการปรับปรุงในเคล็ดลับสำหรับการเล่นกอล์ฟรหัสในหน้าC # ทำต่อไป!
aloisdg พูดว่า Reinstate Monica

1
คุณa elephantตกหลุมพราง (ฉันก็ทำเหมือนกัน) มันคือan elephant;)
aloisdg พูดว่า Reinstate Monica

นำ "ing" ของคุณออกมาในอาร์เรย์กริยาและย้ายไปยังเอาต์พุตเพื่อการประหยัดที่มากขึ้น
GuitarPicker

3

แบตช์650 647 ไบต์

@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

เพราะ%*สิ่งที่ใกล้ที่สุดคือแบทช์ที่มีต่ออาร์เรย์ ถ้าฉันสามารถใช้Polar bearและBoa constrictorแล้วผมสามารถประหยัด 10% ... แต่ฉันยังคงมากกว่า 50% ของข้อความเดิม ...

แก้ไข: บันทึก 3 ไบต์ด้วยการตั้งค่าe=echo(ด้วยการ(เว้นวรรคซึ่งช่วยให้ฉันสามารถใช้เพื่อสะท้อนบรรทัดว่างแม้ว่าฉันจะต้องเขียนออกมา@echo offเต็ม


2

Bash + zcat 402 ไบต์

เพียงแค่เรื่องตลก:
สคริปต์ทุบตี 2 บรรทัดที่ก้อยเองและไพพ์บรรทัดที่สองไปยัง zcat
บรรทัดที่สองคือข้อความ gzipped

วิธีการเตรียมความพร้อม: aข้อความทั้งหมดในแฟ้ม แล้วก็

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

ไฟล์ที่สร้างขึ้นเมื่อเรียกใช้งานส่งคืนข้อความเริ่มต้น 402 ไบต์


คุณสามารถโพสต์รหัสจริงได้หรือไม่ 402 ไบต์ไม่ว่ามาก (เช่นคุณสามารถโพสต์มัน.)
เอริก Outgolfer

@ EʀɪᴋᴛʜᴇGᴏʟғᴇʀรหัสจะtail -n+2 \$0|zcat;exitตามด้วยบรรทัดใหม่และสตริงไบนารี่ 379 ไบต์เท่านั้น (ข้อความที่เสนอในเวอร์ชัน gzipped) คุณรู้สาเหตุของการโหวตหรือไม่ (เป็นกระบวนการกึ่งมาตรฐานสำหรับสคริปต์การติดตั้ง bash self ที่มีไฟล์เก็บถาวร IMHO ไม่แตกต่างจากการใช้ไลบรารีใน c ++)
Hastur

ดูเหมือนว่าคุณใช้ coreutils ( zcat) ดังนั้นส่วนหัวของคุณต้องเป็น ( Bash + coreutils, 402 ไบต์ ) แทน ( Bash (กับ zcat) 402 ) และคุณสามารถแก้ไขคำตอบของคุณ (เพิ่งต่อ<!>ท้ายโพสต์) ฉันต้องการลบ downvote> :(
Erik the Outgolfer

@ EʀɪᴋᴛʜᴇGᴏʟғᴇʀ zcatไม่ได้มาจาก coreutils gzipจะมาพร้อมกับ ในหลาย ๆ ระบบเป็นสคริปต์ที่มีการเรียกgzip -cd "$@"... BTW ฉันแก้ไขใน Bash + zcat, 402 ไบต์
Hastur

ดีลบคะแนนโหวตแล้ว โหวตเป็นของฉัน
Erik the Outgolfer

2

F #, 591 589 579 576 573 567 552 ไบต์

นี่เป็นครั้งแรกที่ฉันลองเล่นรหัสที่มีภาษาที่ฉันชอบ ฉันเดิมพันว่ามีบางวิธีที่อาจทำให้สั้นลง ทำงานใน FSI ดังนั้นไม่จำเป็นต้องใช้. NET boilerplate

แก้ไข: โกน 10 \rไบต์โดยการเอา มันยังคงแสดงผลได้ดีใน VSCode ลองคิดดู ตัดอีกสามไบต์ด้วยองค์ประกอบของฟังก์ชั่นและอีกสามตัวด้วยแลมบ์ดาแล้วหกอันด้วยลูปสำหรับแทน Seq.iter (กำจัดแลมบ์ดา) ในที่สุด 15 ไบต์ถูกตัดโดยจัดเรียงใหม่a(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
ยินดีต้อนรับสู่ PPCG คำตอบที่ดี!
แมว

ฉันรู้ว่า #F เป็น. net languange แต่ฉันคิดว่าสำหรับจุดประสงค์ของการท้าทายนี้คุณสามารถแทนที่ "\ r \ n" ด้วยวิธีง่ายๆ "\ n" เนื่องจากแนวคิดเหมือนกันและประหยัด bytes
Vale

@ หุบเขาขอบคุณ บันทึก 10 ไบต์
asibahi

1
ไม่มีผลกับการนับ แต่คุณสะกดคำว่า "Hippopotamus" ผิด
GentlePurpleRain

@GentlePurpleRain Heh ฉันคิดว่าฉันค้นหาการสะกดทั้งหมด ฉันจะซ่อมมัน.
asibahi

1

Emacs Lisp, 576 (621) ไบต์

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

เมื่อแก้ไข "ช้าง" มันใช้เวลานานกว่าเล็กน้อย:

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

regex ของคุณอาจสั้นลง^[aeiou]ไป^eเป็นใช่ไหม
owacoder

สำหรับช้างใช่ แต่ถ้ามีสัตว์อื่นเพิ่มเข้ามามันจะต้องเปลี่ยน ด้วย 600 ไบต์แล้ว 6 ไบต์ไม่เจ็บมาก
ท่านลอร์ด Yuuma

1

C, 596 ไบต์

โทรf()โดยไม่มีข้อโต้แย้งใด ๆ นี่ไม่ใช่กอล์ฟที่ดีที่สุดในโลกฉันอาจจะหดมันมากกว่านี้

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

ลองใช้กับ ideone


คุณสามารถเพิ่มลิงค์ไปยัง ideone ได้หรือไม่?
aloisdg พูดว่า Reinstate Monica

2
เพิ่มลิงค์ ideone
owacoder

a[99][99]-> **a(-6) คุณไม่สามารถเรียกโดยไม่ขัดแย้งที่นี่คุณต้องf() nแทนที่ด้วยf(n){ f{n;อีก -1 ที่นี่ นอกจากf()นี้ตอนนี้เรียกได้ว่า
Erik the Outgolfer

@owacoder ทำไมล่ะ **aหมายถึงอาร์เรย์ของอาร์เรย์อักขระ (หรือตัวชี้ตัวชี้อักขระ) และสำหรับฉันมันใช้งานได้เสมอ (gcc 4.8) คุณใช้คอมไพเลอร์อะไร? หากคุณไม่ได้ใช้ gcc คุณต้องระบุ หากคุณใช้ gcc เป็นค่าเริ่มต้น
Erik the Outgolfer

@owacoder ไม่! มันทำให้อาร์เรย์ที่เหมาะกับ 98 สายยาว 98! และคุณไม่ควรเรียกลิงค์ ideone ของคุณว่า "ลองออนไลน์!" การกอล์ฟแทนที่ด้วยa[99][99] 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 ไบต์

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

โดยพื้นฐานแล้วมีเพียงลูปที่สร้างสองสายขึ้นมาซึ่งแสดงถึงสองส่วนของเรื่องราว การ'n'[:'el'in n]จัดการ "an" สำหรับช้าง การ[44:-30]สับชั้นนำ "ฉันได้ยินเสียงหมีขั้วโลกคำรามอยู่ในหูของฉัน" และเสียง "ผิวปากเหมือนผู้ดูแลสัตว์" ต่อท้าย


1

QB64 (QuickBASIC) 581 ไบต์

รหัสจะขยายออกไปเล็กน้อยเมื่อคุณส่งไปที่ล่าม แต่ไฟล์ต้นฉบับนี้ใช้ได้สำหรับการโหลดตามที่เป็นอยู่ หากคุณต้องการที่จะเห็นผลลัพธ์ทั้งหมดก่อนที่มันจะเลื่อนผ่านคุณจะต้องเพิ่มwidth 80,46คำสั่งไปที่จุดเริ่มต้น

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
ฉันรู้ว่านี้ครับปลาย แต่ผมคิดว่าคุณสามารถบันทึกไบต์บางอย่างโดยใช้GOSUB/ RETURNแทนCALL/ /SUB END SUBนอกจากนี้คุณยังสามารถใส่เครื่องหมายคำพูดในDATAรายการทั้งหมดที่ไม่มีช่องว่างได้ สุดท้ายเนื่องจากมีเพียงหนึ่งในสัตว์ที่เริ่มต้นด้วยสระA$="Elephant"เป็นจริง 1 LEFT$(A$,1)="E"ไบต์สั้นกว่า ใช้งานได้ดีRESTOREBTW!
DLosc

1

LUA 535 ไบต์

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

ลองออนไลน์


1

PHP, 366 ไบต์

คำตอบที่ขี้เกียจ แต่ทำไมถึงต้องเขียนตัวขยายการบีบอัดที่กำหนดเองเมื่อ gzip ใช้งานได้

ฐานสิบหกของรหัส PHP (สามารถบันทึกด้วย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.');

ฉันใช้การวนซ้ำของzopfliเพื่อแปลงข้อความต้นฉบับเป็น 349 ไบต์ของข้อมูลที่ถูกบีบอัดหลีกเลี่ยงอักขระ 'ซึ่งจะต้องมีเครื่องหมายแบ็กสแลช


1

Japt , 308 303 299 295 288 280 294 289 286 ไบต์

ประกอบด้วยพวงของ unprintables ตามลิงค์ด้านล่างเพื่อดูพวกเขา

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

ทดสอบมัน

+14 bytes 'ฉันจะเพิ่มวอลรัส'; จะต้องใช้รหัสผ่านอีกครั้งในสัปดาห์หน้าเพื่อดูว่าฉันจะได้รับไบต์เหล่านั้นกลับมาหรือไม่


1

Powershell 921 889 886 898 Bytes

มันไม่สมบูรณ์แบบ แต่จะช่วยประหยัด 300 ไบต์ :)

แก้ไข: ขอบคุณ Jonathan Frech ฉันบันทึก 32 ไบต์ และขอขอบคุณ Veskah สำหรับการแก้ไขผลลัพธ์

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

จะไม่ใช้อักขระ ASCII มาตรฐาน 7 บิตแทนที่จะเป็นöไบต์ที่มีประสิทธิภาพมากกว่าหรือไม่
Jonathan Frech

นอกจากนี้ฉันคิดว่ามีช่องว่างที่ไม่จำเป็นในบรรทัดแรกของคุณพร้อมกับชื่อฟังก์ชันยาว
Jonathan Frech

ขอบคุณสำหรับคำแนะนำ :)! (ฉันใช้Öเพียงเพราะฉันสอนแล้วใช้สัญญาณ ASCII ที่ใช้ประโยชน์ได้แล้ว XD)
เพิ่ม -TheNewOne

อักขระöนั้นแสดงโดยใช้ไบต์เดียวในบางเพจรหัส UTF-8 ต้องใช้สองไบต์สำหรับอักขระนี้
Jonathan Frech

ผลลัพธ์ของคุณค่อนข้างปิด บทกวีสุดท้ายซ้ำรอยหมีขั้วโลกซึ่งทำให้ทุกสิ่งทุกอย่างเป็นหนึ่งเดียวและคุณรวมถึงผิวปากที่ไม่ต้องการ มันยังขาดจุดไข่ปลา นอกจากนี้ยังเขียนan elephantนอกจากนี้ยังมีการแบ่งสายพิเศษระหว่างบทก่อนหน้านี้ที่สามารถ axed "n"โดยการเอา
Veskah

0

clojure 526 ไบต์

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

นี่คือความพยายามครั้งแรกของฉัน ต้องรักการจัดรูปแบบและอ่านไม่ได้ว่ามันเป็นอย่างไร หวังว่าคำเตือนจากuse 'clojure.stringจะเป็นที่ยอมรับ

ลองออนไลน์

รหัสที่จัดรูปแบบ:

(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 หรือ 516 ไบต์

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

แต่ต้องมีเพียง 516 ไบต์เพื่อให้ได้ผลลัพธ์เป็น JShell

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

มันทำให้การส่งออกที่ไม่ถูกต้องเกี่ยวกับช่องว่าง, แท็บตัวพิมพ์เล็กและanVS a.. ฉันได้คงที่และแข็งแรงเล่นกอล์ฟไปยัง507 ไบต์
เควิน Cruijssen

@KevinCruijssen รหัสของคุณไม่มี "ing" ของ "ฉันได้ยิน ... ... ** ** กำลัง ** อยู่ในหูของฉัน" นอกจากนี้ยังมีโอกาสมาก golfable โดยเริ่มต้นiด้วยการ0ขึ้นไป10เปลี่ยนb=a[i-1]กับb=a[i++]และลบที่เพิ่มขึ้นที่มันเป็นอยู่ในปัจจุบัน
Olivier Grégoire

0

Swift2, 519 ไบต์

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

การใช้ข้อตกลงที่โซลูชันไม่สามารถเรียกใช้งานได้จะสร้างเอาต์พุตเพียงบางฟังก์ชันเท่านั้นซึ่งสามารถย่อให้เหลือเพียง 479 ไบต์ เอาต์พุตอยู่ใน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 (เสียงดังกราว) , 552 ไบต์

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

ลองออนไลน์!



0

Perl 5 , 413 ไบต์

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

ลองออนไลน์!


0

JavaScript, 424 ไบต์

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

ทดสอบมัน


0

Pyth, 342 ไบต์

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.

ลองออนไลน์ได้ที่นี่

คำอธิบายที่จะปฏิบัติตาม

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.