コードの2倍の長さの出力を作成する


85

挑戦

プログラムの長さの2倍のバイトを標準出力に書き込む完全なプログラムを作成します。

ルール

  • プログラムは、ASCII文字を標準出力に書き込む必要があります。

  • 出力の内容は重要ではありません。

  • バイト単位で測定される出力は、ボーナスを満たさない限り、プログラムの長さのちょうど 2倍であり、バイト単位でも測定される必要があります。

  • 末尾の改行は、出力のバイトカウントに含まれます。

ボーナス

プログラムはn、入力として、オプションで数字を受け取ることができます。その場合、出力は正確にn * program lengthバイトでなければなりません。nは常に正の整数であると仮定できます。入力が提供されない場合、nデフォルトは2 でなければなりません。

これを行うと、スコアから25バイトを差し引くことができます。

最短のプログラムが勝ちます。

制限事項

  • 標準的な抜け穴はありません。

  • プログラムは少なくとも1バイトの長さが必要です。

  • ソースコードに不要な空白を追加してその長さを変更する必要はありません。同様に、コメントはカウントされません。

  • ボーナスを満たさない限り、プログラムは入力を受け付けない必要があります。ボーナスを履行する場合、整数が唯一の入力でなければなりません。

最低スコア(バイト単位のプログラムの長さ-ボーナス)が勝ちます。

各言語の最短回答がその言語に勝ちます

リーダーボード

これは、通常のリーダーボードと言語ごとの勝者の概要の両方を生成するスタックスニペットです。

回答が表示されるようにするには、次のマークダウンテンプレートを使用して、見出しから回答を開始してください。

# Language Name, N bytes

N提出物のサイズはどこですか。スコアを改善する場合、古いスコアを打つことで見出しに残すことができます。例えば:

# Ruby, <s>104</s> <s>101</s> 96 bytes

ヘッダーに複数の数字を含める場合(たとえば、スコアが2つのファイルの合計であるか、インタープリターフラグペナルティを個別にリストする場合)、実際のスコアがヘッダーの最後の数字であることを確認します。

# Perl, 43 + 2 (-p flag) = 45 bytes

言語名をリンクにして、リーダーボードスニペットに表示することもできます。

# [><>](http://esolangs.org/wiki/Fish), 121 bytes


1
ボーナスの場合、出力は正確にn * program lengthバイトである必要がありますか、それとも最小ですか?
xnor

2
正確でなければなりません
ダニエルM.

3
負のスコアを処理するには、コードスニペットを変更する必要があるようです。
エレンディアスターマン

40
-25のボーナスは、負のスコアを達成できるため、一部の言語では基本的に必須です。将来、パーセントボーナスを使用するか、答えを本当に求めたい場合は、ボーナスを質問にすることをお勧めします。または、ボーナスはありません。
-xnor

4
「入力が提供されない」場合、空の文字列が渡されると仮定しますか?ユーザーが入力をまったく入力せず、プログラムがただ待機している場合の対処方法がわかりません。
xnor

回答:


138

HQ9 +、2バイト

QQ

出力

QQQQ

ここでは禁止されていないと思います。


14
それは禁じられていないかもしれませんが、それはあまり相互的ではありません...待って、どうして8つのアップ投票を得ましたか?
ジョンドヴォルザーク

58
@JanDvorak HQ9 +が嫌いなのと同じように、これは創造的な用途です。この使用法は、HQ9 +が作成されたときには想定されていなかった可能性が最も高く、他のほとんどのHq9 +プログラムで言うことができる以上のものです。私から+1。
デジタル外傷

13
Qが「プログラムのソースコード」を出力することすら知りませんでした。私はそれがQを印刷したと思った。重大な違いを見つけるためによくやった!
ティムウィ

7
@ LegionMammal978技術的には、これは一定の出力チャレンジです。つまり、非プログラミング言語が許可されます。
spaghetto

3
これは120票です。QQ通訳に入力するための1,200担当者。
スタンストラム

95

シェークスピア、768

うん、シェークスピアはあまりゴルフ言語ではない。1,536個のスペースを出力します。

Rosencrantz and Guildenstern: A Series of Tedious Events.

Rosencrantz, a count of extraordinary determination.
Guildenstern, a spacy character.

Act I: The Long Conversation

Scene I: A Tortured Friendship

[Enter Rosencrantz and Guildenstern]

Rosencrantz:
 You are a gentle, noble, valiant, loyal, loving companion.

Guildenstern:
 You are nothing!

Scene II: Asking the Hard Questions

Rosencrantz:
 Speak your mind.

Guildenstern:
 You are as fair as the sum of yourself and a daisy. Are you as
 daring as the sum of a big, bold, fiery, feisty, rough, rowdy,
 ham-fisted, hawk-eyed, broad-shouldered, bright-eyed lad and a
 large, yellow, vicious, hairy, wild, scary, long-tailed,
 sharp-clawed, small-eared lion?

Rosencrantz:
 If not, let us return to scene II.

編集:256

さて、実際にゴルフします。上記はシェイクスピアの既存の実装ではコンパイルしないことに注意してください。なぜなら、私はそれを手で丹念に書いたからです(しかし、その正確さを守る用意があります)。

以下は、spl-1.2.1で1つの警告とともにCに変換され、512個のスペースを出力します。

Ummm.Ajax,1.Puck,2.Act I:I.Scene I:A.[Enter Ajax and Puck]Ajax:You old old old old old cow.Puck:You are zero!Scene II:B.Ajax:Speak thy mind.Puck:You are the sum of you and a red cat.Are you as big as the square of me?Ajax:If not, let us return to scene II.

15
あなたが実際にこれをゴルフするなら、私は+1します。
リルトシアスト

1
これはどのような魔術ですか?そのようなものが存在することすら知りませんでした
...-Malavos

10
ああ、あなたはそれをゴルフした。聖地。
マラヴォス

2
@Malavos魔術のつづりを間違えた方法について冗談を言っていました。申し訳ありませんが、どちらもおそらく大丈夫です

2
いいえ、攻撃的または防御的に聞こえた場合、あなたの許しをお願いします。私はフューチュラマに言及していました!:)深刻なことに、私はまだこの答えに驚いています。サイトにはもっと多くのものが必要です。
Malavos

69

リコール、17バイト

................!

16のNOOP。次に、デバッガー!が呼び出され、メモリーがコンソールにダンプされます。メモリは空ですが、ヘッダーの長さは34バイトです。

-- STATE DUMP --
----------------

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


13
これは、IMOの優れた回答の1つです。


60

CJam、-17バイト

r2e|i8,*

ソースコードの長さは8バイトで、-25バイトのボーナスの対象となります

CJamインタープリターでオンラインで試してください。

使い方

r         e# Read a token from STDIN.
 2        e# Push 2.
  e|      e# Logical OR; keep the token if it's not empty, 2 otherwise.
    i     e# Cast to integer.
     8,   e# Push [0 1 2 3 4 5 6 7].
       *  e# Repeat the array the corresponding number of times.

4
くだらない。よくやった。
The_Basset_Hound

1
負のバイトはどうですか?
ニックT

3
@NickT 8バイト(ソースコード)-25バイト(ボーナス)。
デニス

16
ディスク容量が不足している場合は、数百万のコピーを保存できます。
ロバートフレイザー

いいえ、私はメタデータが、それはポジティブになるだろうと思う
CalculatorFeline

47

Python 2.6、10

print`-.1`

-0.1000000000000000120文字であるPrints 。

文字列reprの方が精度が高いことに注意してください。print-.1ただ与え-.1、そしてprint.1/3与え0.0333333333333精度の唯一の13桁のために。


5
これはPython 2.7または3.1では機能なくなりました
アンデルスカセオルグ

@AndersKaseorgでは、repl.itは間違っていますか?
mbomb007

2
@ mbomb007どうやら。GitHubは、これが唯一の問題ではないことを示唆しています。IdeoneはCPythonに同意します。
アンデルスカセオルグ

あなたの他の答えと同じコメント:これは、末尾の改行を出力して、21バイトの出力を与えませんか?
マーティンエンダー

1
という意味print`+.1`ですか?
mbomb007

46

シード、10バイト

4 56111240

これはBefungeプログラムにコンパイルされます(ブルートフォースによって発見された)

9k.@

実行時に次の20バイトを生成します(CCBIでテスト済み、末尾のスペースに注意してください)。

0 0 0 0 0 0 0 0 0 0 

Befunge 98に慣れていないため、この仕様の仕様を数回再確認する必要がありました。

  • k 私にはかなり壊れているようで、IPが繰り返し命令に移行するため、意図したよりも1回多く実行されます
  • Befunge 98のスタックの下部には無限のゼロがあります
  • . 数値として出力し、その後にスペースが続きます

18
.... I .... just ....できません。
ダニエルM.

44

R、3 2バイト

コード

!0           # NOT FALSE

出力

TRUE

わあ、ついにR、ついに。

それも{}動作しているようで、出力しますNULL

ボーナス33 16バイト:

コード

rep(1,number*16)

出力

# if number is not defined
> rep(1,number*16)                     
> Error: object 'number' not found     # output is 32 (or 2*16) bytes long error

# if number is defined
> number = 3                            
> rep(1,number*16)                     # output is 16*number bytes long
> 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1

2
変数に「番号」という名前を使用することは、「ソースコードに不要な空白を追加する」と同等ではないことを願っています
-Mutador

26

Matlab、7 5バイト

@flawrのおかげで2バイト少なくなりました!

123;3

出力:

enter image description here

出力にはが含まれているため、10バイトです。newline ans = newline newline 3 newline


1
誰もformat compactデフォルトとしていないことを望みましょう:)
Sanchises

2
@sanchises :-)はい、それはMatlabの設定がどのように設定されているかに依存します。しかしformat looseデフォルトの設定です
ルイスメンドー

2
どう123;4?3バイト短い=)
10:30でフレア

@flawrいいね!自分で投稿してください!
ルイスメンドー

いいえ、あなたの答えにあまりにも刺激を受けた方法です=)
flawr

25

JavaScript、2バイト!

3バイトのソリューションよりもさらに短い:

!0

true実行後に戻ります。


2
これはREPL環境でのみ機能することに注意してください
Cyoce

21

Python 2、11

print`id`*1

id22文字の組み込みの文字列表現を出力します。

<built-in function id>

これ*1は、コードを11文字にすることです。することもできますprint id;00

より退屈な代替11は次のとおりです。

print'1'*22
print 9**21

私は複素数で遊んで、残念ながらされてきたprint.8/-9j1つの文字短いです
SP3000

これらは末尾の改行を出力して、出力のバイトカウントを23にしませんか?
マーティンエンダー

1
@MartinBüttnerこのルールは後で編集されましたがprint id,;1、末尾の改行を抑制するにはそれを変更するだけで十分です。末尾のスペースも追加しません。
-xnor

@xnor print 9**21は機能しません。21文字です。print 9**23しかし動作します
コイショアロイ

18

dc、10-25 = -15

2?A*Ar^1-n

「入力なし」の空白行を取ります。

10 ^(10 * n)-1を計算します。ここで、nは入力、または入力が空の場合は2です。9必要な長さのsの文字列を出力します。

  • 2 入力が空の場合にスタックに2をプッシュ
  • ? スタックに入力をプッシュする
  • Aスタックに10を押す(DCショートカットを持っているA- F10のための- 15)
  • * 2回ポップして乗算(入力に10を乗算)
  • A スタックに10を押します
  • r 上の2つのスタック要素を逆にします
  • ^ べき乗10 ^(10 *入力)
  • 1- スタックの先頭から1を引きます
  • n 改行なしで印刷します。

ダン、それはとても賢いです。そこにコードの長さがあるので幸運です:)しかし、多分あなたは未経験者に小さな説明を追加する必要があります。そして、改行も重要だと思うので、おそらくのn代わりに使用すべきですp
daniero

17

TI-Basic、3バイト

1ᴇ5

印刷し100000ます。


実際には、改行がカウントされると思うので0、1バイトでできます。
リルトシアスト

1
どうᴇ3?そして、@ lirtosiast、TI-Basicには改行がないので、私はそれについて懐疑的です。
ヤコブ

16

Brainfuck、14バイト

+++++++[....-]

これは少し数学的な演習です。のは、多くの表すとする+ことにより、コード内の文字a、および数.によって文字をb

コード出力a*bの値を有するバイトaまで1(これらは、非ASCIIバイトであり、それは仕様に応じてOKと思われます)。コードの長さはa+b+3です。だから私たちは

a*b = 2 * (a+b+3)

異なる値をしようab、私たちはの最小がいることを確認a+b+3するために達成され、

a = 4       or       a = 7
b = 7                b = 4

ベテランの頭脳プログラマーが+[[>....]-<<+]オプションを見つけます。
orthoplex

@orthoplex私があなたのコメントを読んだとき、私はすぐにブレインファックとプログラマをportmanteau'dしました:ブレインファッカー
ポケ

15

gs2、-18バイト

CP437W↕0!↨.2

六角ダンプ: 57 12 30 21 17 2e 32

WSTDINからリストに数値を読み取ります。↕0リストに2を追加し!、最初の要素を抽出します。次に↨.(リスト[0,1,2,3,4,5,6])が何度も繰り返されます(2)。

これは、デニスのCJamの答えに非常に似ています-gs2はただ結合しri 1バイトに。

:これを機能させるには、gs2実装のバグを修正する必要がありました。以前は、各プログラムの出力に非表示の改行が追加されていましたが、これはまったく意図的ではありませんでした。このプログラムを解決しようとした後、表面化しました(言語はすべての問題で後続の改行を無視するアナーキーゴルフ用に設計されていました)。塩。


1
カードスーツのキャラクターがいないGS2の最初の回答です!
チョイス

14

Perl 5、16バイト-25 = -9

$_ =$]x($_*2||4)

これは問題に対する奇妙なアプローチです。

-pコマンドライン引数で実行します。

以下に、より多くのテキストを印刷するために特別な変数を使用するPerlの回答を見つけました。したがって、バイトカウントを短縮しました。そこで、より詳細な特殊変数を使用しました。2文字の変数名で8文字を印刷します。したがって、16のバイトカウント(16文字にするために1つの空白文字が埋め込まれる)で、を出力します2 * $]。ここ$]で、Perlバージョンは、Perlバージョン5.xxxxxxに依存して印刷されます。入力なしで4回印刷し、等しい8*4場合32、またはに、コードのバイトカウントの2倍になります。

Perlが大好きです。


空の入力ではこれは失敗すると思います。ルールはなし入力が提供されていない場合は、複数の2をデフォルトとすべきである
アレックスA.

@AlexA。くそー、私はそれを見逃した。新しいゴルフのコード。着信を編集しますが、perlでこれをより創造的に行う方法がわからないため、私の回答には多くの文字が含まれています:(
Codefun64

2
ちょっとそこ、プログラムのスクリプトでは、デフォルトで、ここであなたを助け、かもしれないいくつかのより多くのヒントpopshiftの仕事@ARGV(でsub、彼らは上で動作する@_)ので、あなたが何かを行うことができますが好き$n=pop||2ダウン最初のコードブロックを得るために、あなたが持っている;}最後に、ほとんどの場合、}別のものを保存するだけです。より多くの文字を保存するのに役立つ可能性のあるものは、文字列の繰り返し演算子x、考慮、print 1x20またはそれらの行に沿ったものです... :)
ドムヘイスティングス

@DomHastings Man、ありがとう!私はあなたの助けのために合計2バイトになりました:)ご提案ありがとうございます。
Codefun64

1
これに短縮できると思いますprint"n"x(21*pop||42)。コマンドラインでperl -e'print"n"x(21*pop||42)' 3 | wc -c
hmatt1

14

Pyth10 9-25 = -16

-1 byデニス

**N9?zvz2

[入力] * 9引用文字を出力します。入力が空の場合は2 * 9を出力します。

isaacgの回答はこちらです

Pyth、1バイト

T

印刷し10ます。これは、10に初期化される組み込み変数です。


.xでエラーが発生した場合に役立ちます。なぜそうならないのか正当化はありますか?
リルトシアスト

2
私の最良の推測はQ、実際のコードが実行される前にPythが入力を評価することです。**N9.xvz2期待どおりに動作しますが、それは未満ではありません**N9?zvz2
デニス

2
末尾の改行は、出力のバイトカウントに含まれます。 T出力10と改行。を使用してd、改行を追加するスペースです
スタンストラム

9

マカロニ0.0.2、23文字

print tobase pow 32 9 2

32 9をバイナリで印刷し1000000000000000000000000000000000000000000000ます。これは、末尾の改行なしで、46文字の長さであることが便利です()。


9

JavaScript、4バイト

~$ cat main.js
+1/0
~$ nodejs main.js
Infinity

私はこれがES6なしで可能な限り最短のJSソリューションだと思う:P


NodeJSのバージョンはありますか?これは私のものでは機能しません。
デニス

1
これはFirefoxコンソールでも機能します。
n̴̖̋h̷͉̃a̷̭̿h̸̡̅ẗ̵̨́d̷̰̀ĥ̷̳

1
末尾の改行を出力長に含める必要があります。
リトシアスト

v0.10.40印刷コマンドがないため、Node.js は何も印刷しません。Node.jsの別のバージョンを使用していますか、それとも行の評価を出力するシェルでのみ機能しますか?(この場合、私はこの答えが有効だとは思わない)。
なとわみ

4バイト?これを実際に正しいサイズにしてください。
スターOS

9

C、27 25

main(){printf("%50f",0);}

2バイトをノックオフしてくれた@Titusに感謝


そして、Cでの競合しない 16バイトソリューションについては、https//codegolf.stackexchange.com/a/111330/16513にアクセスしてください。

^エラーコードがコンパイラに依存する可能性があるため、競合しないと言います。また、そのソリューションでGCCを使用していることにも注意してください。また、ルール1に違反するかどうかは定かではありませんが、おそらくそうなると思います。


1
私はそれが有効なCプログラムとしてカウントされるとは思わないが、main(){printf("%0.XXf",0);}動作します。
-wefwefa3

2
@Zeregesいいえ、Cには「暗黙の宣言」ルールがあり、通常は適切ななしで使用できます#include。コンパイラは警告を発し、時々クラッシュしますが、通常は動作します。
アナトリグ

1
@AlbertRenshawまた、ここでは動作しないと思います
ゼレゲス

1
27 * 2!= 38であることに注意してください
。– mbomb007

1
@Zereges。このコードは未定義の動作を示しません。「暗黙の宣言」および「暗黙の戻り型」機能は最近の標準では推奨されていませんが、それらの使用は引き続き許可されており、結果は明確に定義されています。このような機能を使用すると未定義の動作が発生する状況がありますが、このコードにはそれらが関係しません。
ピーター

7

V、2バイト

この出力

ÿÿÿÿ

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

説明

これは本当にハッキーな答えであり、Vの内部を乱用することで機能します。 ÿは、Vのコマンドがプログラムの終了を通知するコマンドであり、保留中のコマンドは完了する必要があります。そうしないと、一部の暗黙的な終了が機能せず、解釈がより頻繁にハングします。このコマンドはプログラムの最後に自動的に数回送信され、ほとんどの時間は出力に影響しません。

é単一の文字を挿入するコマンドです。ただし、生のバイトを取得することでそれを行うためÿ、「終了」とは解釈されず、「これは挿入する必要がある文字です」と解釈されます。この文字を1つではなく4回挿入します。


7

bash、11バイト

ここに、データ圧縮ツールの楽しい皮肉な使用法があります:) ...

gzip -f<<<2

出力の16進ダンプ(22バイト)は次のとおりです...

0000000: 1f 8b 08 00 e3 ce 32 59 00 03 33 e2 02 00 90 af  ......2Y..3.....
0000010: 7c 4c 02 00 00 00                                |L....

これは、22バイトの「拡張ASCII」(たとえば、文字ごとに8ビット)を出力します。質問投稿のコメントを読むと、これはOPのASCIIの定義を満たしているようです。
Wossname

TIO私は16を得たが、私のLinuxマシン上で、私は34を得ました
スタン・ストラム

@StanStrum、私はTIOが何であるかわかりませんが、Linuxでの34は奇妙です。おそらく、通常とは異なるスイッチを使用するためにエイリアスされたgzipがありますか?
ウォスネーム

それが当てはまるかどうかはわかりませんが、奇妙に思えます。いくつかのLiveCDで試して、@ Wossnameのプログラムの1つで台無しにされていないかどうかを確認します。
Stan Strum

1
私はその男ではありません。そして、新しく獲得した129 rep tyvmを利用しません。Linuxインストールで動作するバージョンを作成できるかどうかを確認します
Stan Strum

6

dc、19-25 = -6

2?19*[1n1-d0<l]dslx

数値を取得し(2をバックアップとしてスタックにプッシュし1ます)、19で乗算します(改行なし)を出力し、数値をデクリメントします。数値が0より大きい間ループします。


6

C ++、80バイト

#include<iostream>
int main(){int i=0;while(i<20){std::cout<<&i;i++;}return 0;}

改行文字は2文字です。(必要ない場合は、i <20をi <= 19に変更して同じバイトカウントに戻します。)

サンプル出力(毎回変更されます)

0088FA0C0088FA0C0088FA0C0088FA0C0088FA0C0088FA0C0088FA0C0088FA0C0088FA0C0088FA0C0088FA0C0088FA0C0088FA0C0088FA0C0088FA0C0088FA0C0088FA0C0088FA0C0088FA0C0088FA0C

同じ8文字のメモリアドレスが20回。


ゴルフのヒント:forループはループより短くwhile、ブレースを落とすことができ、使用するのが少し安く、ストリングcstdioだけでprintf、何も返す必要はありません。
ルーク

アプローチを63バイトに減らすことができます。#include<iostream> int main(){for(int i=10;--i;)std::cout<<&i;}しかし、少し異なるアプローチで既に短い回答があります。
movatica

6

CJam、-9

q_,{i}{;2}?G*'X*

説明

  • q_,

入力全体を読み取ってプッシュし、長さをプッシュします。

  • {i}{;2}?

入力の長さがゼロを超える場合、整数に変換します。それ以外の場合は、入力をポップして2を押します。

  • G*

16(プログラムの長さ)をプッシュし、入力がない場合は2を乗算するか、入力を乗算します。

  • 'X*

Xをプッシュし、スタックの最上部で乗算します。


こんばんは すぐに更新
-The_Basset_Hound

コンマは必要ありませんが、論理的な「または」を実行する場合、「if」を完全に回避できます。必要なq2e|i番号が表示されます
-aditsu

また、Xの代わりにSを使用することもできます。唯一の問題は、選択するまで出力が表示されないことです(オフラインで実行してファイルにリダイレクトする場合は問題ありません)
aditsu

ええと、私はデニスの答えを今見ました:p
aditsu

条件付きであっても、これを短縮できます。空の文字列はすでに偽であるため、長さを計算する必要はありません。また、空の文字列をスタックからポップする必要はありません。出力に寄与しないためです。これにより、elseブランチの中括弧を避けることができます。答えのいずれかを見る前に、これを思いつきましたr_{i}2?SB**
レトコラディ

6

> <>、19 + 2(-vフラグ)-25 = -4バイト

l?!2f4+*v
-1o;!?::<

ここでテストしてください!

ColeとSp3000に感謝

最初にスタック長をチェックします。0の場合、スタックに2を置きます。それを21(コード長)で乗算し、その数値のUnicode表現を出力し、1ずつデクリメントします。0までループします(ブラウザは文字を表示しないため、出力を検査して文字を確認する必要があります)


1
ええ、あなたの答えを台無しにしてすみません(しかし、気分が良くなるなら、それは私のものよりも短いです)。編集:誰がEnterキーを押すのが早すぎるか、現在のエントリは「nは常に正の整数であると仮定できます。入力がない場合、nはデフォルトの2でなければなりません」というルールに従って無効です。また、1文字が多すぎる(14からではなく、カウントで15文字である14から0になる)かもしれないと思います。私が正しければl0=?2f6+*v、最初の行と1-::0=?;o>2番目の行が正しくなるはずです。
コール

うーん、どういう意味かわかりません。いずれの場合も0を出力すべきではありません。最初のスタック出力として2を入力すると(編集:貼り付けられないもの)、少なくともこのcharカウンターを使用すると、28文字になります。
-torcado

私はあなたが今言っていることを理解しています。「プログラムはオプションで数字nを入力として取ることができます」と解釈しました。これは、入力が2の場合、答えを編集します、ありがとう!(また、数字の代わりに文字列を使用して一部を保存できます)
-torcado

特に<>の場合は、喜んでお手伝いします。
コール

2
?!通常はより良いです0=?
-Sp3000

6

JavaScript(ES5)、68バイト-25ボーナス= 43

alert(Array(1+(+prompt()||2)).join(document.scripts[0].textContent))

(ブラウザがセキュリティ上の理由でスニペットの実行を許可しない場合は、このフィドルhttp://jsfiddle.net/thePivottt/c3v20c9g/を試してください

このスクリプトは、少なくともDOM3(with Node.textContent)およびECMAScript 5(またはおそらく古いバージョン)以降のブラウザーでのみ機能します。できる限り標準に準拠し互換性のあるものにしようとしました。また、スクリプトが最初のscriptドキュメントの要素にあるいます。

実際には、スクリプト自体の複数のコピーを連結しますが、これは非常に素晴らしいです。SEのスニペットツールは、スクリプトの周りに余分な空白を配置することに注意してください。空白を無視できます.trim()、SEが干渉することなくプログラムが完璧であることを考えると、その必要はありません。完全に動作することを確認したい場合は、このHTML5ファイルを保存してください。

<!DOCTYPE html>
<html>
  <head>
    <title>Minimalist HTML5 page</title>
    <script>alert(Array(1+(+prompt()||2)).join(document.scripts[0].textContent))</script>
  </head>
</html>

このスクリプトは、使用していますpromptし、alert理由console.log、最新のブラウザがそれを使用している場合でも、任意の標準の一部ではありません。渡された繰り返しの数が有効な数または空の場合、デフォルトは2です。入力が10進数の場合、配列の長さが無効であるためにプログラムがクラッシュします。

このコードでは、JavaScriptの興味深い機能をいくつか使用しています。

  • Array(1+(+prompt()||2))

    • Array(INT) INTセルの配列を作成します。

    • +prompt()入力を受け取り、それを数値に変換します。入力を文字列として渡した場合、Array関数は単純に1要素の配列にラップします。

    • +prompt()||2入力がtrueの場合は入力を返し、そうでない場合は2を返します。

    • このコード全体は、N個の空の要素の配列を作成します。ここで、Nは要求された繰り返しの量より1つ多くなります。

  • .join(document.scripts[0].textContent)

    • 配列のjoin(STRING)メソッドは、すべてのセルを連結して、指定されたSTRINGを値の間に入れて文字列を作成します。このプログラムでは、配列にN + 1 個の空の要素、またはちょうどN個の中間スポットがあります。結果は、指定されたSTRINGのN倍を含む文字列になります。

    • document.scripts[o]<script>ドキュメントの最初の要素です。

    • インスタンスは、スクリプトを含む彼らとその子ノードの中に発見テキスト全体を返します。textContentNode


ES6を使用しstr.repeatてコード自体を出力する場合、スコアは26に低下しますが、やや退屈すぎることに注意してください。P-
ドミノ

えーと、その26がどこから来たのかはわかりませんが、今は33になります。おそらく少し眠る必要があります。
ドミノ

一部のブラウザ設定では、スニペットでプロンプトを使用できない場合があります。実行するには、保存する必要がある場合があります。
ドミノ

6

JavaScript ES6、33-25 = 8

(a=2)=>Array(a*33).fill(0).join``

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


このコードをコンソールで実行させることはできません。正しいですか?「Uncaught SyntaxError:Unexpected token =>」
Malavos

@Malavosには、最新のFirefoxなどのes6に準拠したブラウザーが必要です。Chromeは私の知る限りでデフォルト引数をサポートしていません
DankMemes

UCBrowserを使用していますが、そうです!とにかくクロムとヤモリに基づいています。毎晩試して、「000000000000000000000000000000000000000000000000000000000000000000000000」を取得しました。いいね!あなたのコードを説明してもらえますか?私は初心者です。
マラヴォス

2
@Malavosハードコード33は実際にはコードの長さです。それは長さで新しい配列を作成し、入力パラメータがOPに従って2にデフォルト設定されてそれを充填し、接合文字列を返します。33*aa
DankMemes

2
1つの余分な要素を使用して配列を作成することによって、あなたは参加して埋めることができますArrary(1+a*<length>)し、join`0`
ショーン・H

5

ジュリア、42バイト-25 = 17

print("@"^42((r=readline())>""?int(r):2))

これはを使用してSTDINから行を読み取りますreadline()。空の場合、つまり入力が提供されていない場合、nは整数に変換された入力として定義されます。それ以外の場合はnが私たちは、その後42印刷2.あるnは @ STDOUTに秒。


5

Perl、18-25 = -7

print$=x(<>*9||18)

特別な変数$=aka $FORMAT_LINES_PER_PAGEはその寿命をとして開始する60ため、バイト出力の半分の回数だけ複製する必要があります。


1
よく似た答えがありました:print$=x9x(pop||2)いいね!
ドムヘイスティングス
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.