Gấu Bắc cực, Gấu Bắc cực, bạn nghe thấy gì?


50

Văn bản của cuốn sách thiếu nhi Gấu Bắc cực, Gấu Bắc cực, Bạn nghe gì? có hoa văn rất đơn giản. Bạn có thể sử dụng văn bản để dạy các khái niệm lập trình giới thiệu.

Con trai tôi đã nhanh chóng chán nản với ý tưởng này, vì vậy tôi quyết định chơi một số môn golf với nó.

Các thách thức

Trong ngôn ngữ lập trình bạn chọn, hãy viết chương trình nhỏ nhất có thể sẽ in văn bản sau. Đầu ra phải khớp chính xác, bao gồm cả trường hợp, khoảng cách và dấu chấm câu.

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
độ phức tạp của kolmogorov sẽ là một thẻ tốt cho việc này
charredgrass

3
Là chữ hoa BCtrong Polar BearBoa Constrictorcần thiết? (Trong Batch, chi phí này cho tôi 10% số byte của tôi ...)
Neil

Việc gửi một hàm băm và bruteforcing giải pháp với một bộ hạn chế được phép? : D
polym

4
Đây là một thử thách đầu tiên rất hay!
Alex A.

1
Tôi sẽ +1 nhưng bạn đang ở mức 42 điểm, và tôi là ai để làm phiền các cách của thiên hà?
FantaC

Câu trả lời:


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

Dùng thử trực tuyến

Giải trình

•4i;kV_†©:š×Îj€Yå—‚‘%˜ESδþ¤çÑ9¶‹{Å€7¾à{Ì®qA•
Chuỗi đóng gói có chứa âm thanh GROWL0ROAR0SNORT0FLUT0BRAY0HISS0TRUMPET0SNARL0YELP0BELLOW0WHISTL

35B0¡…ing«lV
Giải nén, chia thành 0, thêm "ing" vào mỗi từ, chuyển đổi thành thấp hơn và lưu trữ trong biến Y

•7ü[¿‘¢wÀ¶à-‚¤î„jHâ™ÐJ'µ‡ÀÂý6›ü‚š¸€%NtÅýµL›fU¥ì€€uîT¡›Ÿ{!œ>'Ì&ý§¨Ü?é>•
Chuỗi đóng gói có chứa các động vật POLAR1BEAR0LION0HIPPOPOTAMUS0FLAMINGO0ZEBRA0BOA1CONSTRICTOR0ELEPHANT0LEOPARD0PEACOCK0WALRUS0ZOOKEEPER

36B1ð:0¡™
Giải nén, thay thế 1 bằng khoảng trắng, tách thành 0 và chuyển đổi sang trường hợp tiêu đề

D©„, «D‚ø
Sao y, lưu để đăng ký để sử dụng sau, thêm "," vào một bản sao, sao chép đó và zip.

“€À€·€î—«?“¶«¸
Từ điển "bạn nghe thấy gì?", Theo sau là một dòng mới, được thêm vào một danh sách mới

‘€JU
Sản phẩm của Cartesian gồm danh sách "Động vật, Động vật" và "bạn nghe thấy gì? \ N", làm phẳng và tham gia và lưu trữ nó trong biến X. Danh sách các chuỗi có dạng "Động vật, Động vật, bạn nghe thấy gì? ".

¦“„¾“‚˜l
Lấy danh sách động vật còn lại từ trước, loại bỏ người quản lý vườn thú và thêm trẻ em, chuyển đổi thành chữ thường.

v
Đối với mỗi động vật:

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

Nhấn "I Hear0 vào tai tôi.", Tách thành 0 và đẩy thành các chuỗi riêng biệt.

yð«Y¦õ‚˜Nè«
Đẩy "âm thanh động vật" với trẻ em không có âm thanh

sr„ a
Đẩy "a" vào đúng vị trí

N5Qi'n«}
Nếu con vật là "Voi" thêm "n"

ð«
Thêm không gian.

N9›ijrj¨ðs«…...«}
Nếu động vật là trẻ em, hãy xóa không gian và thêm "..."

srJˆ}
Tham gia câu "Tôi nghe thấy một (n) âm thanh động vật trong tai của tôi." (cũng như trẻ em), lưu trữ trong mảng toàn cầu và vòng kết thúc

X¯‚ø€J
Lấy các dòng đầu tiên, zip và tham gia sản xuất phần đầu tiên của vần điệu "Động vật, Động vật, bạn nghe thấy gì? \ Tôi nghe thấy một âm thanh động vật (n) trong tai tôi."

vy,¶?}
In theo dòng mới.

…...DU?
In "..." và lưu một bản sao trong biến X.

Y¨v
Đối với mỗi âm thanh ngoại trừ "huýt sáo":

N__i ',} Đối với mỗi dòng ngoại trừ dòng đầu tiên, hãy bắt đầu bằng ", \ n" (làm dấu phẩy đi trên dòng trước)

yð“€è€…“
Đẩy âm thanh, không gian và "như một"

N6Qi'n«}
Nếu Voi thêm "n".

ð®NèJl?}X,
Lấy con vật được lưu trong sổ đăng ký, tham gia mọi thứ, in và kết thúc vòng lặp theo sau "...". Điều này tạo ra các dòng "âm thanh như một (n) động vật".

“€Š's€À I—«.“?
In chuỗi từ điển "đó là những gì tôi nghe thấy."


30
Đây là triệu tập Cthulhu.
aloisdg nói Phục hồi lại

6
Tôi không thể thấy mã kết thúc ở đâu và dữ liệu được đóng gói bắt đầu.
Adám

4
@ Adám tôi biết. Nó trông rất giống như vô nghĩa :) Tôi sẽ thêm một lời giải thích cuối cùng sẽ hy vọng làm cho nó rõ ràng hơn. Tôi có thể muốn thử và chơi golf thêm một số đầu tiên mặc dù.
Emigna

28
Đây có lẽ là cách cư sĩ tưởng tượng mã.
noɥʇʎԀʎzɐɹƆ

1
Tôi không biết mình vừa đọc gì ...
Nico

9

PHP, 420 414 434 414 412 byte

gọi từ CLI hoặc thêm vào <pre>đầu ra.

$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.";
  • một vài thông báo cho các hằng số không xác định; Các dữ liệu PHP ẩn được truyền vào chuỗi ký tự bằng chữ một lần nữa
  • thêm "n" cho "một con voi" mất 20 byte ... hmpf.
  • lấy lại 20 byte bằng cách sắp xếp lại thứ :)

phá vỡ

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

Khá là một thử thách thú vị!

Cảm ơn Downgoat đã tiết kiệm cho tôi 27 tấn byte bằng cách sử dụng atobvà Titus cho 4 byte!

Ung dung:

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 Với mục đích chơi gôn, bạn được phép đặt các biến toàn cục. (Đừng làm điều này trong một hàm đệ quy!)
Neil

1
Mã của bạn không hoạt động, tôi giả sử ngăn xếp trao đổi một số chữ cái trong mã base64 của bạn. Sau khi chia tách, tôi nhận được ["ujA66Gq87O3N + W63NutrLOHLM7a7pqXrc7J2q", "", "bellow", "why2U ="].
lolesque

1
Xác định c=console.log;lúc đầu, sau đó sử dụng c () để lưu 6 byte. Hoặc chỉ lưu chuỗi trong một biến và in nó một lần với alert ().
lolesque

1
@lolesque Các c=console.logkhông làm việc vì logphải có một thissố consolehoặc nó tạo ra một lỗi. (Trừ khi nó không có trong một số trình duyệt / môi trường?) Ý tưởng để đặt tất cả trong một chuỗi nghe có vẻ tốt, mặc dù vậy
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:.

Hãy thử trực tuyến!

608 byte ít hơn thông điệp thực tế (1120), con số này chưa bằng một nửa (560)!


6

APL Dyalog , 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­·Õ}ýÚ'

Để dễ đọc: ⎕UCS¯2(219⌶)¯128+⎕UCS'...'

⎕UCS '... 'chuyển đổi chuỗi thành điểm mã Unicode

¯128+ trừ 128 để lấy -128 n 127

¯2(219⌶) un-zlib

⎕UCS chuyển đổi các điểm mã Unicode thành chuỗi

Chuỗi nguồn là 365 byte điểm mã zlib'ed sau đây:

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

(Tín dụng cho 13 byte được lưu sẽ được chuyển đến Gábor Fekete và thêm 4 byte đã được Taylor Lopez lưu lại.)

Vì vậy, bạn có thể đoán tôi sẽ sử dụng một ngôn ngữ như Python làm công cụ giảng dạy. Đây là chương trình trước khi tôi bắt đầu chơi 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
Bạn có thể sử dụng cú pháp giải nén để tiết kiệm một số byte: thay đổi a=A[i]để a,b=A[i]và sau đó bạn có thể viết abthay a[0]a[1]. Điều này sẽ tiết kiệm 12 byte.
Gábor Fekete

Thay đổi 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?")sẽ tiết kiệm được hơn 2 byte.
Gábor Fekete

Câu hỏi chung về golf. Nơi bạn có len(A), vì mục đích này Thách thức là cách đơn giản để tạo ra sản lượng tĩnh (không đối phó với đầu vào động), là nó có thể chấp nhận sử dụng một mã hóa cứng 11byte thay vì để tiết kiệm?
Taylor Lopez

1
@TaylorLopez chắc chắn, nói chung đó là một thực tế tồi, nhưng đối với việc chơi golf với mục tiêu là giảm thiểu mã, tôi thấy không có lý do tại sao không.
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"

Hãy thử nó ở đây - permalink


Bạn có thể chơi golf ingkhông? Tôi phát điên khi thấy PHP đánh bại Pyth.
Tít

1
Các đầu ra mã a elephant.
Antti29

Tất cả các vấn đề (bao gồm cả việc PHP đánh bại Pyth) đều được sửa!
KoreanwGlass

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 trong đó đầu ra là a string.

Giải trình

  1. Ban đầu tlà một chuỗi với định dạng noise,animal,noise,animal,...và phân chia bởi ,.
  2. Khai báo rs. rlà phần đầu tiên của bài hát và sphần cuối cùng. znđang ở đây để xử lý Elephant.
  3. Đi bộ tvà xây dựng rstrong cùng một vòng lặp. Ternary ternary + công cụ nội suy.
  4. Trả lại phần đầu tiên của bài hát và phần cuối cùng.

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

Hãy thử trực tuyến!


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

Liên kết với R-Fiddle để thử mã

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]))
  • Di chuyển childrenra khỏi vectơ avà thoát khỏi mục tương ứng trong dvectơ để lưu 8 byte
  • Việc dọn dẹp và loại bỏ các mục con trở nên dư thừa bằng cách di chuyển children, đã lưu thêm 27 byte.
  • Toàn cầu hóa tolowerchức năng, lưu 5 byte
  • Thay thế writeLinesvới catvà định dạng lại một cách thích hợp (bổ sung \nở những nơi) lưu 3 byte
  • Nhận ra rằng nếu dchỉ có 7 phần tử không phải là 11 phần tử đầy đủ, R sẽ chỉ lặp lại để bắt đầu lại. Khi 11 <14 thì điều này làm việc cho chúng tôi. Đã lưu 9 byte.
  • đăng ký toàn cầu hóa, lưu 13 byte.
  • catchức năng đã được tách với " ", thay đổi trở lại writeLines. Đã thêm 4 byte ( catcó thể được sửa bằng cách thêm ,sep=""vào hàm)

Chào mừng đến với PPCG! Đây là một câu trả lời đầu tiên tốt đẹp. Có cách nào để thử mã của bạn trực tuyến?
aloisdg nói Phục hồi lại

1
Hãy thử r-fiddle.org/#/fiddle?id=5pqkHPyL&version=1 mặc dù tôi phải thêm một ký tự (dấu gạch chéo ngược) để đọc dấu nháy đơn trong "đó" chính xác
Robert Maidstone

Cảm ơn bạn. Trong R-Fiddle, tôi thấy rằng bạn có ' 'trước mỗi mục asau "Polar Bear". Nó có bình thường không?
aloisdg nói Phục hồi Monica

Tôi không hoàn toàn chắc chắn về ý của bạn. Bạn có nghĩa là không gian trong phần đầu tiên của bài thơ? Như trong không gian trước "Sư tử" đây? "Gấu Bắc cực, Gấu Bắc cực ...... \ nTôi nghe thấy một con sư tử, Sư tử ..... \ nTôi nghe thấy một ..." Tôi chưa nhận thấy điều này trước đây. Nó đến từ chức năng mèo phân tách bằng cách sử dụng một khoảng trắng. Điều này có thể được khắc phục bằng cách thêm sep = "" vào hàm, tuy nhiên sau đó sử dụng writeLines trở nên thích hợp hơn. (Tôi đã thay đổi mã trở lại để viếtLines)
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]);}}

Đã có một thời gian tuyệt vời để thực hiện thử thách này với đồng nghiệp của tôi! Cảm ơn ý tưởng.

Định dạng:

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: Cảm ơn bạn vì những lời khuyên tuyệt vời và tuyệt vời của bạn, họ đã giúp đỡ rất nhiều và tôi sẽ cố gắng để những người khác làm việc tốt.


1
Xóa tất cả các khoảng trắng không cần thiết, bạn có thể sử dụng new[]thay thế o. new string[]Ngoài ra, bạn có thể biến điều này thành một chức năng ẩn danh như trong câu trả lời của @ aloisdg
TheLethalCoder

Chào mừng đến với PPCG! Ý tưởng tốt trong câu trả lời này! Bạn có thể tìm thấy một số nguồn cảm hứng để cải thiện nó trong các mẹo để chơi gôn trong trang C # . Tiếp tục đi!
aloisdg nói Phục hồi lại

1
Bạn rơi vào a elephantbẫy (tôi cũng vậy). Đó là an elephant;)
aloisdg nói Phục hồi

Lấy "ing" của bạn trong mảng động từ và di chuyển nó đến đầu ra để tiết kiệm hơn.
GuitarPicker

3

Mẻ, 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

Bởi vì %*điều gần nhất là Batch có một mảng. Nếu tôi có thể sử dụng Polar bearBoa constrictorsau đó tôi có thể tiết kiệm 10% ... nhưng tôi vẫn còn hơn 50% văn bản gốc ...

Chỉnh sửa: Saved 3 byte bằng cách thiết lập e=echo(với một (thay vì một không gian, cho phép tôi sử dụng nó để echo dòng trống, mặc dù tôi sau đó phải viết ra @echo offđầy đủ.


2

Bash + zcat, 402 byte

Chỉ là một trò đùa:
một kịch bản bash 2 dòng tự đuôi và chuyển dòng thứ hai sang zcat.
Dòng thứ hai là văn bản được nén.

Làm thế nào để chuẩn bị nó: tất cả các văn bản trong một tập tin a. Sau đó

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

Các tập tin được tạo ra khi được thực thi trả về văn bản bắt đầu, 404 Byte.


Bạn có thể gửi mã thực tế? 404 byte không phải nhiều (tức là bạn có thể đăng nó.)
Erik the Outgolfer 19/07/2016

@ EʀɪᴋᴛʜᴇGᴏʟғᴇʀ Mã chỉ được tail -n+2 \$0|zcat;exittheo sau bởi một dòng mới và chuỗi nhị phân 379 byte (phiên bản được nén của văn bản được đề xuất). Bạn có biết lý do của downvote? (đó là một quy trình bán chuẩn cho bash tự cài đặt tập lệnh với kho lưu trữ bên trong, IMHO không quá khác biệt so với việc sử dụng thư viện trong c ++).
Hastur

Có vẻ như bạn sử dụng coreutils ( zcat), vì vậy tiêu đề của bạn phải là ( Bash + coreutils, 402 byte ) thay vì ( Bash (với zcat) 402 ). Và, bạn có thể chỉnh sửa câu trả lời của bạn (chỉ cần thêm <!>vào cuối bài viết của bạn)? Tôi muốn xóa downvote> :(
Erik the Outgolfer 19/07/2016

@ EʀɪᴋᴛʜᴇGᴏʟғᴇʀ zcatkhông phải từ coreutils, nó đi kèm gzip. Trong nhiều hệ thống là một tập lệnh với lệnh gọi đó gzip -cd "$@"... BTW tôi đã sửa đổi trong Bash + zcat, 402 byte.
Hastur

Tốt, downvote loại bỏ. Upvote là của tôi.
Erik the Outgolfer 19/07/2016

2

F #, 591 589 579 576 573 567 552 byte

Đây là lần thử đầu tiên của tôi ở môn đánh gôn với ngôn ngữ tôi thích. Tôi cá là có một số cách điều này có thể được thực hiện ngắn hơn. Chạy trong FSI, vì vậy không cần phải có bản tóm tắt .NET.

Chỉnh sửa: Cạo 10 byte bằng cách xóa \r. Nó vẫn hiển thị tốt trong VSCode vì vậy hãy đi. Cắt ba byte khác với thành phần chức năng và ba byte khác bằng lambda, sau đó sáu với vòng lặp for thay vì Seq.iter (loại bỏ lambda). Cuối cùng, 15 byte đã được cắt bằng cách sắp xếp lạia(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
Chào mừng bạn đến với PPCG, câu trả lời tốt đẹp!
con mèo

Tôi biết #F là một languange .net, nhưng tôi nghĩ với mục đích của thử thách này, bạn có thể thay thế "\ r \ n" bằng một "\ n" đơn giản, vì khái niệm này giống nhau và nó tiết kiệm byte
Vale

@Vale cảm ơn. đã lưu 10 byte
asibahi

1
Không ảnh hưởng đến số lượng, nhưng bạn đã đánh vần "Hippopotamus" sai.
GentlePurpleRain

@GentlePurpleRain Heh. Tôi nghĩ rằng tôi đã tìm tất cả các cách viết. Tôi sẽ sửa nó.
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."))))

Khi sửa "một con voi", sẽ mất nhiều thời gian hơn:

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

Ung dung:

(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 của bạn có thể được rút ngắn từ ^[aeiou]đến ^e, không thể không?
owacoder

Đối với con voi thì có, nhưng nếu những con vật khác được thêm vào thì nó sẽ cần phải thay đổi. Với 600 byte đã có, 6 byte không ảnh hưởng nhiều.
Chúa Yuuma

1

C, 596 byte

Gọi f()mà không có bất kỳ đối số. Đây không phải là golf tốt nhất trên thế giới, tôi có thể thu nhỏ nó nhiều hơn.

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

Hãy thử nó trên ideone.


Bạn có thể thêm một liên kết đến ideone?
aloisdg nói Phục hồi lại

2
Đã thêm liên kết ideone.
owacoder

a[99][99]-> **a(-6). Bạn không thể gọi f()mà không có đối số ở đây, bạn cần một n. Thay thế f(n){bằng f{n;. -1 khác ở đây. Ngoài ra, f()bây giờ có thể gọi được.
Erik the Outgolfer 19/07/2016

@owacoder Sao rồi? **acó nghĩa là một mảng các mảng ký tự (hoặc một con trỏ con trỏ ký tự) và đối với tôi, nó luôn hoạt động (gcc 4.8). Bạn sử dụng trình biên dịch nào? Nếu bạn không sử dụng gcc, bạn phải chỉ định nó. Nếu bạn sử dụng gcc, đó là một mặc định.
Erik the Outgolfer

@owacoder Không! Nó tạo ra một mảng phù hợp với 98 chuỗi có độ dài 98! Và bạn chắc chắn không nên gọi liên kết ideone của mình "Hãy thử trực tuyến!" Để chơi golf, thay thế a[99][99]bằng a[<how many elements do I modify?>+1][<what is the maximum length of any string in here?>+1].
Erik the Outgolfer 19/07/2016

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

vô dụng:

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

Về cơ bản, chỉ là một vòng lặp xây dựng hai chuỗi đại diện cho hai phần của câu chuyện. Các 'n'[:'el'in n]xử lý các "an" cho voi. Tiếng [44:-30]sột soạt dẫn đầu "Tôi nghe thấy một con gấu bắc cực gầm gừ bên tai" và tiếng "huýt sáo như một người làm vườn thú".


1

QB64 (QuickBASIC), 581 byte

Mã mở rộng một chút khi bạn ném nó vào trình thông dịch, nhưng tệp nguồn này là hợp lệ để tải nguyên trạng. Nếu bạn muốn xem toàn bộ đầu ra trước khi nó cuộn qua, thì bạn sẽ cần thêm một width 80,46câu lệnh vào đầu.

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
Tôi biết điều này hơi muộn, nhưng: Tôi nghĩ bạn có thể lưu một số byte bằng cách sử dụng GOSUB/ RETURNthay vì CALL/ SUB/ END SUB. Ngoài ra, bạn có thể thả dấu ngoặc kép DATAcho tất cả các mục không có khoảng trắng trong đó. Cuối cùng, vì chỉ có một động vật bắt đầu bằng nguyên âm, A$="Elephant"thực tế ngắn hơn 1 byte so với LEFT$(A$,1)="E". Sử dụng tốt RESTORE, BTW!
DLosc

1

LUA 535 byte

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

vô dụng:

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

Dùng thử trực tuyến


1

PHP, 366 byte

Câu trả lời lười biếng, nhưng tại sao lại viết một bộ giải nén tùy chỉnh khi gzip có sẵn?

Kết xuất hex của mã PHP (có thể được lưu với 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.');

Tôi đã sử dụng một vài lần lặp zopfli để chuyển đổi văn bản nguồn thành 349 byte dữ liệu nén, tránh ký tự 'mà nếu không phải thoát bằng dấu gạch chéo ngược.


1

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

Chứa một loạt các dấu vết không thể in được; theo liên kết dưới đây để xem chúng.

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

Kiểm tra nó

+14 byte 'vì tôi đã làm hỏng đường của con hải mã'; sẽ cần phải vượt qua nó vào tuần tới để xem liệu tôi có thể lấy lại bất kỳ byte nào không.


1

Powershell 921 889 886 898 byte

nó không hoàn hảo, nhưng nó tiết kiệm được 300 byte :)

EDIT: Cảm ơn Jonathan Frech, tôi đã tiết kiệm được 32 Byte. Và cảm ơn bạn Veskah vì đã sửa lỗi đầu ra.

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

Sẽ không sử dụng ký tự ASCII 7 bit tiêu chuẩn thay vì öhiệu quả byte hơn?
Jonathan Frech

Hơn nữa, tôi nghĩ rằng có một số khoảng trắng thừa trong dòng đầu tiên của bạn, cùng với một tên hàm dài.
Jonathan Frech

Cảm ơn bạn đã gợi ý :)! (Tôi đã sử dụng Ö chỉ vì được dạy tôi đã sử dụng tất cả các dấu hiệu ASCII có thể sử dụng XD)
Add-TheNewOne

Ký tự öchỉ được biểu diễn bằng một byte đơn trong một số bộ mã, UTF-8 yêu cầu hai byte cho ký tự này.
Jonathan Frech

Đầu ra của bạn là một chút tắt. Đoạn thơ cuối lặp đi lặp lại gấu bắc cực khiến mọi thứ biến mất và bạn bao gồm cả tiếng huýt sáo không cần thiết. Nó cũng thiếu một hình elip. Nó cũng viết an elephantNgoài ra còn có một ngắt dòng bổ sung giữa các khổ thơ trước có thể bị cắt ngang bằng cách loại bỏ "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")))

Đây là nỗ lực ban đầu của tôi. Phải yêu định dạng và làm thế nào nó không thể đọc được. Hy vọng các cảnh báo từ use 'clojure.stringđược chấp nhận.

Hãy thử trực tuyến.

Mã định dạng:

(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 hoặc 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;}

Nhưng chỉ cần 516 byte để có kết quả trong 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."

Nó cung cấp đầu ra không chính xác về khoảng trắng, tab, chữ thường và anso với a.. Tôi đã sửa và đánh nó thành 507 byte
Kevin Cruijssen 14/2/18

@KevinCruijssen mã của bạn bị thiếu "ing" của "Tôi nghe thấy một ... ... ** ing ** trong tai tôi". Ngoài ra, rất có khả năng golfable bằng cách bắt đầu ivới 0lên đến 10thay đổi b=a[i-1]với b=a[i++]và loại bỏ các increment nơi nó đang là.
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")

Sử dụng quy ước rằng một giải pháp không thể thực thi được, chỉ tạo ra đầu ra thông qua một số chức năng, điều này có thể được rút ngắn xuống còn 479 Byte. Đầu ra là 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 (tiếng kêu) , 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.");}

Hãy thử trực tuyến!



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

Hãy thử trực tuyến!


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

Kiểm tra nó


0

Bình thường, 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.

Hãy thử trực tuyến tại đây .

Giải thích để làm theo.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.