북극곰, 북극곰, 무엇을 듣습니까?


50

어린이 도서의 텍스트 북극곰, 북극곰, 무엇을 듣습니까? 매우 간단한 패턴이 있습니다. 이 텍스트를 사용하여 입문 프로그래밍 개념을 배울 수 있습니다.

내 아들은이 아이디어에 빨리 지루했기 때문에 대신 골프를하기로 결정했습니다.

도전

선택한 프로그래밍 언어로 다음 텍스트를 인쇄 할 수있는 가장 작은 프로그램을 작성하십시오. 대소 문자, 공백 및 구두점을 포함하여 출력이 정확하게 일치해야합니다.

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-complexity 는 이것에 대한 좋은 태그가 될 것입니다
charredgrass

3
는 대문자 BCPolar BearBoa Constrictor필요? (배치에서 바이트 수의 10 %가 소요됩니다 ...)
Neil

제한된 세트로 해시를 제출하고 솔루션을 무차별 적으로 허용합니까? : D
polym

4
이것은 매우 좋은 첫 도전입니다!
Alex A.

1
나는 +1하지만 당신은 42 개의 공감대에 있으며, 나는 은하계의 길을 방해하는 사람은 누구입니까?
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‚ø
복제하고 나중에 사용하기 위해 등록하기 위해 저장 한 다음 ","를 하나의 사본에 추가하고 복제하여 압축하십시오.

“€À€·€î—«?“¶«¸
사전 단어 "무슨 소리가 들리니?"다음에 새 줄이 추가되어 새 목록에 추가되었습니다.

‘€JU
"동물, 동물"및 "무엇을 듣습니까? \ n"목록의 카티 전 곱을 병합하여 변수 X에 저장합니다. "동물, 동물, 무엇을 듣습니까? n"형식의 문자열 목록을 생성합니다. ".

¦“„¾“‚˜l
이전에 남은 동물 목록을 가져 와서 사육사를 제거하고 어린이를 추가하고 소문자로 변환하십시오.

v
각 동물에 대해 :

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

"귀에 0이 들립니다."를 누르고 0으로 쪼개고 별도의 줄로 밉니다.

yð«Y¦õ‚˜Nè«
소리가없는 아이들과 함께 "동물 소리"를 누르십시오

sr„ a
올바른 위치에 "a"를 누르십시오

N5Qi'n«}
동물이 "코끼리"인 경우 "n"을 추가하십시오

ð«
공간을 추가하십시오.

N9›ijrj¨ðs«…...«}
동물이 어린이 인 경우 공간을 제거하고 "..."를 추가하십시오.

srJˆ}
"귀에 동물 소리가 들립니다." (자식뿐만 아니라) 전역 배열 및 종료 루프에 저장하십시오.

X¯‚ø€J
첫 번째 줄을 꺼내서 압축하여 운율의 첫 번째 부분 인 "동물, 동물, 무엇을 듣습니까? \ n 귀에서 동물 소리가 들립니다."

vy,¶?}
인쇄 후 줄 바꿈.

…...DU?
"..."를 인쇄하고 사본을 변수 X에 저장하십시오.

Y¨v
"휘파람 소리"를 제외한 각 소리에 대해 :

N__i ', ¶} 첫 번째 행을 제외한 각 행에 대해 ", \ n"으로 시작하십시오 (쉼표는 이전 행으로 이동)

yð“€è€…“
소리, 공간 및 "같은"

N6Qi'n«}
코끼리가 "n"을 추가하면.

ð®NèJl?}X,
레지스터에 저장된 동물을 검색하고 모든 것을 결합하고 인쇄하고 루프를 종료 한 다음 "..." 이것은 "(n) 동물과 같은 소리"라인을 생성합니다.

“€Š's€À I—«.“?
인쇄 사전 문자열 "그게 들려요."


30
이것은 크 툴후를 소환합니다.
aloisdg는 Reinstate Monica

6
코드가 끝나고 압축 된 데이터가 시작되는 위치를 볼 수 없습니다.
Adám

4
@ Adám 알고 있습니다. 그것은 횡설수설처럼 보입니다 :) 결국에는 더 명확하게 설명을 추가 할 것입니다. 그래도 먼저 시도하고 골프를하고 싶을 수도 있습니다.
Emigna

28
이것은 아마도 평신도가 코드를 상상하는 방법 일 것입니다.
noɥʇʎԀʎzɐɹƆ

1
내가 무엇을 읽었는지 전혀 모른다 ...
Nico

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"을 추가하는 데 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

자바 스크립트, 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)

꽤 재미있는 도전입니다!

을 사용하여 27 톤의 바이트 를 저장 atob하고 4 바이트에 Titus 를 저장해 주셔서 감사 합니다.

언 골프 드 :

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", "", "bellow", "why2U ="]를 얻습니다.
lolesque

1
c=console.log;처음에 정의한 다음 c ()를 사용하여 6 바이트를 저장하십시오. 또는 문자열을 변수에 저장하고 alert ()을 사용하여 한 번 인쇄하십시오.
lolesque

1
@lolesque이 c=console.log때문에 작동하지 않습니다 log이 있어야합니다 this의를 console또는 오류가 발생합니다. (일부 브라우저 / 환경에 있지 않는 한?) 모든 것을 한 줄로
묶는

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

온라인으로 사용해보십시오!

실제 메시지 (1120)보다 608 바이트가 적으며 절반 (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 '... '문자열을 유니 코드 코드 포인트로 변환

¯128+ 128을 빼면 -128 ≤ n ≤ 127이됩니다.

¯2(219⌶) zlib 해제

⎕UCS 유니 코드 코드 포인트를 문자열로 변환

소스 문자열은 다음 365 바이트의 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

파이썬 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로 가야하며 Taylor Lopez가 추가로 4 바이트를 절약했습니다.)

그래서 파이썬과 같은 언어를 교육 도구로 사용하려고 생각했을 것입니다. 이것은 골프를 시작하기 전에 프로그램이었습니다.

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]그리고 당신은 쓸 수 ab대신 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"

여기에서 시도하십시오 -permalink


당신은 ingS를 멀리 골프 수 있습니까 ? 나는 PHP가 Pyth를 이길 것을보고 미쳤다.
Titus

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

출력이 a 인 C # 람다 string.

설명

  1. t형식을 가진 문자열로 초기화 noise,animal,noise,animal,...하고로 나누십시오 ,.
  2. r및을 선언하십시오 s. r노래의 첫 부분과 s마지막 부분입니다. z그리고 n여기에 처리 Elephant합니다.
  3. 도보 t및 구축 rs같은 루프있다. 이상한 삼항 + 보간 물건.
  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

파이썬 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 바이트를 절약했습니다.
  • 을 이동하여 중복 된 첨자를 정리하고 제거하면 children27 바이트가 더 절약 되었습니다 .
  • tolower함수를 세계화하여 5 바이트 절약
  • 교체 writeLinescat와 (추가 적절히 포맷 \n곳에서) 3 바이트를 저장
  • 11 개가 d아닌 7 개 요소 만 있으면 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에서 나는 당신이 after의 ' '각 항목 앞에 있음을 보았습니다 . 정상입니까? 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 분석 재개 모니카 말한다

동사 배열에서 "ing"을 꺼내고 더 절약하기 위해 출력으로 옮깁니다.
기타 피커

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 bearBoa constrictor나는 10 %를 절약 할 수 있습니다 ...하지만 난 여전히 원본 텍스트의 50 % 이상을 해요 ...

편집 : 공백 대신 설정 e=echo(하여 3 바이트를 (절약하면 빈 줄을 에코하는 데 사용할 수 있지만 @echo off전체 를 써야합니다 .


2

배쉬 + zcat, 402 바이트

농담 :
2 줄 bash 스크립트는 자체를 꼬리에 두 번째 줄을 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 Erik

@ EʀɪᴋᴛʜᴇGᴏʟғᴇʀ 코드 tail -n+2 \$0|zcat;exit뒤에는 줄 바꿈과 379 바이트의 이진 문자열 (제안 된 텍스트의 gzipped 버전) 만 있습니다. downvote의 이유를 알고 있습니까? (이것은 내부에 아카이브가있는 스크립트를 bash 자체 설치하는 반 표준 절차이며 IMHO는 c ++에서 라이브러리를 사용하는 것과 크게 다르지 않습니다).
Hastur

coreutils ( zcat) 를 사용하는 것 같습니다 . 따라서 헤더는 ( Bash (with zcat) 402 ) 대신 ( Bash + coreutils, 402 bytes ) 여야합니다 . 답을 편집 할 수 있습니까 (게시물 끝에 추가 하면됩니다)? downvote를 제거하고 싶습니다> :(<!>
Erik the Outgolfer

@ EʀɪᴋᴛʜᴇGᴏʟғᴇʀ zcat는 coreutils가 아니며와 함께 제공됩니다 gzip. 많은 시스템에서 호출하는 스크립트가 있습니다 gzip -cd "$@"... BTW Bash + zcat, 402 바이트에서 수정했습니다.
Hastur

좋은 downvote가 제거되었습니다. 공감대는 나의 것이다.
Outgolfer Erik

2

F #, 591 589 579 576 573 567 552 바이트

이것은 내가 좋아하는 언어로 코드 골프를하는 첫 번째 시도입니다. 나는 이것이 더 짧아 질 수있는 몇 가지 방법이 있다고 확신합니다. FSI에서 실행되므로 .NET 상용구가 필요 없습니다.

편집 :을 제거하여 10 바이트를 면도했습니다 \r. VSCode에서는 여전히 잘 렌더링되므로 그림으로 이동하십시오. 함수 구성으로 다른 3 바이트를 자르고 람다로 다른 3 바이트를 자른 다음 Seq.iter 대신 for 루프로 6 바이트를 자릅니다 (람다 제거). 마지막으로 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에 오신 것을 환영합니다.
cat

나는 #F는 닷넷 languange 알고,하지만 난 개념은 동일합니다, 당신은 "N \"간단한와 "\ 연구 \ 없음"을 대체 할 수있는이 문제의 목적을 위해 생각하고 그것은 바이트를 저장
베일

@ 베일 감사합니다. 10 바이트를 절약
asibahi

1
수에는 영향을 미치지 않지만 "Hippopotamus"의 철자를 잘못 입력했습니다.
GentlePurpleRain

트윗 담아 가기 나는 모든 철자를 찾았다 고 생각했다. 내가 고칠 게
asibahi

1

이맥스 리스프, 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."))))

언 골프 드 :

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

귀하의 정규식은에서 단축 될 수 있습니다 ^[aeiou]^e, 그것을 할 수 없었다?
owacoder

코끼리의 경우 예, 그러나 다른 동물이 추가되면 변경해야합니다. 600 바이트가 이미 있으면 6 바이트는 그렇게 많이 아프지 않습니다.
Lord 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.");}

아이디어로 사용해보십시오.


이데온에 대한 링크를 추가 할 수 있습니까?
aloisdg는 Reinstate Monica

2
아이디어 링크를 추가했습니다.
owacoder

a[99][99]-> **a(-6). f()여기서 인수없이 호출 할 수 없습니다 n. 교체 f(n){와 함께 f{n;. 여기 또 다른 -1. 또한 f()이제는 호출 가능합니다.
아웃 골퍼 에릭

@owacoder 어떻게 오나요? **a문자 배열 (또는 문자 포인터 포인터)의 배열을 의미하며 나에게 항상 작동했습니다 (gcc 4.8). 어떤 컴파일러를 사용하십니까? gcc를 사용하지 않으면 gcc를 지정해야합니다. gcc를 사용하는 경우 기본값입니다.
Outgolfer Erik

@owacoder 아니요! 길이가 98 인 98 개의 문자열에 맞는 배열을 만듭니다! 그리고 당신은 반드시 당신의 아이디어 링크를 "온라인으로 시도하십시오!" 골프에 교체 a[99][99]a[<how many elements do I modify?>+1][<what is the maximum length of any string in here?>+1].
Outgolfer Erik

1

파이썬 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.")

언 골프 :

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]은 "에"코끼리 처리합니다. [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.")

언 골프 :

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 코드의 16 진 덤프 ( 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.');

소스 텍스트를 349 바이트의 압축 된 데이터로 변환하기 위해 zopfli 를 몇 번 반복 하여 백 슬래시로 이스케이프해야하는 '문자를 피했습니다.


1

JAPT , 308 303 299 295 288 280 294 289 286 바이트

인쇄 할 수없는 항목을 포함합니다. 아래 링크를 클릭하십시오.

`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 바이트 '왜냐하면 난 바다 코끼리를 불렀다.' 다음 주에 다른 바이트를 다시 가져 와서 해당 바이트를 다시 가져올 수 있는지 확인해야합니다.


1

파워 쉘 921 889 886 898 바이트

완벽하지는 않지만 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 $$."

ö더 효율적인 바이트 대신 표준 7 비트 ASCII 문자를 사용하지 않습니까?
Jonathan Frech

또한 첫 번째 줄에는 긴 함수 이름과 함께 불필요한 공백이 있다고 생각합니다.
Jonathan Frech

힌트 주셔서 감사합니다 :)! (나는 이미 사용 가능한 모든 ASCII 기호 XD를 사용했기 때문에 Ö를 사용했습니다)
Add-TheNewOne

문자 ö는 일부 코드 페이지에서 단일 바이트 만 사용하여 표시되며 UTF-8은이 문자에 2 바이트가 필요합니다.
Jonathan Frech

출력이 약간 꺼져 있습니다. 마지막 스탠자는 모든 것을 하나로 만드는 북극곰을 반복하며 필요하지 않은 휘파람을 포함합니다. 타원도 없습니다. 또한 an elephant이전 스탠자 사이에을 제거하여 도끼를 줄 수있는 추가 줄 바꿈이 있습니다 "n".
Veskah

0

클로저, 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, 571555538 또는 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;}

그러나 JShell에서 결과를 얻으려면 516 바이트 만 필요합니다.

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

그것은 공백, 탭, 소문자와 관련하여 잘못된 출력주고 an대를 a.. 내가 해결 한과에 golfed 507 바이트
케빈 Cruijssen

@KevinCruijssen 귀하의 코드에 "내 귀에 ... ... ******"가 들리지 않습니다. 또한, 시작하여 가능성 golfable i으로 0까지 10변화 b=a[i-1]b=a[i++]하고 현재 증가를 제거.
Olivier Grégoire

0

스위프트 2, 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

하스켈 537 499 497 바이트

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

펄 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

자바 스크립트, 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.