無限の出力を生成できる最短のコードを記述します。
それで全部です。コードは、ある時点で出力の生成を停止した場合にのみ失格となります。いつものようにコードゴルフでは、最短のコードが勝ちます。
以下は、本当に賢いと思う答えのリストです。
無限の出力を生成できる最短のコードを記述します。
それで全部です。コードは、ある時点で出力の生成を停止した場合にのみ失格となります。いつものようにコードゴルフでは、最短のコードが勝ちます。
以下は、本当に賢いと思う答えのリストです。
回答:
.
0
永遠に出力します。Befungeでは行が折り返さ0
れ、空のスタックからポップすると取得できますので、それは機能します。
16進数で:
b8 21 0e cd 10 eb fc
他のシステムには、キロバイト以上のシステムライブラリとランタイムが必要です。基本に立ち返って:
$ echo -ne '\xb8!\xe\xcd\x10\xeb\xfc' > A.COM
$ dosbox A.COM
2番目のバイト(0x21
、または!
)を変更して、出力を変更できます。
出力にBIOS割り込みを使用します。DOSは必要ありませんが、QEMUをセットアップしていません。
マシンコードは次のアセンブリに対応しています:
mov ax, 0x0e21
again: int 0x10
jmp again
出力はすべてint
呼び出し内にあります。この参照によると、AHの0x0eを含むint 0x10はALのバイトを画面に出力します。
レジスタAXが上位バイトのAHと下位バイトのALで構成される16ビットワードであることを知っているので、それらを一緒にロードすることで余分な負荷(したがってマシンコードのバイト)を節約できます。
%0
自分自身を無限に呼び出します。
%0
はを持たない@
ため、常にのようなものを出力します...> %0
。ただし、これは再帰的であるため、RAM全体を使い果たす可能性があります。
,"
永遠の出力「、、、、、、、、、、、、」。
yes
y
連続出力
yes
バッシュの一部(厳密に)外部バイナリではなく、。
y=yes
はなく、システムが難解でない場合は、それyes
が自分にあると見なすことができます$PATH
(GNU Core Utilitiesを参照)。ロジックを使用すると、すべてのソリューションで奇妙な星座を推測できます。
bash
の能力:I'ts POSIXシェルの基本的な部分コアutilsの。(すなわち:shのタイトルを変更してください:3文字 ;-)
古いスレッドですが、楽しいものは
fix show
Haskellでは、印刷します
\\\\\\\\\\\\\....
基本的に実行されているので永遠に
let x = show x in x
それx
は文字列であることを知っているので、最初の文字は"
であるため、これはでエスケープする必要がありますが、などでエスケープする必要\"
があることを知ってい\
ます\\\x
。
fix$show
もっと美学だったのだろうかと思います:
import Data.Function
であり、文字列を出力するのではなく返すため、文字カウントの公平性に疑問があります。また、文字列は実際には「\」\\\ "\\\\\\\" \\\\\\\\\\\\\\\ "\\\\\\\\\\\\\\\ \\\\\\\\\\\\\\\\\\ "\\\\\\\\\\\\\\\\\\\…"
Windowsバッチファイル、8文字
:a
goto a
:a\r\ngoto a
WindowsはCRLFを使用しているため
3a 61 0a 67 6f 74 6f 20
私のWindows 8で動作します...:P
+[.]
あるいは、
-[.]
\x01
も\xFF
ありません。私はそれが必要条件ではなかったと思います、しかし: - /
Javaでの最善の試み:
class A{static{for(int i=0;i<1;)System.out.print(1);}}
for(;;)
パターンを禁止していますか?どうwhile(true)
?
static
ブロックを使用することはできません。
$0&$
./forever2.sh: line 1: $: command not found
継続的に出力します。
$0
バックグラウンドであるため、各親は無効なコマンドの後に死に、$
スタック/メモリは食い尽くされず、これは無期限に続くはずです。
奇妙なことに、出力は時間の経過とともに徐々に遅くなります。 top
システムのCPU使用率は100%に近いが、メモリまたはCPUホグプロセスが存在することを報告します。おそらく、カーネル内の一部のリソース割り当てはますます効率が低下します。
$0
ん。
HAI IZ 1<2? VISIBLE "0" KTHX KTHXBYE
LOLCODEを試してみると、驚くほど大量の機能があります。
HAI
とKTHXBYE
警告:あなたは本当にあなたのブラウザでこれを実行したくない
for(;;)alert()
alert()
このエラーが発生しますError: Not enough arguments [nsIDOMWindow.alert]
#s->1Rs
ここ#
で、空白記号(デフォルトではテープ上)は、s
既存の(開始)状態のみを表し、1
数字を印刷します。R
つまり、右にシフトs
し、最後は同じ状態のままです。
s#1Rs
(現在の状態、現在のシンボル、シンボルから書き込み、方向からシフト、次の状態)として記述されます。
print[1..]
これが最短のコードだと思います
Show
:ableデータ構造を作成します。興味がある人のために、それは印刷します:
[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,...
24MB
ここでマーベラスは驚くほどうまくやっています。これにより、無限のドル記号がポストさ$
れますが、スタックの制限にかなり早く達します。
使い方。
24は言語リテラルで、ボードから外れて、対応するASCII文字としてSTDOUTに出力されます。MBはメインボードに暗黙的に付けられた名前です。メインボードには入力がないため、すべてのティックが発生します。また、セルは左から右に評価されるため、リテラルは常に次の再帰呼び出しの前に出力されます。
したがって、これはこの擬似コードとほぼ同じです。
MB() {
print('$');
while(true) MB();
}
24@0
@0/\..
これは2つのポータル間でリテラルをループさせることで機能します@0
。24が下部@0
に当たるたびに、上部の下のセルに転送され@0
ます。/\
クローンオペレーターであるに着陸し、左側(ポータルに戻る)に大理石(文字)のコピーを1つ、右側に別のコピーを配置します。このクーピーはボードから落ち(..
空のセルであるため)、STDOUTに出力されます。擬似コードでは、これは次のように変換されます。
MB() {
while(true) print '$'
}
24
\\/\..
これは、クローナーとディフレクターの間で大理石を絶えず投げ、一番右のセルにコピーを1枚置き、ボードから落とします。擬似コードでは、次のようになります。
MB() {
List charlist = ['$'];
while(true) {
charlist.add(charlist[0];
charlist.add(charlist[0];
charlist.pop();
print(charlist.pop());
// Wait, what?
}
}
注意
..
ビー玉が他のボードをオフ着陸あろう(そして廃棄される)ので、細胞は、2枚の最後の基板に必要です。少しおもしろくするために、24
大理石をで置き換え、FF
空の..
セルをで置き換えます??
。これにより、ドロップする前に、0から現在の値までの大理石になります。STDOUTでどのように見えるかを推測します。
これまでの最高のC / C ++の答えよりもわずかに短い。空行を無限に出力します(ただし、最適化なしでコンパイルされた場合、スタックをオーバーフローさせます)。
main(){main(puts(""));}
putc(0)
または1、2、...、または9)。それはうまくいくでしょうか?
putc
2つのパラメーターが必要です。
mdeitrickの答えはPython 3でより長く、print
ステートメントを関数呼び出し(15文字)に置き換えます:
while 1:print()
これは、私がPython 3で見つけた中で最も短いものです。しかし、数文字だけ長い無限ループで印刷する、より興味深い方法がいくつかあります。
print()
None
!= 9を返し、無限ループになります。これ8
は、pass
(18文字)に代わるノーオペレーションです:
while print()!=9:8
iter(print, 9)
print()
等しいまでの出力を返す反復可能オブジェクトを定義します9
(これは決して起こりません)。any
反復可能な入力を消費して真の値を探しprint()
ますNone
。これは常にを返すため、到着することはありません。(set
同じ効果を使用することもできます。)
any(iter(print,9))
または、反復可能オブジェクトに8
(17文字)が含まれているかどうかをテストすることで、反復可能オブジェクトを使用できます。
8in iter(print,9)
または、splat演算子を使用して展開します。
*_,=iter(print,9)
私が考えた最も奇妙な方法は、関数呼び出し内でスプラット破壊を使用することfunction(*iterable)
です。Pythonは、関数呼び出しが偽であったとしても、関数呼び出しを試みる前に反復可能オブジェクト全体を消費しようとするようです。これは、反復可能型が使い果たされた(つまり、決して)後にのみ型エラーがスローされるため、実際の関数さえ必要ないことを意味します。
8(*iter(print,9))
*iter(print,1),
動作し、15文字しかありませんが、かなりのメモリを消費します。
16進数で:
40 CD 29 FF E6
asmで:
inc ax
int 0x29
jmp si
説明:
inc ax
レジスタAXを1インクリメントします。int 0x29
MSDOSの「高速書き込み文字」ルーチンで、AL(AXの低い部分)に値を出力し、カーソルを1つ進めます。jmp si
レジスタSIは、ほぼすべてのDOSのようなオペレーティングシステムで0x100であり、.comプログラムが開始する場所でもあるため、先頭に戻るには奇妙な方法です;)代わりにショートジャンプを行うことも可能です2バイトを使用します。
ソース:
バイナリ表現:
00
ドキュメントから:
各ペアの最初のビットは、アキュムレータから減算する値を保持するメモリ位置へのポインタです。結果は、オペランドが指す同じメモリ位置に格納されます。結果が負の場合(ビットが2の補数表現である場合)、ペアの2番目のビットが現在のPCにモジュロ2で加算されます。
プログラムカウンタとアキュムレータはゼロに初期化されます。次に、メモリ位置0の内容がアキュムレータから減算されます。これはたまたま0であり、アキュムレータはゼロのままです。キャリーがなかったため、2番目のビットはプログラムカウンターに追加されません。
その後、プログラムカウンタは2モジュロ2ずつ増加し、最初に戻され、無限ループが発生します。各ステップで、特別なメモリー位置0が変更され、その内容(a 0
)が出力に書き込まれます。
Pythonの公式インタープリターはゼロパディングを必要とするため、このプログラムは1バイトとしてスコア付けする必要があると主張できます。ただし、ゼロパディングは実際にはコードではないと思います。
私が知っている1つの言語と、これまでに使用したことがない2つの言語:D
編集:Perl
loop{p 1}
1を別々の行に継続的に印刷するだけです。
また、多くの選択肢:
loop{p''} # prints [ "" ] on separate lines continually
loop{p p} # prints [ nil ] on separate lines continually
10文字のソリューション:
p 1while 1
私は実際に最初1
との間のスペースを削除できることに驚いたwhile
が、どうやらそれはうまくいく
{1p}do
私の最初のGolfscriptプログラム!:P
1n
lssslssstltlsslslsl
ここs
で、スペース、t
タブ、およびl
改行を表します。
{1p}do
印刷1
と終了のみを行います。(入力がないため、スタックは最初になり""
、そのexecの1p
後にポップされ、テストがfalseになります。)dupを追加するだけで、つまり{1.p}do
(7バイトで)動作します。
C、25 24
main(){main(puts("1"));}
s/while/main/
return main(puts("1"))
テールコールでした。
methodName(void)
正確にゼロのパラメータを受け入れます。
魚の無限のコードボックスを使用する創造的な方法:
"o
命令ポインタは末尾に到達した後、行の先頭に戻るため、このコードは基本的に次のように読み取ることができます
"o"o
これは、「文字列「o」を読み取って出力する」という意味です。
いくつかの異なるトレードオフを持つ別の10文字perlソリューションを次に示します。具体的には、開始するために-nフラグまたはユーザー入力を必要としません。ただし、メモリを無限に消費し続けます。
warn;do$0
ファイルに保存し、そのファイルを実行すると、次のようになります:
Warning: something's wrong at /tmp/foo.pl line 1.
Warning: something's wrong at /tmp/foo.pl line 1.
Warning: something's wrong at /tmp/foo.pl line 1.
99 5
オンラインでお試しください!11
無限に出力
次のBefunge-98プログラムを生成します。
[glzgx"Lz^v*M7TW!4:wi/l-[, s44~s;|Sa3zb|u<B/-&<Y a@=nN>Nc%}"gq!kCW $1{2hyzABRj*glr#z(@Zx@xT=>1'.b
/
関連する部分はこれだけです:
[>1'.b
/
b
11
スタックにプッシュして.
印刷します。1
また49
、スタックにプッシュされますが、実際には印刷されません。
実行中のコードのアニメーション:
main(){for(;;puts(""));}
無限の'\n'
文字を印刷します。これはCの最短回答よりも1バイト長くなりますが、スタックのオーバーフローを回避するためにテールコールの最適化に依存しません。
for(;;)
while(!
!
、出力を続けているため\n
私の最初の解決策:
while(1 -eq 1){1}
resに感謝します。
while(1){1}
ここでダンコ・ドゥルビッチが勝者だと思う。なぜこれが機能するのかはわかりませんが、機能するので、これより短いものは考えられません。
for(){1}
while(1){1}
。
while($true){1}
が、あなたのソリューションは間違いなく勝ちます-PowerShellでそれを忘れていました$true -eq 1
。それを回答として投稿してください。投票をします。
for(){1}
。