お気に入りのフレーズをプログラムする


28

など、正確に5語の長さの引用またはフレーズを選択しますProgramming puzzles and code golf!

n回追加されたときに、フレーズの最初のn + 1ワードを順番に出力するプログラムを作成します。

たとえば、プログラムコードがMYPROGあり、フレーズがであったProgramming puzzles and code golf!場合、実行しています...

  • MYPROG 出力する必要があります Programming
  • MYPROGMYPROG 出力する必要があります Programming puzzles
  • MYPROGMYPROGMYPROG 出力する必要があります Programming puzzles and
  • MYPROGMYPROGMYPROGMYPROG 出力する必要があります Programming puzzles and code
  • MYPROGMYPROGMYPROGMYPROGMYPROG 出力する必要があります Programming puzzles and code golf!

4回を超える追加は未定義で、プログラムは何でもできます。

ルール

  • フレーズは文法的に意味のある英語でなければなりません。大文字と句読点を適切に大文字にすることが理想的です。
  • フレーズの長さは任意ですが、http://www.shannonentropy.netmark.pl/で計算されるエントロピーは3.5未満はない場合があります
    (フレーズを貼り付け、[ 計算]をクリックして最後のH(X)を探します。)
  • フレーズには、印刷可能なASCII文字(16進数20〜7E)のみを含めることができます。コードには、印刷可能なASCIIとタブと改行のみを含めることができます。
  • フレーズには、正確に5つの一意の単語と4つのスペースが含まれている必要があります。すべての非スペースは単語の一部としてカウントされます。スペースは単語の境界です。それらは先頭または末尾ではない場合があります。結局、最後の単語以外は1つあるはずです。
  • 出力には、単語間のスペースも1つ含める必要があります。各追加ステップの出力には、末尾のスペースは含まれますが、先頭のスペースは含まれません。
  • stdoutへの出力。入力はありません。

得点

スコアは、最初に追加されなかったプログラムのバイト単位の長さです。(例:MYPROGスコア6)

これはコードゴルフなので、最低スコアが勝ちます。


21
エントロピーと一意性の要件は、エントリとしての「バッファロー」という私の考えを殺します。
スパー14

4
「コードに含めることができるのは、印刷可能なASCIIとタブと改行のみです」まで、Pietでとても楽しかったです。:(
Sp3000 14

3
@ Sp3000名誉の回答を歓迎します。ピエトの解決策を見たい:)
カルビンの趣味14

これは... Haskellの純度がまさに問題である唯一の状況である
Rhymoid

文法的に意味のある英語文法的に意味のある解釈が異なるため、「文法的に意味のある英語」とは何なのか不明確です。
MilkyWay90

回答:


6

CJam-24

"TheguywasnotI"Lm3<]S*:L

http://cjam.aditsu.net/で試してください

説明:

Lm「TheguywasnotI「からL(最初」)」に含まれる文字を削除
3<最初の3つの文字を取り
]、アレイ内のスタックのコンテンツを収集し
S*、セパレータとしての空間を使用してアレイジョイン
:L割り当てるLに得られた文字列は(もスタック上に残します)

古いバージョン(28バイト):

"He is but a dog."S/W):W=]S*

説明:

S/スペースの
W):W増分W(最初はW = -1)で分割します。W
=番目のワード
]は、
S*スペースを区切り文字として使用して、配列内のスタックの内容を結合します。


この言語は本当に面白いです。彼らが言うように、「あなたは毎日新しい言語について学ぶ」...またはそのような何か。よくできました!
ブロビン14

これが最初に投稿されたのと同じように短いデニスの回答の代わりにこれを受け入れます。
カルバンの趣味14年

28

Piet(名誉回答)

enter image description here

ヘビは下に向かって進み、青を通り抜けて右に流れ出し、緑を通り抜けます。「フルーツはバナナのように飛ぶ」を印刷します。

PietCreatorを使用してこれを作成しましたが、ここで試してみることができます。Pietプログラムの作り直しは苦痛なので、35x35から始めてそのように続けました。つまり、必要以上に多くのコーデルを使用していました。

実際のサイズのバージョン

enter image description here enter image description here enter image description here enter image description here enter image description here


11

> <>(42)

魚は本当に最高のペットです。一部の人々は、ロジックが理解できないほど不足しているため、バグをペットとして飼っています。このプログラムは、そのような人々を理由に最善を尽くします。

!v'?od gub yna nac tahW;'00p!
<<|ov!
voo <

これはプログラムの末尾の改行ではないことに注意してください。最初の行では完全な出力が逆になります。完全なフレーズは「バグは何ができますか?」です (エントロピー3.58418)。

完全な説明:

これは、リフレクションを使用する最初のプログラムであるため、私が書いた> <>プログラムの中で最も楽しいものの1つです。最初の行は、プログラムの要点です。

!v!次の命令がスキップされるため、何もしません。

'?od gub yna nac tahW;' 完全なフレーズをスタックに保存します(各文字は書かれた順序でスタックにプッシュされるため、逆方向に移動するため、うまくポップオフするには逆にする必要があります)。

00p本当の魔法が起こり始めるところです。フレーズを保存するだけでなく、を保存することに注意してください;00pスタックの最上部の文字をプログラムの位置(0、0)に挿入するため、プログラムの最初の文字はaになり;ます。

エンディング!はそのセミコロンをスキップし、カーソルをvに移動して、プログラムの流れを下に向けます。

これ以降は、すべての印刷ルーチンです。後続の改行がないため、プログラムの連続した追加は、最初の行がの右側にあるため、実際には最後の2行を追加するだけvoo <で実行されません。

最後に、カーソルはプログラムの左下に向けられ、左上に戻り、;以前に挿入された場所に戻り、プログラムが終了します。


1分前、これは技術的には無効でしたが、コード内で改行(およびタブ)が許可されるように仕様を変更しました(これは元々必要でした)。
カルビンの趣味14

ああ、私の悪いことは、フレーズだけでなくソースにも当てはまることを完全に見落としていました。私はそれが意図であったことをうれしく思います。プログラムは改行にかなり強く依存しています。
マイクプレカップ14

これを少しゴルフしたい場合は、11文字のフレーズを使用し、フレーズが文字を"It is by a rope."繰り返すなど、文字が繰り返されないため、エントロピーが低くなる可能性があります。
isaacg 14

問題は、> <>ではスペースを簡単に検出できないため、各出力は基本的に同じ長さでうまく印刷する必要があるということです。短いものを見つけることができませんでした。
マイクプレカップ14

2
@isaacg個人的にはマイクのフレーズを好む;)
カルビンの趣味14

10

パイソン66

i='i'in dir()and i+1;print("Tfpcfhaialetgny"[i::5],end=" ."[i>3]);

エントロピー:3.61635

出力:

The fat pig can fly.

変数検出部分を短縮するためのヒントをありがとう@JasonSと@grc。

更新:これを55バイトに押し下げた邪悪なラップアラウンドトリックに対するJasonSの回答を参照してください。:)


i=locals().get('i',-1)+1;-5バイト
ジェイソンS 14

それに私を打つ!私は使用するつもりだったi='i'in dir()and i+1。編集:ルールが変更されました。
GRC

まあ、それは別の-4
ジェイソンS 14

Python 2で60バイトi='i'in dir()and i+1;print"Tfpcfhaialetgny"[i::5]+" ."[i>3],
nyuszika7h 14

9

Python 3、55(ボーナス67)

# 55 bytes, H(X)=3.72, Based on bitpwner's 66. "Mix dog and cat fur."
i=0;print("Mdacfionauxgdtr"[i::5],end=" ."[i>3]);i+=1;i

# 67 bytes, H(X)=4.28. "Thanks for supporting Python development."
q=b"qx!%%0077C";a,b,*q=q;print((str(credits)*2)[49:][a:b],end='');q

# 60 bytes, H(X) = 3.51. "Fix the bed old pal"
s="Fixthebedoldpal";a,b,c,*s=s;print(a+b+c,end='. '[s>[]]);s

ラップアラウンドするということですか?

OK、2番目の説明(ネタバレ)

  • credits使用したいテキストを含むpythonビルトインです。reprインタラクティブなインタープリターに入力するだけで素敵な出力を見ることができるように、フォーマットされた特別なタイプですstr()。私はこのためのビルトインを見るのにかなりの時間を費やし、フレーズとして「Python開発をサポートしてくれてありがとう」を渡すのはあまりにも良いことでした。

  • たくさんのテキストがあり、5つの単語だけが必要なので、各部分文字列の開始位置と終了位置を保存します。それは先頭のバイトにあります。bytespython3のオブジェクトは、シーケンス操作を使用すると整数の配列のように機能します。

  • しかし、コードには印刷可能な文字のみを含めることができるため、すべての位置値を文字として印刷可能にするオフセット(49)を見つける必要がありました。

  • 「Thanks」は文字列の先頭近くにあり、他の単語は末尾に近いため、位置の値が離れすぎてすべて印刷可能な範囲に収まらないことを意味しています。文字列を2倍にすることで、他の単語に近い「ありがとう」のコピーがもう1つ作成されます。

  • [49:]文字列のスライスを取得すると、aとbの両方に49を追加するよりもソースバイトが1つ少なくなります。

  • 3つすべての回答で使用される構成体はx=<value>;dostuff and increment;xです。トレーリングxはまったく何もしませんが、コードの次のコピーと組み合わせるとxx=<value>xカウンターが上書きされないようになります。

  • a,b,*q=q Python 3シーケンスの展開は完全に通常です。


+1。邪悪なトリック。:)答えに合わせて更新できますか?
ベクトル化

まあ、私はあなたの中間を使用しました
ジェイソンS

私は現在、あなたの2番目の答えに驚いています。たくさんのトリックが詰め込まれています。
2014

2
2番目の回答がどのように機能するか教えてください。
サハ

8

Python 2(37)

サラは地元のメンサ支部の会長になった後、知的なパートナーを探している男性からロマンチックな注目を集めました。サラはいつでも個人的なつながりを作ろうとしますが、男性は彼女に哲学的な質問を徹底的に調査します。誰も彼女の感情的な側面を気にかけないことを不満に思った、彼女は叫んだ...

i=4;print"mniIMeosQy!t"[i::5],;i-=1;i

出力:

My
My IQ
My IQ is
My IQ is not
My IQ is not me!

エントロピーはH(x)=3.5正確です。

Jason S.の功績でありその答えは基本的に卸売りです。iiラップアラウンドトリックは素晴らしいです。


いいね!適切なエントロピーを持つ短いフレーズを見つけるための小道具。私はあきらめた。また、py2 printはスペースを追加するのではなく先頭に追加することを忘れていました
ジェイソンS 14

これはPythonの答えの驚くほど短いです!よくやった。
isaacg 14

プログラムの途中にあるカンマを削除して、36文字にドロップダウンできます。
xleviator 14

8

C-65

コメントの乱用:)

char*z="Ah, \0the \0good \0ol' \0times!";
for(printf(z);*z++;);//

このため、新しい行は重要であり、コードは次のように追加する必要があります。

char *z="Ah, \0the \0good \0ol' \0times!";
for(printf(z);*z++;);//char *z="Ah, \0the \0good \0ol' \0times!";
for(printf(z);*z++;);//...

これは素晴らしい解決策です!
MilkyWay90

4

CJam、24バイト

"LwOtmiaKoezs"W):W>5%]S*

5回実行すると、Lizは問題ありませんでしたと表示されます。句読点は含まれません、申し訳ありません。

使い方

"LwOtmiaKoezs"  " Push that string. ";
W):W            " Push W (initially -1), increment and save the result in W. ";
>               " Shift that many characters from the string. ";
5%              " Select every fifth character, starting with the first. ";
]S*             " Wrap the stack in an array and join its strings using spaces. ";

クールなアイデア、フレーズはちょっと弱いですが:p
aditsu 14

私はそれを認めますが、それはxxx xxx xx xx xxである必要があり、文字が繰り返されていません。それは、少なくとも少し意味のある、私が思いつくことができる唯一の文です...
デニス・

「太陽は私にとっては大丈夫」はどうですか?「Sun」を別の単語または名前に置き換えることもできます。
aditsu

それは良い、ありがとう。
デニス14

3

ピス、32

p?kqZ4d@P"It is by a rope."dZ~Z1

フレーズ:「ロープで。」

エントロピー:3.5

使い方:

p 指定されたセパレータで印刷することを意味します。

最初の引数、 ?kqZ4dはセパレータを提供します。?kqZ4dを意味しk if Z==4 else dます。kis ''、while dis ' 'です。

2番目の引数である出力される値はP、スペース(d)で分割()し、そのリストへのインデックス付け()で生成さ@Zます。

最後にZ、自動的に0に初期化されるが、1ずつ増加します(~Z1)。


2
このフェーズが自然に適合するコンテキストを考えることはできませんでした^^
flawr 14

1
@flawr「どこでボールを住んでいたの?」「ロープで。」
isaacg 14

3

Golfscript、53

これは楽しかったです。

{'1'-print}:puts;.'You; are; not; a; duck.'';'/\,=\1+

フレーズ:「あなたはアヒルではありません。」(これは完全に真実です;エントロピー3.5110854081804286)

説明:

スタックは''最初の「実行」時に開始されます(STDINが提供されていないため)。'1'これは、コードが貼り付けられた回数を示すために追加されます。

{'1'-print}:puts;             # Hacky stuff (see below)
.                             # Stack: '' ''
'You; are; not; a; duck.'';'/ # Initialize the array of words
\,                            # Get the length of the string of '1's (0)
                              # Stack: '' [words] 0
=                             # Stack: '' 'You'
\1+                           # Stack: 'You' '1'

次に、2回目の実行で何が起こるか:

{'1'-print}:puts;             # Hacky stuff (see below)
.                             # Stack: 'You' '1' '1'
'You; are; not; a; duck.'';'/ # Initialize the array of words
\,                            # Get the length of the string of '1's (1)
                              # Stack: 'You' '1' [words] 1
=                             # Stack: 'You' '1' ' are'
\1+                           # Stack: 'You' ' are' '11'

等々。

「でも、どうやって1を出力しないようにするの?」ああ、それは楽しいハッキーな部分です。Golfscriptは、次のようにputs(プログラムの終了時に呼び出されます)を実装します。

{print n print}:puts;

に変更しました

{'1'-print}:puts;

だから、という1のは、最終的な出力が抑制されています。


3

J-42文字

短いフレーズを使用することもできますが、なぜですか?それは私のお気に入りではないでしょう。

(#~1=6|#\)&.;: :,'You multiplied 6 by 9. '

これは、Jのモナド/ダイアドの双対性のために機能します。すべての動詞は、右に1つの引数を持つモナドとして、または左に引数があり、右にもう1つのダイアドとして呼び出すことができます。

J REPLとの次のセッションを検討してください。

   'You multiplied 6 by 9. '
You multiplied 6 by 9.
   'You multiplied 6 by 9. ' , 'You multiplied 6 by 9. '
You multiplied 6 by 9. You multiplied 6 by 9.
   ;: 'You multiplied 6 by 9. ' , 'You multiplied 6 by 9. '   NB. break into words
+---+----------+-+--+--+---+----------+-+--+--+
|You|multiplied|6|by|9.|You|multiplied|6|by|9.|
+---+----------+-+--+--+---+----------+-+--+--+
   (#\) ;: 'You multiplied 6 by 9. ' , 'You multiplied 6 by 9. '             NB. count off
1 2 3 4 5 6 7 8 9 10
   (6 | #\) ;: 'You multiplied 6 by 9. ' , 'You multiplied 6 by 9. '         NB. mod 6
1 2 3 4 5 0 1 2 3 4
   (1 = 6 | #\) ;: 'You multiplied 6 by 9. ' , 'You multiplied 6 by 9. '
1 0 0 0 0 0 1 0 0 0
   (#~ 1 = 6 | #\) ;: 'You multiplied 6 by 9. ' , 'You multiplied 6 by 9. '  NB. select
+---+----------+
|You|multiplied|
+---+----------+
   (#~ 1 = 6 | #\)&.;: 'You multiplied 6 by 9. ' , 'You multiplied 6 by 9. ' NB. undo ;:
You multiplied

そこ,では、2つの引数の間にあるため、ダイアドとして扱われ、(#~1=6|#\)&.;:左の引数がないため、モナドです。したがって、次のように動作する動詞がある場合,、二項関係と(#~1=6|#\)&.;:単項関係のに、設定されます。

既に推測しているかもしれませんが、そのような接続詞は存在し、のように見え:ます。モナドf :gfであり、それはと同等ですgとき、ダイアディック。これにより問題が解決します。

tryj.tkで自分で試すことができる例:

   (#~1=6|#\)&.;: :,'You multiplied 6 by 9. '
You
   (#~1=6|#\)&.;: :,'You multiplied 6 by 9. '(#~1=6|#\)&.;: :,'You multiplied 6 by 9. '
You multiplied
   (#~1=6|#\)&.;: :,'You multiplied 6 by 9. '(#~1=6|#\)&.;: :,'You multiplied 6 by 9. '(#~1=6|#\)&.;: :,'You multiplied 6 by 9. '
You multiplied 6
   (#~1=6|#\)&.;: :,'You multiplied 6 by 9. '(#~1=6|#\)&.;: :,'You multiplied 6 by 9. '(#~1=6|#\)&.;: :,'You multiplied 6 by 9. '(#~1=6|#\)&.;: :,'You multiplied 6 by 9. '
You multiplied 6 by
   (#~1=6|#\)&.;: :,'You multiplied 6 by 9. '(#~1=6|#\)&.;: :,'You multiplied 6 by 9. '(#~1=6|#\)&.;: :,'You multiplied 6 by 9. '(#~1=6|#\)&.;: :,'You multiplied 6 by 9. '(#~1=6|#\)&.;: :,'You multiplied 6 by 9. '
You multiplied 6 by 9.

そして、はい、の逆の性質は、;:後続のスペースがないようにします。

It is by a rope.フレーズとして使用すると、35文字が得られます(#~1=6|#\)&.;: :,'It is by a rope.'。私の文章のように、不可解な;:理由から、末尾のスペースは必要ありません。


3

BBCベーシック、40

改行が1つ含まれています。キーワードがASCIIではなくトークン化されていると見なすことができる場合、30になります。

私はガールフレンドが牛乳屋で寝ているのを見つけたので、彼女を捨てて、彼女の妹と一緒に復reのために寝ています。As my ex do I!(ユニークなキャラクターを含む5文字の「単語」)は十分なエントロピーではなかったので、エントロピーを正確に3.5にするために最後に舌出しスマイリーを追加しました。結局のところ、実際には私はかなり普通の生活をしており、奇妙なメロドラマのプロットはありません。

  READa$:PRINTa$;" ";
  DATAAs,my,ex,do,I:-P

プログラムを5回繰り返すと、

  READa$:PRINTa$;" ";
  DATAAs,my,ex,do,I:-P
  READa$:PRINTa$;" ";
  DATAAs,my,ex,do,I:-P
  READa$:PRINTa$;" ";
  DATAAs,my,ex,do,I:-P
  READa$:PRINTa$;" ";
  DATAAs,my,ex,do,I:-P
  READa$:PRINTa$;" ";
  DATAAs,my,ex,do,I:-P

5つのREADステートメントのみが実行され、最初の5つのデータ項目は最初のDATAステートメントから読み取られます。残りのデータは冗長です。出力:

  (once)
  As 
  (5 times)
  As my ex do I:-P 

2

ルビー、50

puts'The fat pig can fly.'[0..File.size($0)/12-1]#

これは独自の長さを使用して、印刷する単語の数を決定します。そうでない場合、コメント文字で終わることにより、その繰り返しは無視され#ます。bitpwnerから借用したフレーズ:各単語に同じ文字数の短いフレーズがあると非常に便利です。

各単語+末尾は4文字なので、式は、たとえば56長のプログラムの場合:(File.size($0)/56)*4 - 1になりますが、事前に分割できる56/4 = 14のでFile.size($0)/14 - 1、数文字を節約できます。50倍数ではない4が、12必要な範囲のために十分に近いです。


2

チップ、165 + 3 = 168バイト

+3フラグ -w

| ,z `Z`Z  `Z
| |ZZZ>Z>ZZZ>ZZZZ
>((((((((((((((((
|)-)))-)-)))-))))g
|)d)xx-x-)xx-))x)e
||b+))-x-x))-x)xc
|`v))xa(-x(x-((^d
|*`.))d| b | b
|Z~<b( |~Zf|
>~T| | |   |

「私は赤いスーツに勝った」(3.5)(実際にそのようなものに勝ったことがない)(...まだ)

末尾の改行に注意してください。連結されたコピーが既存のコードの下に表示されます。

オンラインでお試しください!(オリジナル)
オンラインで試してみてください!(オリジナル、および4つすべてのコピー)

これは少し複雑な混乱です。最も厄介なビットが終了条件であることが判明しました。(私の最初の繰り返しは単語を出力し、その後にヌルバイトの無限ストリームが続きました...)。

使い方

最初のフレーズ:
12個の一意の文字+ 4個のスペース=正確に3.5のエントロピー。

そしてコード:
各コピーは最初の単語を印刷し、次の単語を印刷するように下のコピーに指示します。インスタンスが1つしかない場合、2番目のコピーはないため、最初の単語以外は何も出力されません。

コピーが2つある場合、両方とも最初の単語を同時に印刷し(バイトはORで結合されているので問題ありません)、2番目のコピーのみが2番目の単語を印刷します。

5つすべてのコピーが存在する場合、すべてが最初の単語などを印刷し、5番目のコピーは最後の単語を単独で印刷します。

終了回路は、すべてのコピーがアクティブに印刷されなくなるとすぐにプログラムを終了します。


1

ルビー、63

+1;puts"See Dick and Jane run!"[/(.*?( |!)){#$.}/]if($.+=1)==$.

1

Perl、37

print qw(My IQ is not me!)[$i++].' ';

comperendinousが持っていたものと似ていますが、perlのqwを利用してさらにいくつかの文字を保存します。


1

レブムメッセージ長+ 27

「私のIQは私ではありません!」それは43になります。しかし、私はこのメッセージをサポートします:

uV?'s[S[{The}{rebellion}{against}{software}{complexity.}]]proTKsPROsp

同等のRebol / Red:

unless value? 's [
    s: [{The}{rebellion}{against}{software}{complexity.}]
]

print/only take s
print/only space

Rebolには、IF、EITHER、およびUNLESSの3つの基本的な条件があります。UNLESSはIF NOTと同等ですが、より明確にすることができます。「この条件が真でない限り、常に以下を実行してください。」

この場合、条件は、現在のコンテキストでシンボルSに値が与えられているかどうかをテストすることです。条件式で引用符なしのSを使用しようとすると、評価されてエラーが発生する可能性があるため、引用符を使用する必要があります。 value?あなたは例えば、変数にあることを確認しているシンボルにしたい場合があるため、デフォルトでは、パラメータを引用しません。sym: 'sそして、if value? sym [...] SYMではなくSが定義されているかどうかを実際にチェックします)

プログラムの最初の貼り付けのみが一連の文字列をSに割り当てます。連続した貼り付けでは、シリーズの先頭から文字列を取得し、PRINT / ONLYに渡します。

(注:PRINT / ONLYは、Rebol 3およびRedで検討されているPRINの推奨される代替方法です。現在、Rebmuで印刷の代替がテストされています。)


1

AHK、44バイト

i++
Send % SubStr("He is an OK ex",i*3-2,3)

最後の改行に注意してください。ここで唯一巧妙なことは、文字列がすべて3文字の単語であるため、何も分割する必要がないことです。代わりに、に基づいて部分文字列を取得するだけiです。出力は、キーボードで入力されたかのようにアクティブ画面に出力されます。


0

Javascript(53)

選択した単語がソリューション(バイトカウントを除く)にやや無関係になるように、テキストに対して何も凝っていないので、私はaditsuからテキストを取得しました。

var i=i|0;alert("He 0is 0but 0a 0dog".split(0)[i++]);

alertこの場合はカウントされますか?編集:ルールを読んで、おそらく私はスペースで文字列を結合していないので、そうではありません。公平にするためにスペースを追加します。

またvar、この場合、高価なものが実際に関連することに注意してください。


なぜvar i|=0;ここで動作しないのか誰でも説明できますか?
flawr 14

@flawrあなたは行うことができない|=かと類似しvar。なしでvar、あなたはReferenceError: i is not definedvar i=i|0はに展開されvar i=undefined|0undefined|0明らかにである0
nyuszika7h 14

これは巻き上げのために機能します。var i=i|0はと同等var i;i=i|0です。そのため、参照エラーは発生しません。最初に0に設定される理由は、@ nyuszika7hが言ったことです。
インゴバーク14

1
しかし、これは言葉を個別に警告します。
誇りに思ってhaskeller 14

0

Perl、43 56

print substr'Mine was not Red 5!',4*$i++,4;

私はこれに勝てないことを受け入れます。私の最初の試みはその理由を説明しています:

@a=('This',' code',' is',' too',' long.');print$a[$i++];

0

ルア、77

非常に簡単なソリューション:

i=(i or 0)+1;io.write((i==1 and""or" ")..("Thebigfoxwasup."):sub(3*i-2,3*i))

(H(X)= 4.23)


0

Javascript、138

g=this;clearTimeout(g.t);g.i|=0;i++;g.t=setTimeout(
    function(){console.log(["I'll","sleep","when","I'm","dead."].slice(0,i).join(' '))},0);

(読みやすくするために追加の改行が追加されています)

印刷しI'll sleep when I'm deadます。タイマーを使用して、出力が1回だけ印刷されるようにします


0

Pure Bash、51バイト

a=(All you need is Love!)
printf "${i:+ }${a[i++]}"

H(X)= 3.59447

これは、短いフレーズの1つを密猟することでもう少し掘り下げることができますが、デカルトの「レノンの最も有名な引用ます。(申し訳ありませんが@Descartesですが、すべての単語は一意である必要があります)。

出力:

$ ./phrase.sh 
All$ cat phrase.sh phrase.sh phrase.sh > phrase3.sh
$ chmod +x phrase3.sh 
$ ./phrase3.sh 
All you need$ 
$ cat phrase.sh phrase.sh phrase.sh phrase.sh phrase.sh > phrase.sh
$ chmod +x phrase5.sh 
$ ./phrase5.sh 
All you need is Love!$ 

単語間にスペースを挿入するように注意しますが、先頭または末尾のスペースは挿入しません。

bashでは、未定義変数は、文字列として展開されると値「」を持ちますが、算術的に展開されると値0を持ちます。


5つの単語が一意であることが要求されている...
センモウヒラムシ

あなたのコードは5ワードのフレーズを扱うのに十分な汎用性があるように見えるので、必要なエントロピーが3.5であるものを考えることができると確信しています(これには2文字が多すぎます...)。
センモウヒラムシ

@githubphagocyte私はあなたが丸めの恩恵を与えてくれることを望んでいました;-) OK、私は!今余分にそれを修正しました-トリックをするようです。
デジタル外傷14

0

PHP 89 78文字

少し冗長で、ほとんど間違いなく勝ちませんが、とにかく楽しかったです。ここに私が思いついたものがあります

フレーズ:

code golf is pretty fun

エントロピー= 3.82791

コード:

<?
$i=(isset($i)?$i+1:0);
$w=["code","golf","is","really","fun"];
echo $w[$i].";

ゴルフ:

<?$i=(isset($i)?$i+1:0);$w=["code","golf","is","really","fun"];echo $w[$i].

0

Python3-122バイト

ポッドベイドアを開きます[HAL]

これでオタクの信用を得られると思います。質問がもう1つの単語を許可する場合...

私のプログラムはファイル名(p.pyがベース)を取り、ベース名が繰り返される回数をチェックします。次に、文字列からスライスを数n回取得します。ファイル名のs nの数p

import sys,re
for i in range(len(re.findall(re.compile('p'),sys.argv[0]))):print('Otpbdphoaoeedyon   r    s'[i::5],end='')

~ $ python p.py
Open

~ $ python pp.py
Open the

~ $ python ppp.py
Open the pod

~ $ python pppp.py
Open the pod bay

~ $ python ppppp.py
Open the pod bay doors

正規表現の利点は、プログラムを好きなように呼び出すことができ、それでも動作することです(コードのベース名を変更する場合):私の元のプログラムはgolfed.pyと呼ばれていました。


0

05AB1E、21バイト(非競合)

“€Œ‰‹€‡Øš‹É.“ª#¾è¼?ð?

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

用途:

This works for literally anything. 
H(x) = 4.02086

説明

“€Œ‰‹€‡Øš‹É.“ª#¾è¼?ð?
“€Œ‰‹€‡Øš‹É.“ª        # Pushes "This works for literally anything."
              #       # Split on spaces
               ¾è     # get element at index of counter_variable (default 0)
                 ¼    # Increment the counter_variable
                  ?   # Print the selected element
                   ð? # Prints a space

これを見なかった、“€í€Ü€…‚¿‹·“hehe と同じ近くに投稿
マジックタコ


0

SmileBASIC、54バイト

DATA"Does"," anybody"," have"," a"," key?
READ W$?W$;

「砂は食べられます」と思っていました。しかし、それはどういうわけかエントロピーテストに失敗します。もちろん、短いフレーズを選択することもできましたが、それは退屈です。

READキーワードは、から値を読み取りDATA、変数に格納します。READもう一度使用すると、次のアイテムが取得されます。


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.