拘留中の行の書き込み


63

前書き

悪いニュースの人-あなたは拘留されました。あなたの英語の先生はこのサイトを理解していないので、「あなたのデジタルドッキーで数学をやめるのを止めてください、これは英語のクラスです!」

彼女は、黒板に25回、お気に入りのことわざを書くように命じました。これにより、黒板に合計100行が表示されます。

The eighteen-hundreds were a time for rum.
The nineteen-hundreds were a time for fun.
The two-thousands are a time to run
a civilized classroom.

幸運なことに、あなたは熱心な読者です(もちろん、エキスパートのコードゴルファーは言うまでもありません)!あなたはおそらくあなたを楽にさせるかもしれないトリックについて読んでいます。

フォックストロット

(Foxtrot by Bill Amend)

残念ながらジェイソンにとってはうまくいきませんでした。しかし、あなたはより良いアイデアを持っています!あなたの英語の先生はあなたが数学をしていると思っているので、あなたがあなたのプログラムからすべての数字を省くならば、それはちょうどうまくいくかもしれません!また、あなたは怠け者の生徒であり、ボードに多くの文章を書きたくないので、プログラムをできるだけ短くしておく必要があります。

次の規則に準拠するプログラムを作成します。

  • プログラムは、上記の4行を25回印刷する必要があります。行はその順序で出力され、繰り返されなければなりません。合計100行の出力(最後の末尾の改行または先頭の先頭の改行でも構いません)。
  • 文字は使用できません0123456789。あなたの先生は数学に戸惑い、あなたを呼ぶでしょう!
  • インポートをカウントせずに、インポートおよび外部ライブラリを使用できます。あなたの英語の先生はプログラミングについて知りません。ジェイソンは書かないことで多くの仕事を救うことができた#include <stdio.h>でしょうし、あなたは彼と同じ間違いをしたくありません!
  • byteカウントでプログラムを採点します。最低スコアが勝ちます!

2
テキストが「1900年代」と表示されていた場合、出力の書き込みは少し難しくなります。
インゴバーク

30
コミックス・へ:...彼は\ n個のを印刷していない、と1からループは(C自然に対してのように)かなり厄介である
VX

11
@VX Bill Amendは長年Pascalに熱心に取り組んでおり、Cを作成するたびにそれが明らかになります。
ふわふわ14年

5
これは私の昔の英語教師の一人のように聞こえます。
カズウルフ14

2
ここで+を禁止することは理にかなっているでしょうが、多分それは難しすぎるでしょう。
ファラプ14年

回答:


9

CJam、109の 107 106 104 103バイト

0000000: 22 0c 20 4f 18 41 e4 d8 a5 f3 95 cf 5e 2b cb 1c  ". O.A......^+..
0000010: 44 64 2f bf 28 23 e2 47 4e 4e 77 73 fc 43 09 a2  Dd/.(#.GNNws.C..
0000020: 09 0b fb 18 29 e8 e8 49 5d fc 00 da b8 70 b6 3e  ....)..I]....p.>
0000030: 0c 24 d7 5a 5b 28 1c 45 2e 90 63 86 04 5c 3e 95  .$.Z[(.E..c..\>.
0000040: 4b ae 66 22 48 48 2a 62 46 47 2b 62 22 54 0a 20  K.f"HH*bFG+b"T. 
0000050: 2d 2e 22 27 7b 2c 57 25 7c 66 3d 7b 28 2f 29 2a  -."'{,W%|f={(/)*
0000060: 7d 5a 2a 43 44 2b 2a                             }Z*CD+*

上記はリバーシブルxxdダンプです。

テスト中

オンラインインタープリターでこれを実行することで、上記のコードを生成して実行できます

"bxyyeighxrum.yninexfun.ytwo-thousands abto run
a civilized classroom.y
The xteen-hundreds webfor bre a time ""T
 -."'{,W%|f#31bHH*b:c`'\2*/'\*"HH*bFG+b""T
 -."`"'{,W%|f={(/)*}Z*CD+*"]:+~

生成されたコードを(実行せずに)見るには、finalを削除し~ます。

バイト数をカウントするには(ISO-8859-1では1文字が1バイトです)、最後~をで置き換え,ます。

印刷可能バージョン(122バイト)

"bxyyeighxrum.yninexfun.ytwo-thousands abto run
a civilized classroom.y
The xteen-hundreds webfor bre a time "{(/)*}Z*CD+*

文字列(S)をプッシュした後、次が実行されます。

{    }Z*        " Repeat 3 times:     ";
 (              "     Q := S.shift()  ";
  /             "     T := S.split(Q) ";
   )            "     R := T.pop()    ";
    *           "     S := T.join(R)  ";
        CD+*    " S *= 12 + 13        ";

モアーゴルフ

印刷できない文字列(U)をプッシュした後、次が実行されます。

HH*b                        " U := U.base(17 * 17) ";
    FG+b                    " U := U.base(15 + 16) ";
        "T\n -."            " P := 'T\n -.'        ";
                '{,W%|      " P |= 'zyx...\0'      ";
                      f=    " U[i] -> P[U[i]]      ";

これにより、印刷可能バージョンの文字列がプッシュされます。残りのコードは以前と同じように機能します。


コードを使用して、144バイトのこの生成コードを取得します。私は何か間違っていますか?
オプティマイザー14年

UTF-8エンコーディングでは、バイトカウントが高くなります。ISO-8859-1の場合、バイトカウントは109です。置換~,て検証することができます。
デニス14年

2
オプティマイザーの正確な結果が得られましたが、追加する]:+~ことで機能しました。それをコードに追加してみませんか?
明るい14年

1
@ user23013:Javaインタープリターは、I / Oの$ LANGを尊重します。内部的には、CJamには16ビット文字のみがあります。
デニス14年

3
実際には、ソリューション自体を圧縮せずに圧縮する必要はありません。圧縮自体がないと、124バイトしかないため、他のすべてを破ります。
オプティマイザー14年

77

JavaScript(ES6)164

B='teen-hundreds were a time',alert(B.replace(/./g,
"The eigh"+B+" for rum.\nThe nine"+B+" for fun.\nThe two-thousands are a time to run\na civilized classroom.\n"))

FireFox / FireBugコンソールでテストします。


19
これは天才です!
オプティマイザー14年

1
うん、各文字をより大きな文字列に置き換えます。大きな文字列のコピーを25個作成します。
オプティマイザー14年

1
@Optimizerそれ天才です:)
FryAmTheEggman 14年

3
@Malvolio実際、繰り返されるセクションは30文字です。そして、この単純な解決策を見つける前に、単語の追加と切り取り、置換の置換の膨大なシーケンスを示すことができました。
edc65 14年

1
@IsmaelMiguel ES6ブラウザーを意味すると思います。問題:この課題が投稿された時点で、テンプレート文字列はどのブラウザーにも実装されていませんでした。 。回答として投稿してください。
edc65

34

パイソン:188 173 160 153

a="teen-hundreds were a time"
print"The eigh%s for rum.\nThe nine%s for fun.\nThe two-thousands are a time to run\na civilized classroom.\n"%(a,a)*len(a)

私はあまりPythonをしませんが、これは私にはかなり短いようです。

編集:だから私は間違っていた、それはまったく短くなかった!コメントの支援をありがとう:D


1
改行を失い、forループでインデントして数バイトを節約できます。
ホロウェイ14年

1
@Geobits、私はそれを157
Holloway 14年

1
@GeobitsはWindowsマシンで実行していますか?ウィンドウの行エンコードは、多くの場合、\ nではなく\ r \ nです。それが私たちには157バイトですが、あなたには160バイトを表示している理由かもしれません。
ロブ・ワッツ

2
これは160のみです。おそらく、3スキップされている\\n...脱出によると
オプティマイザ

1
あなたは、の値を移動することができますbprint%よりも優先順位が高いです*
FryAmTheEggman 14年

29

CJam、151 140 135 132 130 128バイト(Tweetable)

"TeighYrum.TnineYfun.Ttwo-thousands are a time to run
a civilized classroom.""YT"["teen-hundreds were a time for ""
The "]erAF+*

ここで試してみてください

私はこれをUnicodeに変換することで110バイトに短縮することができますが、それは他のUnicodeソリューションを破っていないので、私はむしろそれを入れたくないです:)


23
おい、あの:D絵文字は何をしているの?!拘留中に友人にテキストメッセージを送っていますか?校長室に行きます!
ドアノブ

2
@Doorknob:D:P
オプティマイザー14年

たぶん、あなたが作ることができるTの別名.\nThe 、これは出力文字列の先頭から生成する余分な行を削除する(私のcjam-FUは、あなたが簡単にそれを行うことができるかどうかを把握するために十分ではありません)

@professorfishは、保存するよりも多くのバイトを消費することになります。mothereff.in/…*%28Y%2F%28%40 \
オプティマイザー14年

Nitpicking:ASCII互換コードページの上位128バイトを使用しても、Unicodeとは関係ありません。
デニス14年

23

PHP、0バイト



インポートをカウントせずに、インポートおよび外部ライブラリを使用できます。

このコードを実行するにはdata://text/plain,<?php...classroom.\n";、これで呼び出されるライブラリをインポートする必要があります。

<?php require_once 'data://text/plain,<?php
  for($i=ord("z");$i>ord("a");$i--)
    echo "The eighteen-hundreds were a time for rum.
The nineteen-hundreds were a time for fun.
The two-thousands are a time to run
a civilized classroom.
";'; ?>

そしてallow_url_include、あなたはあなたので有効になっている必要がありますphp.ini

デニスのおかげで、これ以上の番号や内線番号はありません。


9
私の最初の本能は抜け穴について何かを叫ぶことでしたが、この答えは実際には自己完結型なので、これはPHPを使用してPythonの答えのために意図的に作成された抜け穴を悪用する賢い方法だと思います。すでに不正行為require_once "data://text/plain,The eighteen-hundreds...";をしているので、shを必要とせず、数字を使用せず、0バイトのままのを使用できます。
デニス14年

10
創造性のためにこれを支持しますが、これは受け入れません。
hmatt1 14年

14

ルビー、 185 180 176バイト

編集:文字列補間、@ britishteaに感謝

それは私の初めてのゴルフであり、私はそれほどRubistではありません(しかし、私は確かにRubyが大好きです)。とにかく、これはそれです(短縮、Doorknobの提案)。

t=' were a time for '
s="The eighteen-hundreds#{t}rum.
The nineteen-hundreds#{t}fun.
The two-thousands are a time to run
a civilized classroom."
s.split.size.next.times{puts s}

1
繰り返しの単語/単語グループの一部を文字列補間に置き換えることで、さらにゴルフを進めることができます。
イギリス茶14年

3
文字列に(ほぼ)25個の単語があることに気づいた+1
Digital Trauma 14年

2
s.split.size.next5文字を節約します(分割するスペースを指定する必要はありません)。
ドアノブ

Rubyはわかりません(s.split.size+1).timesが、1バイト短くなりませんか?
seequ 14年

1
@Siegは数字を使用できません!
rjdown 14年

13

Javaの249 231 230 222

私の最初の答え!よく知っている言語を使って始めてみませんか。

class c{public static void main(String[]g){for(int a='!';a++<':';out.println("The eighxrum.\nThe ninexfun.\nThe two-thousands are a time to run\na civilized classroom.".replaceAll("x","teen-hundreds were a time for ")));}}

非ゴルフ

import static java.lang.System.*;
class c
{
    public static void main(String[]g)
    {
        for(int a='!';a++<':';out.println("The eighxrum.\nThe ninexfun.\nThe two-thousands are a time to run\na civilized classroom.".replaceAll("x","teen-hundreds were a time for ")));
    }
}

9
ようこそ!publicクラスのを取り除きargs、1文字に短縮できます。a++<':'個別にインクリメントする代わりに行うこともできます。OPはインポートをカウントしないので、を使用してもう少し節約でき、後で(それがカウントする)import static java.lang.System.*;書く必要はありませんSystem.。それを行うと、230程度になりました。Javaのヒントページをまだ見ていない場合は、ご覧ください
ジオビット14年

@Optimizerありがとう!上記の取り消し線が表示されませんでした。
発光14年

@Luminous NP :)
オプティマイザー14年

@Geobitsありがとうございます!どうやら、ループ自体にコードを挿入することもできます。何も追加も削除もしませんでしたが、その方がゴルフのように見えると思います。
発光14年

4
ループの悪用は非常に一般的です。あなたが持っていた場合は、複数の体内でのステートメントを、あなたは(あなたがとにかく外にセミコロンを必要とするので)単一の文字を保存するために内側から外側に1、残りを置くことができます。多くのゴルフは、1つの大きなループになります。また、「もっとゴルフをしているように見える」ことは、たとえそれが保存されない場合でも何でもする完全に正当な理由です:P
Geobits 14年

11

C 171

a='a';b="teen-hundreds were a time for ";main(){for(;a++<'z';)printf("The eigh%srum.\nThe nine%sfun.\nThe two-thousands are a time to run\na civilized classroom.\n",b,b);}

最初は、他のCソリューションよりも優れた単純なバージョン(189バイト)を試しました...

main(a){for(a='a';a<'z';++a)printf("The eighteen-hundreds were a time for rum.\nThe nineteen-hundreds were a time for fun.\nThe two-thousands are a time to run\na civilized classroom.\n");}

後で少し最適化しました...


1
ええ、それは気の利いたことです。暗黙的にtypeを持つ文字列リテラルが割り当てられた静的変数は実現しませんでしたchar *
FireFly 14年

@FireFly GCCは、aデフォルトで値intを受け入れることができるため、おそらく正常にコンパイルされcharます。b私はそれを呼び出していない限り、それは好きではありませんchar[]。VX、使用しているコンパイラは何ですか?
レベルリバーセント14年

bでもありintますが、文字列リテラルへのポインタを保持しています。GCCでは完全に問題ありません(マシン4.8.2にあります)。
VX 14年

1
for(a='a';++a<'z';)
seequ 14年

9

JavaScript、ES6、174 172 154バイト

@ edc65のreplaceトリックを使用します。ありがとう!

alert((d="teen-hundreds were a time").replace(/./g,`The eigh${d} for rum.
The nine${d} for fun.
two-thousands are a time to run
a civilized classroom.
`))

テンプレート文字列の使用により、最新のFirefox(34以降)でのみ機能します。


@Nijikokun 25回ではなく30回の繰り返しが発生することを知っていますか?
オプティマイザー14年

私は、最新の午前以来34 FFがベータ版か何かである(単にチェックする)と、それは33であり、それはそこに動作しないことを推測しています
Sammaye

8

BrainFuck(1,597文字

+++++++++++++++++++++++++[>->-[--->+<]>-.[---->+++++<]>-.---.--[--->+<]>-.+[->+++<]>++.++++.--.+.++++++++++++.+++[->+++<]>..+++++++++.[----->++<]>+.[->++++++++<]>.[--->+<]>---.-------.----------.++++++++++++++.-------------.-.--[--->+<]>---.+[---->+<]>+++.--[->++++<]>-.[->+++<]>.+++++++++++++.-------------.--[--->+<]>-.[->+++<]>+.-[->+++<]>.---[->++++<]>.-----------.++++.--------.--[--->+<]>-.++[->+++<]>.+++++++++.+++.[-->+++++<]>+++.---[----->++<]>.+++.--------.+[----->++<]>++.>++++++++++.>-[--->+<]>-.[---->+++++<]>-.---.--[--->+<]>-.+[----->+<]>+.-----.+++++.---------.[--->+<]>---.+++[->+++<]>..+++++++++.[----->++<]>+.[->++++++++<]>.[--->+<]>---.-------.----------.++++++++++++++.-------------.-.--[--->+<]>---.+[---->+<]>+++.--[->++++<]>-.[->+++<]>.+++++++++++++.-------------.--[--->+<]>-.[->+++<]>+.-[->+++<]>.---[->++++<]>.-----------.++++.--------.--[--->+<]>-.++[->+++<]>.+++++++++.+++.[-->+++++<]>+++.++[->+++<]>.-[--->+<]>--.-------.[----->++<]>++.>++++++++++.>-[--->+<]>-.[---->+++++<]>-.---.--[--->+<]>-.---[->++++<]>.+++.--------.[->+++++<]>++.+[--->++<]>.------------.+++++++.++++++.--.++[->+++<]>++.+++++++++++++.----------.--[--->+<]>---.+[---->+<]>+++.[->+++<]>+.--[--->+<]>---.-------------.--[--->+<]>-.[->+++<]>+.-[->+++<]>.---[->++++<]>.-----------.++++.--------.--[--->+<]>-.---[->++++<]>.-----.[--->+<]>-----.---[----->++<]>.+++.-------.>++++++++++.--[--->++++<]>+.-[->+++<]>.+[->+++<]>.++++++.[->++++++<]>.[------>+<]>.+++.---.-[--->+<]>++.---[->+++<]>.-.-[--->+<]>-.+[->+++<]>.+++++++++.-----------.--[--->+<]>--..-.---..--.+[----->++<]>++.>++++++++++.[[-]<+]<-]

誰もが興味を持っている場合、これはまださらにゴルフすることができます。

これテストして、すべてのルールを満たしながら正しい出力が得られることを確認できます。


5
これは何ですか?ランダムな波線ではなく、文章を書くように言いました!ここには言葉すらありません!
Riking

5
うーん。私は、目標は最小限のキャラクターを使用することだと思います。あなたは確かに「反目標」を獲得しました:-)
カールウィトフト14年

7

Perl-145

たくさんの答えを見てうれしいです!これがPerlソリューションです。

$s="teen-hundreds were a time for";print"The eigh$s rum.
The nine$s fun.
The two-thousands are a time to run
a civilized classroom.
"for b..z

7

彼女は数学がとても嫌いなので、なぜMathematica(177)

   a = "teen-hundreds were a time for "; Do["The eigh" <> a <> "rum.
   The nine" <> a <> "fun.
   The two-thousands are a time to run a civilized classroom." // Print, {StringLength@a}]

6

JavascriptをES6、198の 193バイト

m=Math;alert("The eighteen-hundreds were a time for rum.\nThe nineteen-hundreds were a time for fun.\nThe two-thousands are a time to run\na civilized classroom.\n".repeat(~~(m.exp(m.PI)+m.E)))

あなたの先生は数字が欲しくありませんが、彼らは英語の先生なので、Math.floor(Math.exp(Math.PI)+Math.E)意味がわかりません。

より読みやすい:

alert("The eighteen-hundreds were a time for rum.\n\
 The nineteen-hundreds were a time for fun.\n\
 The two-thousands are a time to run\na civilized\n classroom.".repeat(Math.floor(Math.exp(Math.PI)+Math.E)))

最新のFirefoxで実行する必要があります


1
末尾の改行がありませんので、最初と最後の行は75行を与えて追加され
edc65

XKCDのe ^ piの参照でルールを曲げると+1を授与しますが、-piではなく+ e ... Bravo!
WallyWest 14年

-4バイト:with(Math)alert("long string here".repeat(exp(PI)+E|[]))
nderscore 14年

:まあ、数学を忘れて(q='aaaaa'.length)*q
edc65

@ edc65のコメントも忘れてください!これを使用してください"\x18".charCodeAt()!(矢印を上にハードコードすると、1トン節約できます!)
イスマエルミゲル14年

6

Javascript- 178バイト 176バイト

私の最初のゴルフは、少し操作しているオペレーターで試してみようと思ったが、期待したほどにはうまくいかなかったが、まあまあだ!

c="teen-hundreds were a time for "
b=!!c
alert(Array((b+b+b<<b+b)+b<<b).join("The eigh"+c+"rum.\nThe nine"+c+"fun.\nThe two-thousands are a time to run\na civilized classroom.\n"))

私はすでに拘留されており、明らかに自分自身の行動に問題があるので... Javascript-71バイト

これはおそらく私をより深いトラブルに巻き込むでしょうが、すでに拘留中に自分自身を上陸させ、拘留をだまそうと計画している場合、どうやったらクラスで自分自身を振る舞うべきかについての十分な判断が欠けているようです。おそらく、私が自分の教師の上に1つを引っ張ることができれば、私はそこにいる他のすべてのゴルファーの上に1つを引っ張ることができます。

b=+true;alert( Array((b+b+b<<b+b)+b<<b).join($('code')[+!b].innerHTML))

早く!Chrome / IE 11 / Firebugユーザーは、すぐにコンソールを開いて試してください。

(私をあまり傷つけないでください、面白いと思いました)


1
72は楽しいです。176は何度も間違っています。Array(25).join()は24回繰り返しますが、最後の文に改行がありません。全部で100 *ではなく24 * 3 = 72行(怠
laz

8月、大丈夫です。今178と71
シドニー

1
"een-hundreds ... for"にtと末尾のスペースを追加して2バイト節約できます。
発光14年

2番目のコードは何をしていますか?
ちょうど半分14年

1
@justhalf、それは明らかにSOネットワークが利用する一般的なJavaScriptライブラリであるJQueryを使用します。$は、他の多くの機能の中でも特に、DOM要素の選択から多くの作業を引き受ける関数です。この場合は「code」タグを持つすべての要素である$( '<selector>')を使用して、すべての要素を含むオブジェクトを取得します。[+!b]を使用することで、整数値falseを取得します。これはゼロであるため、0番目のインデックスを選択します。これは、OPの最初のコードブロックです。
シドニー14年

5

C#-229 216バイト

無料のusingFTW!

using c=System.Console;
class S{static void Main(){var a="teen-hundreds were a time";for(int b=a.Length,i=b-b;i++<b;)c.Write("The eigh"+a+" for rum.\nThe nine"+a+" for fun.\nThe two-thousands are a time to run\na civilized classroom.\n");}}

別の同じバイト数(usingただし、より多くの乱用)

using i=System.Int32;
using c=System.Console;
class S{static void Main(){var a="teen-hundreds were a time";for(int b=new i();b++<a.Length;)c.Write("The eigh"+a+" for rum.\nThe nine"+a+" for fun.\nThe two-thousands are a time to run\na civilized classroom.\n");}}

4
~~(╯°□°)╯︵┻━┻–
ウィリアムバルボサ

「for」をa
FryAmTheEggmanに

@FryAmTheEggmanの文字列は25文字の長さで、これを使用して数値25を個別に取得しています。ただし、彼はこのメソッドを交換して、単に文字を互いに減算する(':'-'!'== 25)a.Lengthことができます。これは、よりも短く、提案どおりに含めることができます。(Alternativly、他の回答をして、ちょうどループの間に見えるようにしてください!:、私たちは皆、同じ文字を選んだのかおかしい)
VisualMelon

@VisualMelonおっと、あなたは完全に正しい。
FryAmTheEggman 14年

1
usingはカウントされないので、できると思ったのですが、OPはこれを明確にしましたか?
ウィリアムバルボサ

5

Befunge-93、268 260 256(グリッドサイズ:72x6 = 432)

#v"K">:!#@_v>$"enin">,,,,::-" rof emit a erew sderdnuh neet">:#,_$::!!-#
, ,,,"The "<|\!\%-"\^"::%-" #":-!!:
   -"#-"-::$_ "hgie"^v1"two-thousands are a time to run"
$_$  "nuf"v"rum"
v1-"##",,,<      >:#,_"moorssalc dezilivic a"1
_# < ^,,\-"AK."$_,#!:

これは私の初めてのゴルフですので、他に何も追加しないので、この問題に対してまだ行われていない言語を試してみようと思いました。Befunge-93と互換性があるため(80x25グリッド内に収まり、Befunge-93命令のみを使用)、Befunge-98でも動作するはずです。念のため、ポインターがスペース以外の非命令文字を通過することも避けました。仕様で実際にそれらの文字がノーオペレーションとして定義されているかどうかは思い出せませんでした。MYコードには鼻の悪魔はいません。

Befungeコードを実際にアンゴルフすることはできません。ここで注意すべき重要な点は、Befungeが文字をASCII値としてスタックにプッシュすることであり、文字通りに数字を参照することなく数字を参照することが比較的簡単になります。"K"左上には、繰り返し回数を繰り返しあたり「」節の数を参照すると、75です。この数値(のコピー)にモジュラスとその他の巧妙さを使用して、各ゴーアラウンドで印刷を行うパスを決定します。::-ゼロを終了する文字列に便利な、ゼロの良いイディオムです。ここで2回使用します。

場合によっては、ポインターは文字列を定義している場所を通過する必要があります。したがって、特定の文字の選択は、ある時点で特定の数字を取得するために使用されます。

多くのBefungeインタープリターの良いところは、グリッドの周りのポインターダーツを見ることができ、スタック内の値を確認できることです。そうすれば、あなたはステップスルーして、プログラムが自分でどのように動作するかを見ることができます。好みのBefungeインタープリターがない場合は、http://befungius.aurlien.net/を使用することをお勧めします。

これはおそらくもう少し(または多く)削減できます。フィードバックをお願いします!より良い説明を提供する必要がある場合は、誰かに知らせてください。私はこれが初めてです。

編集 -プログラムが終了したときに最後の行への不要なリダイレクトを取り除くことにより、数バイトを削り落としました(@以前の場所を置くだけ^です)。

別の編集 -さまざまな場所でさらにバイトを削ぎ落としました。(Befungeの回答の傾向のように、グリッドサイズも追加されました。)


こんにちはKasranはcodegolfスタック交換へようこそ!この答えは見栄えがいいです。あなたの説明は良好であり、誰もがコンパイラを持っているわけではない奇妙な言語に本当に役立つBefungeインタプリタにリンクしました(人々は一般に「ここで実行」のようなことをします)。
hmatt1 14年

Befungeは非常に難しい言語であり、書くときはコード自体のサイズを頭に入れておく必要があります。あなたのコードは見栄えが良く機能します。しかし、re a time どこかに保存するとサイズは小さくなりますか?
イスマエルミゲル14年

私は私の知っている任意のFunge-98固有の命令や行動を使用していないんだけど、私はこの答えを書いたので、私はBefungiusインタプリタの特定の動作は、標準ではないことを学びました-つまり、使用して#スキップする行の一端にもう一方の端の文字(たとえば、CCBIでは、#それはもう一方の端の文字との間の無限のスペースをスキップします)。このプログラムは中断されます。このことを念頭に置いて、この投稿を修正することはありません。
カズラン

そこには数1桁がありますが、これは許可されていません
Jo King

4

Pyth 135 136 140

*ltG%"The eigh%srum%snine%sfun%stwo-thousands are a time to run\na civilized classroom.\n"*hhZ("teen-hundreds were a time for "".\nThe 

末尾のスペースに注意してください。

Pythonの @Geobitsと彼のコメント作成者の回答とほぼ同じトリックを使用して、文字列を作成します。また、この答えのいくつかを使用します

これは、25個の出力を生成するために、その長さよりも1つ少ない値Gを含む組み込み変数を使用しabcdefghijklmnopqrstuvwxyzます。


1
これは135 バイトではなく136バイトであるようです
オプティマイザー14年

1
申し訳ありません@Optimizer、私は自分のノートを読んでください。私はそこにそれを貼り付けたとき、私は、末尾のスペースを忘れてしまった自分自身を:S
FryAmTheEggman

4

ルビー- 152 141

puts"The eight#{e="een-hundreds were a time for "}rum.
The ninet#{e}fun.
The two-thousands are a time to run
a civilized classroom.
"*(?X-??)

http://repl.it/2Om/6


1
1.8の文字リテラルの巧妙な使用!を使用String#*する代わりに、行を25回繰り返すことができInteger#timesます。
英国茶14年

@britishtea-御treat走:)
マイキー14年

1
最初に行を割り当てないことで、さらに数バイトを削ることができます。putと文字列リテラルの間のスペースはオプションです(puts"hi"正当です)。
イギリス茶14年

補間内でeを割り当てるのはいい感じです。
ウェインコンラッド14年

3

Python、165バイト

h="hundreds were a time for "
t="The "
for i in h:print t+"eighteen-"+h+"rum.\n"+t+"nineteen-"+h+"fun.\n"+t+"two-thousands are a time to run\na civilized classroom."

hの長さが25であることは本当にうまくいきました。これは意図的なものではありませんでした。=)


3

Python 2-143

愚かな答え:

from this import i
a="teen-hundreds were a time for ",".\nThe "
print"The eigh%srum%snine%sfun%stwo-thousands are a time to run\na civilized classroom.\n"%(a+a)*i

全カウントは162であることに注意してくださいfrom this import i

私のピス戦略と同様の代替品を使用していますが、これからインポートすることの愉快さを発見した後、私はこれを投稿することを避けられませんでした:)


の使用のために+1 from this import i!それについてどうやって知りましたか?
ベータ崩壊14年

1
@BetaDecay私は実際に退屈し、pythonの禅を読むことにしたので、通訳に行ってを書きましたimport this。それから私は考えました:「thisモジュールには他に何がありますか?」だから私は電話したdir(this)。ローや辞書、アップ文字化けした文字列、およびとともに、見よ"!"変数は、25に等しい数値定数...があった
FryAmTheEggman

3

PHP(175 157156バイト。UNIX EOFを含む152):

最もゴルフされたソリューションではありませんが、確かに仕事をし、いくつかの試みよりも小さいです。

コードは次のとおりです。

$a=a;$f='re a time';$r="teen-hundreds we$f for";while($a++<z)echo"The eigh$r rum.
The nine$r fun.
The two-thousands a$f to run
a civilized classroom.
";

旧版:

$a=a;while($a++!=z)echo"The eighteen-hundreds were a time for rum.
The nineteen-hundreds were a time for fun.
The two-thousands are a time to run
a civilized classroom.
";

これは、phpが文字を循環させるために機能し、そうでないかどうかを確認zして停止します。

(好奇心の1つは、phpに到達zするとに進むことaaです。)


3
ここでの一般的な規則は、おそらくあなたの言語が非常に頑固でCRLFしか受け入れない場合を除き、改行を1バイトとしてカウントすることです。これはPHPには当てはまりません。
nyuszika7h 14年

3

Python 2-155

注:制御文字はSEでは表示されないため、に置き換えました\x19

a,b='\nThe ','teen-hundreds were a time for '
print(a+'eigh'+b+'rum.'+a+'nine'+b+'fun.'+a+'two-thousands are a time to run\na civilized classroom.')*ord('\x19')

Base 64バージョン:

YSxiPScKVGhlICcsJ3RlZW4taHVuZHJlZHMgd2VyZSBhIHRpbWUgZm9yICcKcHJpbnQoYSsnZWln
aCcrYisncnVtLicrYSsnbmluZScrYisnZnVuLicrYSsndHdvLXRob3VzYW5kcyBhcmUgYSB0aW1l
IHRvIHJ1bgphIGNpdmlsaXplZCBjbGFzc3Jvb20uJykqb3JkKCcZJyk=

輸入については、私はあなたが少しを救うことができると思うfrom string import *か、しかしそれはPythonで呼ばれています
ホタル

1
「10」をbに移動できます。
FryAmTheEggman 14年

2
[]最初の行の括弧を削除すると、暗黙的にタプルが作成されてからアンパックされます。
ドアノブ

また、移動することができますord('d')//len('aaaa') to before the string so you don't have to bracket it.
FryAmTheEggman

1
@Dennis OPの最新の編集により、主要な改行を使用できます。
ベータ崩壊

3

LiveScript-181

p=(a,b)->"The #{a}teen-hundreds were a time for #b.\n"
each console.log,map (->(p \eigh \rum)+(p \nine \fun)+'The two-thousands are a time to run\na civilized classroom.'),[\A to\Y]

必要なインポート:

{each, map} = require 'prelude-ls'

Node.jsで実行したい場合は、npmからLiveScriptnot livescript)およびprelude-lsパッケージをインストールし、プログラムを含むに置き換えalertconsole.log実行lsc prog.lsprog.lsます。


13
ルールを参照してください:「キャラクターを使用することはできません0123456789
ポールR 14年

2
ナイスキャッチ、修正済み。
nyuszika7h 14年

2

T-SQL:206

5行のクロス結合を使用して、フレーズを選択する25行を生成します。改行は出力にとって重要です。

with c as(SELECT\ N FROM(VALUES(\),($),($),($),($))A(B))SELECT REPLACE('The eigh$rum.
The nine$fun.
The two-thousands are a time to run
a civilized classroom.','$','teen-hundreds were a time for ')FROM c a,c b

2

バッシュ、151バイト

あなた自身の答えのほとんどまっすぐなポート

t="teen-hundreds were a time for"
for i in {a..y};{
echo "The eigh$t rum.
The nine$t fun.
The two-thousands are a time to run
a civilized classroom."
}

2

C、196文字

これは良いCにとって簡単な作業ではありません。「%steen-hundreds ...」パターンを除外すると、2文字が節約できます。

明確にするために空白は含まれません。

#include <stdio.h>
main(){
  for (char*p="The %steen-hundreds were a time for %s.\n",
           *s="The two-thousands are a time to run\na civilized classroom.",
           *q=p;
       *q++ - 'a';
       puts(s))
   printf(p,"eigh","rum"), printf(p,"nine","fun");
}

2

ルビー、145

?K.upto(?c){puts"The eigh#{x="teen-hundreds we#{t="re a time "}for "}rum.
The nine#{x}fun.
The two-thousands a#{t}to run
a civilized classroom."}

説明

  • String#upto行を25回印刷するために使用します。範囲"K".."c"は25文字です。
  • 基本的な文字列補間を使用して、線を短くします。

2
#{a="The "}実際にあなたにもっと多くのキャラクターがかかっています!#{a}と同じ長さですThe
マイキー14年

2

ラケット173

(let([x"teen-hundreds were a time for "])(for([z(+ #xa #xf)])(displayln(~a"The eigh"x"rum.\nThe nine"x"fun.\nThe two-thousands are a time to run\na civilized classroom."))))

ゴルフをしていない:

(let ([x "teen-hundreds were a time for "])
  (for([z(+ #xa #xf)])
    (displayln (~a "The eigh"x"rum.\nThe nine"x"fun.\nThe two-thousands are a
     time to run\na civilized classroom."))))

2

C、215の 203 199バイト

main(a){a<<='\xC'+'\xD';while(a>>=!!a)printf("The eighteen-hundreds were a time for rum.\nThe nineteen-hundreds were a time for fun.\nThe two-thousands are a time to run\na civilized classroom.\n");}

非ゴルフ

main(a)
{
  a<<='\xC'+'\xD';
  while(a>>=!!a)
    printf("The eighteen-hundreds were a time for rum.\nThe nineteen-hundreds were a time for fun.\nThe two-thousands are a time to run\na civilized classroom.\n");
}

ビットシフトを使用して、数値なしで反復しました。

a<<='\xC'+'\xD' aを0b1 [25個のゼロ]に設定します

a>>=!!a ループを繰り返すたびに1ビット右にシフトします

編集: a argcと等しいため、引数なしでプログラムを実行すると、その値はすでに1です。4バイト短い方に変更さa>>='\xB'-'\xA'れましa>>=!!'\xA'た。また、テキストは24回だけ表示されました。それを修正しました。の余分なブラケットを削除しましたwhile

編集2:に変更され!!'\xA'ました!!a。動作しているようで、4バイトを節約します


1
putsより多くのバイトを節約するために使用できます。
Spikatrix

2

ラント、191バイト

最短の解決策ではありませんが、それでもクールです。最初の3行を記述するサブルーチンを作成し、空の引数で呼び出すと25文字の文字列が返されるように設計しました。次に、その長さをリピーターに渡します。

[pin:][$[_:a]:The [arg:a][sync:;ordered]{thousands a|teen-hundreds we}re a time ][r:[len:[$_:]]]{[step:][$_:eigh]for rum.\N[$_:nine]for fun.\N[step:][$_:two-]to run\Na civilized classroom.\N}

ゴルフをしていない:

[pin:]
[$[_:a]:The [arg:a][sync:;ordered]{thousands a|teen-hundreds we}re a time ]
[r:[len:[$_:]]]
{
    [step:]
    [$_:eigh]for rum.\N
    [$_:nine]for fun.\N
    [step:]
    [$_:two-]to run\N
    a civilized classroom.\N
}

オンラインで試す

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