ホッキョクグマ、ホッキョクグマ、あなたは何を聞きますか?


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
大文字ているBCしてPolar BearBoa Constrictor必要?(バッチでは、これにはバイトカウントの10%がかかります...)
ニール

ハッシュを送信し、制限されたセットでソリューションをブルートフォースすることは許可されていますか?:D
polym

4
これは非常に素晴らしい最初の挑戦です!
アレックス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‚ø
複製し、保存して後で使用するために登録し、「、」を1つのコピーに追加し、それを複製してzipします。

“€À€·€î—«?“¶«¸
辞書の単語「あなたは何を聞きますか?」に続いて新しい行が新しいリストに追加されました

‘€JU
「動物、動物」および「何を聞きますか」のリストのデカルト積。平坦化して結合し、変数Xに格納します。「動物、動物、何を聞きますか?」 「。

¦“„¾“‚˜l
前の残りの動物のリストを取得し、動物園管理者を削除して子供を追加し、小文字に変換します。

v
各動物について:

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

「耳に聞こえる0」を押し、0で分割し、別々の文字列として押します。

yð«Y¦õ‚˜Nè«
音のない子供に「動物の音」を押してください

sr„ a
「a」を正しい場所に押してください

N5Qi'n«}
動物が「象」の場合、「n」を追加します

ð«
スペースを追加します。

N9›ijrj¨ðs«…...«}
動物が子供の場合、スペースを削除して「...」を追加します

srJˆ}
「耳に動物の音が聞こえる」という文章に参加してください。(子も同様)、グローバル配列に保存してループを終了

X¯‚ø€J
最初の行を取得し、ジップして参加して、韻の最初の部分を作成します。「動物、動物、あなたは何を聞きますか?

vy,¶?}
印刷してから改行してください。

…...DU?
「...」を印刷し、変数Xにコピーを保存します。

Y¨v
「口hist」以外の各音について:

N__i '、¶}最初の行を除く各行について、 "、\ n"で開始します(前の行にコンマを入れます)

yð“€è€…“
音、空間、「好き」をプッシュ

N6Qi'n«}
象が「n」を追加する場合。

ð®NèJl?}X,
レジスターに保存された動物を取得し、すべてに参加し、「...」が続くループを印刷して終了します。これにより、「動物のような音」ラインが生成されます。

“€Š's€À I—«.“?
辞書文字列を印刷します。


30
これはクトゥルフを召喚しています。
aloisdg回復モニカ言う

6
コードがどこで終わり、パックされたデータが始まるのかわかりません。
アダム

4
@Adám知っています。見た目がおかしくなりそうです:)最終的には説明を追加します。最初にゴルフを試してみたいと思うかもしれません。
エミグナ

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」を追加すると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)

とても楽しいチャレンジです!

を使って27トンのバイトを節約してくれたDowngoat 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]...))
ニール

1
@ OldBunny2800ゴルフの目的のために、グローバル変数を設定できます。(ただし、再帰関数ではこれを行わないでください!)
ニール

1
あなたのコードは動作しません、私はスタックがあなたのbase64コードでいくつかの文字を交換したと思います。分割後、["ujA66Gq87O3N + W63NutrLOHLM7a7pqXrc7J2q"、 ""、 "bellow"、 "why2U ="]を取得します。
ロレスク

1
c=console.log;最初に定義し、c()を使用して6バイトを保存します。または、文字列を変数に保存して、alert()で1回印刷します。
ロレスク

1
@lolesque は、ofを持たなければならないか、エラーを生成するc=console.logため機能しません。(一部のブラウザー/環境にない場合を除きます)すべてを文字列に入れるという考えは良いように聞こえますが、logthisconsole
-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:.

オンラインでお試しください!

実際のメッセージ(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 '... '文字列をUnicodeコードポイントに変換する

¯128+ 128を減算して-128≤n≤127を取得します

¯2(219⌶) un-zlib

⎕UCS Unicodeコードポイントを文字列に変換します

ソース文字列は、次の365バイトのzlibされたUnicodeコードポイントです。

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áborFeketeに送られ、さらに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]aandのb代わりにa[0]andを書くことができますa[1]。これにより、12バイト節約されます。
ガボールフェケテ

およびに変更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バイト節約されます。
ガボールフェケテ

一般的なゴルフの質問。あなたがいる場所ではlen(A)この課題の目的は単に静的出力を生成することであるため(動的入力を処理しない)、11バイトを節約する代わりにハードコーディングを使用することは受け入れられますか?
テイラーロペス

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"

ここで試してください- パーマリンク


ingsを離れてゴルフできますか?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;};

出力がaであるC#ラムダstring

説明

  1. tフォーマットnoise,animal,noise,animal,...され、で分割された文字列として初期化し,ます。
  2. 宣言rsます。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

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バイトを節約しました
  • 置き換えwriteLinescat適切に再フォーマット(\n場所に追加)して3バイトを節約
  • d完全な11ではなく7つの要素のみである場合、Rは再び最初にループバックすることを認識しました。11 <14の場合、これは機能します。9バイトを保存しました。
  • グローバル化された添え字、13バイトを節約。
  • cat関数はで区切られていましたが" "、に戻りましたwriteLines。4バイトを追加(関数にcat追加,sep=""することで修正可能 )

PPCGへようこそ!これはいい最初の答えです。コードをオンラインで試す方法はありますか?
aloisdgは回復モニカ言う

1
このお試しくださいr-fiddle.org/#/fiddle?id=5pqkHPyL&version=1を 、私はそれは正しく「だという」にアポストロフィを読むために取得する文字(バックスラッシュ)を追加する必要がありましたけれども
ロバート・メード

ありがとうございました。R-Fiddleでは' 'aafterの各アイテムの前にがあることがわかりました"Polar Bear"。普通ですか?
aloisdgは回復モニカ言う

私はあなたが何を意味するのか完全にはわかりません。詩の最初のセクションのスペースを意味しますか?ここの「ライオン」の前のスペースのように?「ホッキョクグマ、ホッキョクグマ...... \ n私は...... \ nライオン、ライオン..... \ n私は聞いています...」私はこれに前に気づいていませんでした。スペースを使用して分離するcat関数から取得されます。これは、関数にsep = ""を追加することで修正できますが、writeLinesを使用することをお勧めします。(コードをwriteLinesに戻しました)
ロバートメードストン

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回復モニカ言う

1
あなたはa elephanttrapに落ちた(私もやった)。それはあるan elephant;)
aloisdgは回復モニカ言う

動詞配列の「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

なぜなら%*、Batchは配列に最も近いものだからです。私が使用できる場合Polar bearBoa constrictor、私は10%を保存することができます...しかし、私はまだ元のテキストの50%以上をよ...

編集:スペースの代わりにaを設定e=echo(して3バイトを保存しました(。これにより、空白行をエコーするために使用できますが@echo off、完全に書き出す必要があります。


2

Bash + zcat、402バイト

冗談です
。2行のbashスクリプトで自分自身を末尾にし、2行目をzcatにパイプします。
2行目はgzip圧縮されたテキストです。

準備方法:ファイル内のすべてのテキスト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バイトのバイナリ文字列(提案されたテキストのgzip圧縮バージョン)のみが続きます。ダウン投票の理由を知っていましたか?(これは、bashが内部にアーカイブを含むスクリプトを自己インストールするための準標準的な手順であり、私見はC ++でのライブラリの使用とそれほど変わりません)。
ハスター

coreutils(zcat)を使用しているようですので、ヘッダーは(Bash(with zcat)402)ではなく(Bash + coreutils、402 bytes)でなければなりません。また、回答を編集できます(投稿の最後に追加するだけです)。私はdownvoteを削除したい> :(<!>
エリックアウトゴルファー

@EʀɪᴋᴛʜᴇGᴏʟғᴇʀ zcatはcoreutilsからではなく、に付属していgzipます。多くのシステムでは、それを呼び出すスクリプトがありますgzip -cd "$@"...ところで、Bash + zcatで修正した、402バイト。
ハスター

良い、下票は削除されました。賛成票は私のものです。
エリックアウトゴルファー16

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へようこそ、いい答えです!

私は#Fは、.NET languangeですけど、私は、コンセプトは同じであるとして、あなたは、単純な「\ n」はと「\ rを\ n」を置き換えることができ、この課題の目的のためだと思うし、それはバイトを節約
ヴェイル

@Valeありがとう。10バイト保存
-asibahi

1
カウントには影響しませんが、「Hippopotamus」のつづりが間違っています。
GentlePurpleRain

@GentlePurpleRainへっ。私はすべてのスペルを探したと思いました。私はそれを修正します。
-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."))))

ゴルフをしていない:

(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バイトはそれほど害になりません。
主ゆうま

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へのリンクを追加できますか?
aloisdgは回復モニカ言う

2
ideoneリンクを追加しました。
owacoder

a[99][99]-> **a(- 6)。f()ここでは引数なしで呼び出すことはできませんn。交換してくださいf(n){f{n;。ここに別の-1。また、f()呼び出し可能になりました。
エリックアウトゴルファー16

@owacoderどうして?**a文字配列の配列(または文字ポインターポインター)を意味し、私にとっては常に機能します(gcc 4.8)。どのコンパイラを使用していますか?gccを使用しない場合は、指定する必要があります。gccを使用する場合、これがデフォルトです。
エリックアウトゴルファー16

@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]
エリックアウトゴルファー

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

なし:

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

基本的に、ストーリーの2つの部分を表す2つの文字列を作成するループです。'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スペースを含まないすべてのエントリに引用符をドロップできます。最後に、母音で始まる動物は1つしかないため、A$="Elephant"実際には1バイトより短くなりLEFT$(A$,1)="E"ます。の素晴らしい使用RESTORE、ところで!
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バイト

怠zyな答えですが、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.');

zopfliを数回繰り返して、ソーステキストを349バイトの圧縮データに変換し、バックスラッシュでエスケープする必要のある文字を避けました。


1

JAPT308 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

Powershell 921 889 886 898バイト

それは完璧ではありませんが、300バイトを節約します:)

編集: ありがとうジョナサンフレッシュ、私は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文字を使用しませんか?
ジョナサンフレッチ

さらに、最初の行に余分な空白があり、長い関数名があると思います。
ジョナサンフレッチ

ヒントをありがとう:)!(私はÖを使用しました。なぜなら、私はすでにすべての使用可能なASCII記号XDを使用していると教えたからです)
Add-TheNewOne

文字öは、一部のコードページでは1バイトのみを使用して表されます。UTF-8では、この文字に2バイトが必要です。
ジョナサンフレッチ

出力は少しオフです。最後のスタンザはホッキョクグマを繰り返しており、それによってすべてが1つずつオフになり、必要のない口whiが含まれます。また、楕円が欠落しています。またan elephant、以前のスタンザ間に余分な改行がありますが、これはを削除することで解決できます"n"
ヴェスカー

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

ただし、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."

これは、スペース、タブ、小文字とに関する誤った出力を与えてana... 私は修正しましたし、それをgolfed 507バイト
ケビンCruijssen

@KevinCruijssenのコードには、「... ... ****が耳に聞こえます」という「ing」がありません。また、現在の場所で増分を変更して削除することから始めてi、ゴルフができる可能性が非常に高いです。010b=a[i-1]b=a[i++]
オリビエグレゴワール

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バイト

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(clang)、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.