三度目の魅力


49

あなたがそれを受け入れたいのなら、あなたの仕事は正の整数(0より大きい)を出力するプログラムを書くことです。ソースコードが複製される場合、出力は同じままでなければなりません。扱いにくい部分は、ソースコードを3回入力した場合 3回繰り返しますか?)、出力が3倍になります。

ルール

  • 完全なプログラムを作成する必要があります。つまり、出力をSTDOUTに出力する必要があります。

  • 初期ソースは少なくとも1バイトの長さが必要です。

  • 両方の整数は基数10でなければなりません(他の基数または科学表記法で出力することは禁止されています)。

  • プログラムは入力を受け付けてはなりませ(または未使用の空の入力を持たせてはなりませ)。

  • 整数を末尾/先頭のスペースで出力できます。

  • 先行ゼロは、桁数が一貫している場合にのみ許可されます。例:001-001-003または004-004-012

  • ソースのコピー間で改行を使用することはできません。

  • これはなので、各言語で最も短い(元の)コードが優先されます

  • デフォルトの抜け穴が適用されます。

あなたのソースコードがでAbcあり、それに対応する出力がであるとしましょう4AbcAbc代わりに記述して実行すると、出力はになります4。ただし、作成AbcAbcAbcして実行する場合、出力はでなければなりません12


恥知らずに盗まれたXcoder氏の挑戦に由来


私たちのコードは独自のソースコードを読むことができますか?
AdmBorkBork

これはとしてタグ付けされていないので、私は、そう仮定したい@AdmBorkBork QUINE
エリックアウトゴルファー

@AdmBorkBorkはい。
ワークフロー

9
何もないことと3回繰り返されることの違いを見分けることができないため、1バイトの制限は必要ないと思います。
12Me21

1
@ r12 "Abc"は任意のプログラミング言語プログラムの例です。たとえば、コードが(int i=1;print i;)の場合、()の複製コードはint i=1;print i;int i=1;print i;元のコードと同じ番号を出力int i=1;print i;int i=1;print i;int i=1;print i;する必要があります。数に3を掛けたもの
ワークフロー

回答:


21

Wumpus、6バイト

{~)
@O

オンラインでお試しください!
倍にしてみてください!
3倍にしてみてください!

プリント13

説明

ブルートフォース検索によって6バイトのソリューションが大量に見つかりましたが、5バイトでは見つかりませんでした。これは必ずしも5バイトの空きがないことを意味するものではありませんが、おそらく奇妙な文字などを使用するでしょう。

先行ゼロを印刷せず(ほとんどの場合ゼロ)、興味深い制御フローがあるため、このソリューションを選択しました。単一のプログラムから始めましょう。

enter image description here

したがって、実行されるコードは次のとおりです。

{~)O@

{   Turn the IP left by 60°.
~   Swap two implicit zeros on the stack, does nothing.
)   Increment the top zero to 1.
O   Print it.
@   Terminate the program.

簡単です。これでプログラムが2倍になりました。最初の行が2番目の行に追加されるため、グリッドは幅5(および高さ3)に拡張され、制御フローが大幅に変更されます。

enter image description here

IPはそのループを1回だけ処理するため、実行されるコードは次のとおりです。

{~){~)){~O@

{~) As before, we end up with a 1 on top of the stack.
{   Turn left by 60° again.
~   Swap the 1 with the 0 underneath.
))  Increment the zero to 2.
{   Turn left by 60° again.
~   Swap the 2 with the 1 underneath.
O   Print the 1.
@   Terminate the program.

最後に、3倍のプログラムは2倍のプログラムと非常に似ていますが、3行目にさらに重要なコマンドがいくつかあります。

enter image description here

したがって、実行されるコードは次のとおりです。

{~){~)){~~)O@

{~){~)){~
    As before. We end up with a 1 on top of the stack and a 2 underneath.
~   Swap the 1 with the 2 underneath.
)   Increment the 2 to a 3.
O   Print the 3.
@   Terminate the program.

1
私はこの言語が大好きだと思います。
コンキスタドール

11

、5バイト

KΣK+1

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

二度繰り返した!

3回繰り返した!

説明

Huskで繰り返し可能なプログラムを構築することは非常に困難です。型システムはそれ自体に適用できる関数を禁止しているため、何らかの方法で最初の部分が関数に評価され、残りの部分が値に評価されるようにする必要があり、既存の組み込みの型はこれを防ぐように設計されていますある種のあいまいさ。プログラムのトークンは

  • K、定数関数を構築します。K a bはと同等aです。
  • Σ、整数を取る nn番目の三角数を返します。
  • +、2つの数字を追加します。
  • 1、リテラル1です。

元のプログラムは次のように解釈されます。

   K Σ (K+) 1
== Σ 1
== 1

(K+)最初に食べられます無意味な機能ですK

2回繰り返されるプログラムは、次のように解釈されます。

   K Σ (K+1KΣK+) 1
== Σ 1
== 1

括弧内の関数は、最初の関数によって再び食べられます Kます。

3回繰り返されるプログラムは、次のように解釈されます。

   K (Σ (K (+1) (KΣK+) 1)) (KΣK+1)
== Σ (K (+1) (KΣK+) 1)
== Σ ((+1) 1)
== Σ (+1 1)
== Σ 2
== 3

これは...実行するのに非常に長い時間がかかる
Weijun周

あなたは多くの出現がある場合@WeijunZhouは、Kプログラム中のそれらのそれぞれが潜在的にトークンの任意の数を「食べる」ができ、インタプリタはすべての組み合わせをしようとするので、型推論は、非常に遅くなる...
Zgarb

わかりました、ご説明ありがとうございます。
ウェイジュン周

2
@Zgarb +1 for kek +1
ワークフロー

10

ゼリー7 5バイト

»‘µ*Ḃ

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

倍にしてみてください!

3倍にしてみてください!

使い方

»‘µ*Ḃ            Main link. No arguments. Implicit argument: x = 0

 ‘               Increment; yield x + 1 = 1.
»                Take the maximum of x and 1. Yields 1.
  µ              Begin a new, monadic chain. Argument: y = 1
    Ḃ            Bit; yield 1 if y is odd, 0 if it is even. Yields 1.
   *             Power; yield y**1 = 1.
»‘µ*Ḃ»‘µ*Ḃ       Main link.

»‘µ*Ḃ            As before.
      ‘          Increment; yield y + 1 = 2.
     »           Take the maximum of 1 and 2. Yields 2.
       µ         Begin a new, monadic chain. Argument: z = 2
         Ḃ       Bit; yield 1 if z is odd, 0 if it is even. Yields 0.
        *        Power; yield z**0 = 1.
»‘µ*Ḃ»‘µ*Ḃ»‘µ*Ḃ  Main link.

»‘µ*Ḃ»‘µ*Ḃ       As before.
           ‘     Increment; yield z + 1 = 3.
          »      Take the maximum of 1 and 3. Yields 3.
            µ    Begin a new, monadic chain. Argument: w = 3
              Ḃ  Bit; yield 1 if w is odd, 0 if it is even. Yields 1.
             *   Power; yield w**1 = 3.


10

Cubix、5バイト

)<@OP

オンラインで試してください:1回2回3回


説明

Cubixはスタックベースの言語であり、その命令はキューブの外側にラップされます。重要なのは、スタックが最初に無限のゼロで満たされていることです。これにより、明示的にプッシュするのではなく、演算子を使用して「値を空から引き出す」ことができます。

これはブルートフォーサーによって発見されたことを認めなければなりません。自分では見つけられなかったでしょう。実際、@ MartinEnderは、運のないこのソリューションを探していたので、ブルートフォースを試すように頼まれました。これはブルートフォーサーが見つけた唯一のソリューションであり、Cubixで唯一かつ最短のソリューションであると信じています。

単一プログラム

走るのを見て!

元のプログラムはユニットキューブに適合します。展開されたネットは次のとおりです。

  )
< @ O P
  .

IP(命令ポインター)は、<東に向かって左端の面()から始まります。<すぐ西にそれを指し、それはにラップアラウンドPPは累乗であり、スタックには何もないので、インタープリターは2つの0を引き出し、0 0を計算します。これはJavaScriptに従って1です。O次に、この値を出力し、@、プログラム終了します。

ダブルプログラム

走るのを見て!

)<@OP)<@OP

10バイトのプログラムは長すぎてユニットキューブに収まらないため、サイズ2のキューブに拡張されます。

    ) <
    @ O
P ) < @ O P . .
. . . . . . . .
    . .
    . .

前と同様に、IPは左端の面の左上から始まります。今回はP、最初の命令はで、以前のように1をプッシュします。次は)、最上位のアイテムをインクリメントし、それを2に変えます。その後<、IPの向きを変え、)再びヒットし、23に変換します。

ここが面白いところです。P2番目から2番目のアイテムを最初のアイテムの累乗にし、0 3 = 0を返します。次に、IPは右端の面に回り込み、2つのノーオペレーションを通過してから.別のノーオペレーションにヒットしPます。ここでは、Cubixの別の癖がPあります。バイナリ演算子(など)は、スタックからオペランドを削除しません。スタックがになったため、3 0 = 1[3, 0]を計算し、プログラムを出力して終了します。O@

トリプルプログラム

走るのを見て!

)<@OP)<@OP)<@OP

ダブルプログラムと同様に、トリプルはサイズ2のキューブに収まります。

    ) <
    @ O
P ) < @ O P ) <
@ O P . . . . .
    . .
    . .

このプログラムは前と同じ方法で開始します:1をPプッシュし、増分し、IPを西に向け、再び増分し、今0をプッシュします。次に、IPは右端の面にラップされますが、IPは既に西に向けられているため、何もしません。)<)P<

ここでは、二重のプログラムから1つの違いは次のとおりです。)インクリメント0にスタックの一番上に1。ときにP再びその魔法を行い、この時間は、それが計算3 1 = 3をO出力して@終了し、3回目が本当に魅力であることを最終的に証明します。


1
あなたの説明は本当に楽しかったです。+1
ワークフロー

7

Brain-Flak、10バイト

<>([]{}())

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

倍にしてみてください!

3倍にしてみてください!

説明:

#Toggle stacks
<>

#Push
(
    #Stack-height (initially 0) + 
    []

    #The TOS (initially 0) + 
    {}

    #1
    ()
)

これを1回実行すると(0 + 0 + 1) == 1、代替スタックに配置されます。もう一度実行すると、同じものがメインスタックに配置されます。ただし、3目に実行すると(1 + 1 + 1) == 3、評価され、それが代替スタックにプッシュされ、暗黙的に印刷されます。


7

SQL、25 24 23バイト

-1バイト 常にコメントアウトされていて何もしないタイプミスの文字を削除しました
-1バイトは Razvan Socolが推奨するように変更SELECTPRINTれました

PRINT 2/*
*2+1--*/-1
--

仕組み:
SQLでは、次のようにコメントタグをコメントアウトできます。

/*
'Comment'--*/

--/*
'Not Comment'--*/

コメントを除いた1行のコード:
最初の反復:SELECT 2-1出力:1
2番目の反復:SELECT 2-1*2+1出力:1
3番目の反復:SELECT 2-1*2+1*2+1出力:3


1
PRINT代わりにSELECT余分なバイトを節約します。
ラズバンソコル

6

SOGL V0.127 5 4 バイト

ē»«I

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

倍にしてみてください!

3倍にしてみてください!

説明:

ē»«I
ē     push counter, then increment it.
      First time running this will push 0, then 1, then 2.
             TOS on each: 0  1  2
 »    floor divide by 2   0  0  1
  «   multiply by 2       0  0  2
   I  and increment       1  1  3

の線に沿って何かをしようとしましたがē1|、ビット単位のORのコマンドがないようです
...-ETHproductions

@ETHproductionsええ、私もそのようなものを試してみたかったです、そして私が得た最高のものはē:2\+:/
dzaima

5

05AB1E6 5バイト

.gDÈ+

オンラインでお試しください! またはそれを2倍にしてみてください!または3倍にしてみてください!

説明

.g     # push length of stack
  D    # duplicate
   È   # check if even
    +  # add

シングル:0 + (0 % 2 == 0) -> 1
ダブル:1 + (1 % 2 == 0) -> 1
トリプル:2 + (2 % 2 == 0) -> 3


それ% 2は三重の説明にあるべきですか?
LarsW

@LarsW:はい、確かに:)
エミグナ

@Emigna「偶数かどうかを確認」は実際に2%_正しいと思いますか?
魔法のタコ

2 + (2 % 2 == 0) -> 2しかし2 + !(2 % 2 == 0) -> 3(説明のため)。
魔法のタコ

@MagicOctopusUrn 2%_Èyes と同じです。説明の意味がわからない。2+(2%2==0) = 2+(0==0) = 2+1 = 3。もし私が計算を拡張していたなら、おそらくより明確だっただろう。
エミグナ

5

> <>、9バイト

\5 n;
\\1

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

倍にしてみてください!

3倍にしてみてください!

「魚の進路を十分に複雑にすれば、最終的には何かがうまくいく」という哲学を使って、私はこの種の運を見つけました。元のバージョンと2倍のバージョンは5を印刷し、3倍のバージョンは1を印刷してから5を印刷して、15 = 3×5にします。以下は、閲覧用の乗算バージョンです。

\5 n;
\\1\5 n;
\\1
\5 n;
\\1\5 n;
\\1\5 n;
\\1

5

パイソン2 46の45  39バイト

ハルバードの答えに触発されました。私の挑戦が新しい挑戦を引き起こしたことをうれしく思います。Kevin Cruijssenのおかげで6バイト節約されました

print open(__file__,"a").tell()/79*3|1#

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

倍にしてみてください!

3倍にしてみてください!

仕組み(時代遅れ)

k=open(__file__,"a").tell() # Read the source code in "append" mode and get its length.
                            # Assign it to a variable k.
;print k>>(k==90)#          # Print k, with the bits shifted to the right by 1 if k
                            # is equal to 90, or without being shifted at all overwise.
                            # By shifting the bits of a number to the right by 1 (>>1),
                            # we basically halve it.

倍にすると、長さは90になりますが、新しいコードはのおかげで無視されるため、#k==90評価されTrueます。ブール値はPythonの整数のサブクラスであるため、本質的にk / 2 = 45であるとk>>True同等です。3倍にすると、新しいコードは再び無視されるため、新しい長さは135になります。評価されるので、シフトされません。したがって、kはそのまま出力されます。k>>1k==90Falsek>>(k==90) ⟶ k>>(135==90) ⟶ k>>False ⟶ k>>0 ⟶ k


Python 2バイト

これは、エイダンF.ピアースによる38バイトの提案であり、私は2バイトずつゴルフをしました。私は自分でそれを思い付かなかったので、これを私の主な解決策として投稿していません。

0and""
True+=1
print True>3and 3or 1

オンラインでお試しください! 倍にしてみてください! 3倍にしてみてください!


コメントを使用するアイデアをありがとう-6バイト節約できました。
AdmBorkBork

print open(__file__,"a").tell()/79*3|1#たぶん?
ケビンクルーッセン

@KevinCruijssenありがとうございます!
ミスターXcoder

1バイト少なく、ソースコードの読み取りなし:tio.run / ##K6gsycjPM / r / …2〜3 回の繰り返しで先頭にスペースを付けて印刷しますが、許可されているようです。
エイダンF.ピアース

@ AidanF.Pierceありがとうございます!私はそれをもう少しゴルフし、代替ソリューションとして投稿しました。
Mr Xcoder

5

R37 31 28バイト

最後の3バイトをオフにゴルフしてくれたGiuseppeに感謝します。

length(readLines())%/%2*2+1

(末尾の改行を使用)。

一度お試しください!

2回試してみてください!

3回試してみてください!

これは、使用していますreadLines()から、トリックを8ボールチャレンジに対するジュゼッペの答えstdinソースファイルにリダイレクトします。このコードは基本的に、最初の行の下に何行存在するかをカウントし、1行1または3行がある場合(コードが1行または2行)、または35行がある場合(コードが3行ある場合)に出力します。


ああ、きちんと、+ 1!Rでこれを行う方法がわかりませんでした。sこれが正しく機能するためには改行が必要だと思いますが、いくつかの計算をやり直すことで28バイトまでゴルフできるはずです。
ジュゼッペ

@Giuseppe改行の問題を指摘してくれてありがとう!コードが3倍になったときにバージョンを機能させることができませんでした。何か不足していますか?
rturnbull

奇妙なことに、私は最後の改行を持って%/%2いる必要がありますが、それが機能するはずです
ジュゼッペ

5

失われた、38バイト

\\<<<<</<<<<>
2>((1+@>?!^%^
.........v

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

\\<<<<</<<<<>
2>((1+@>?!^%^
.........v\\<<<<</<<<<>
2>((1+@>?!^%^
.........v

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

\\<<<<</<<<<>
2>((1+@>?!^%^
.........v\\<<<<</<<<<>
2>((1+@>?!^%^
.........v\\<<<<</<<<<>
2>((1+@>?!^%^
.........v

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

説明

Lostは、この課題にとって非常に興味深い言語です。通常のロストテクニックは、「トラップ」を構築することです。トラップは、スタックをクリアし、特定の方向に進むように制御できるように、すべてのIPを1か所でキャッチするように設計されたプログラムのセクションです。これにより、Lostでのプログラムの作成がはるかに管理しやすくなります。ただし、プログラムは複製されるため、トラップの重複も回避する必要があります。これには、適切に機能する新しいトラップを設計する必要がありますが、複製されると、トラップの1つだけが機能します。ここでの私の基本的な考え方は次のとおりです

v<<<<>
>%?!^^

スタックが空でない間、?アイテムは削除され、そのアイテムがゼロ以外の場合、最初に戻ります。ここで重要なのは、これが^^sラインアップをスタックするとき

v<<<<>
>%?!^^v<<<<>
>%?!^^v<<<<>
>%?!^^v<<<<>
>%?!^^v<<<<>
>%?!^^

つまり、どのように入力しても、常に同じ場所で終了します。

ここから、クラインの答えと同じアイデアを実装しようとすることができます

\\<<<<<v<<<<>
2>((1+@>?!^%^

私たちのプログラムのバックボーンは、多くのをプッシュする左側のサイド2です。プログラムのコピーを追加するたびに、プログラム2のバックボーンに別のコピーが追加されます。これは、追加の2がスタックにプッシュされることを意味します。それが底から離れると、それは跳ね返って\\>コードを実行します

((1+@

これにより、最初の2つのスタックアイテムが削除され、残っているものに1が追加されて終了します。バックボーンに3つの2ができたら、1を追加して3を取得します。3つ未満のアイテムがある場合は、スタック全体を破棄して1を返します。

残っている唯一の問題は!、プログラム内で無限ループが発生する可能性があることです。IPが!上方に移動し始めると、ジャンプして元の場所に戻ります。これは、ループを防ぐために下に別の行を追加する必要があることを意味します。

\\<<<<</<<<<>
2>((1+@>?!^%^
.........^

これには、^トラップの間にスラッシュを入れるというわずかな問題があります。しかし、むしろ奇跡的に、すべてがうまくいきます。ipsは適切にバウンドするので、違いはありません。



残念ながら、@ jokingは当分の間モバイルにこだわっています。説明付きの回答として投稿できますか?
ウィートウィザード




4

Japt8 6 5バイト

@ETHproductionsのおかげで-1バイト

°U-v

説明:

°U-v
 U     # variable U=0                # U=0
°U     # ++U                         # U=1
  -    # minus:
   v   #   1 if U is divisible by 2  
       #     else
       #   0                         # U=1

これは評価する 1-0 = 1

倍に評価 2-1 = 1

トリプル評価 3-0 = 3


1
少し整理し直せば°U-v、2番目に節約できる(プラス改行)ことができると思いますU
-ETHproductions

@ETHproductionsありがとう!vこの挑戦に最適です:-)
オリバー



4

> <>10 9 8バイト

562gn|

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

倍にしてみてください!

3倍にしてみてください!

どこかに8バイトのソリューションがあると確信しています。

最後の印刷不能はASCII値1でg、3回目の反復でetコマンドによってのみフェッチされます。最初の2つについては、印刷05してから印刷し15ます。


8バイトのソリューションは、とらえどころのない証明が、ここでは、彼らはあなたを刺激する場合にはカップルより9つのバイトのものですさ:TIOTIO
未ツリー

1
@Notatree印刷不能で8バイトを取得しました
ジョーキング

4

C(gcc)、107バイト

C(gcc)での最初の提出。長すぎる...

i;
#ifdef c
#define c
#ifdef b
i=2;
#else
#define b
#endif
#else
#define c main(){putchar(i+49);}
#endif
c

TIOリンク:singledoubletriple



3

JavaScript、81 77 74 70バイト

シャギーのおかげで4バイト節約

var t,i=(i||[3,1,1]),a=i.pop()
clearTimeout(t)
t=setTimeout(alert,9,a)

かなり不自由なJSソリューション。[3,1,1]右の配列(pop())から値を消費します。将来の現在の値を表示するタイムアウトを登録します。タイムアウトがすでに登録されている場合は、キャンセルします。の汚い性質に依存するvar変数宣言を引き上げます。

二度:

3回:


動作させるには、末尾にセミコロンまたは改行が必要ですがa、の3番目の引数として渡すことで4バイト節約できますsetTimeoutsetTimeout(alert,9,a)
シャギー

@Shaggyありがとう!余分なセミコロンがなくても正常に機能します。
クリスチャンルパスク


2

、12バイト

⎚≔⁺ι¹ιI⁻ι⁼ι²

オンラインでお試しください!リンクは冗長コードです。

倍にしてみてください!

3倍にしてみてください!

説明

⎚             Clear
 ≔⁺ι¹ι        Assign plus(i, 1) to i
       I      Cast (and implicitly print)
         ⁻ ⁼ι² Subtract equals(i, 2) from
          ι    i

MapAssignRight(Plus, 1, i)@Mrへの私の回答のポートと同じ長さになります。XCoderの課題:PI∨›³L⊞Oυω³
ニール

PI⊕⊗÷L⊞Oυω³私の答えの別のバージョンですが、まだ11バイトです
ニール

10バイトを見つけました!
ニール

:/私は本当に解決しなければならないMapAssign(Incremented, i)
ASCIIのみ

2

JavaScript、43 40バイト

var t=t?--t:~!setTimeout`t=alert(1|~t)`;

2x:

3x:


PS

2

PowerShell54 48 45 44バイト

if(99-gt(gc $PSCOMMANDPATH|wc -c)){1;exit}3#

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

倍にしてみてください!

3倍にしてみてください!

自身の呼び出しパスを取得$PSCOMMANDPATHして行い、A gET- cファイルにontentを。Ifそのファイルの文字カウントがより少ない99(経由してチェックするwc -cのcoreutilsから)、そして我々の出力1exit(すなわち、停止の実行)。これは、元のコードと二重化されたコードを説明しています。それ以外の場合は、出力3して終了します。2倍または3倍のセクションにある実際のコードは無意味です。なぜなら、exit到達する前に、またはcommentの背後にあるから#です。

Mr Xcoderのおかげで6バイトを節約しましたPavelのおかげで3 4バイトを
節約しました


@Pavel Aha、はい。私は周りをスワップする必要がある-lt9999-gt正しく動作する鋳物を得るために、それは確かに1バイト短いです。ありがとう!
AdmBorkBork

2

C#(178バイト)

Console.WriteLine(1+2*4%int.Parse(System.Configuration.ConfigurationManager.AppSettings["z"]=(int.Parse(System.Configuration.ConfigurationManager.AppSettings["z"]??"0"))+1+""));

クレイジーなC#ソリューションですが、C#の1行でそれが可能だとうれしいです。:)

私にとって最も難しい部分は、同じ変数を初期化またはインクリメントする有効なC#を持つことでした。そのため、グローバルな静的NameValueCollectionが必要であり、ConfigurationManagerがメモリ内で更新できると考えられる唯一のものだったため、ConfigurationManagerを乱用することになりました。EnvironmentVariablesは私が見たもう1つのオプションでしたが、インデクサーがないため、仕様に従って必要な出力を生成するためにコピーペーストできる1行でそれを行う方法がわかりません。


2

ルーン文字のエンチャント、35バイト

^w3'\
    f
    1
/1@
/
 '54\w
/yyy

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

これに取り組んでいると、新しい遅延修飾子文字を扱うパーサーでエラーを見つけることができましたが、最終的な結果は最終的には必要ないので影響を受けません。

最後の行には末尾の改行(または、末尾のスペース)がなく、重複したIPが別の場所に生成されるため、機能します。左上のグリッドは最終的にグリッドの周りに大きなループを作り、2番目のIPはリフレクション操作を実行\して、6行目のをに置き換えます。このIPは永久にループし、何もしません。

第三IPも同時にこの同じ交換になりますが、それは上に位置しているため、13行、その反射鏡のコピーは上向きにそれを送信し、それが実行される1f'3w置き換え右上、中に存在する配列1との314日を元のIPがそれを実行する直前のライン、出力する三倍プログラムを起こす3代わりに1(値もあり得る2639412、または515の利用に起因するa-f数値定数; 1及び3任意に選択しました)。その後、何も実行しないリフレクションコマンドを実行する無限ループに残ります。

3回試してみてください!


29バイト、私は私が実際にそれを理解している場合、それは下げ得ることができると思いますけれども:P
ジョー・キング

@JoKingその空白の多くが出ることは本当に驚きではありません。これは仕事でしたが、インタープリターで問題が発生したため、機能するものを手に入れるだけで満足でした(私のオリジナルは52バイトで、インタープリターを修正した後、かなりの部分を削除できました)。
Draco18s

1

Perl 5の、28の 25バイト

@neilのおかげで-3バイト!

print"\e[D$a"if(++$a!=2);

カーソルを後方に移動し(行の先頭で何もしません)$a、1回目と3回目(つまり、3回目に1が印刷され、カーソルが移動し、1の位置に3が印刷されます)の値を印刷します。


1
print"\e[D$a"if(++$a!=2);たぶん?
ニール

1

QBasic、19バイト

CLS
x=2^x
?x-1OR 1

ソースには末尾の改行を含める必要があります。

説明

私たちは、の出力をしたいです113。これらの数値は2のべき乗よりも1つ少ないことに注意してください。

CLS      ' CLear Screen of any output from previous copies of the code

x        ' Numeric variables are preset to 0...
 =2^x    ' so as this statement is repeated, the value of x goes 1, 2, 4

 x-1     ' Therefore x-1 goes 0, 1, 3...
    OR 1 ' and we bitwise OR it with 1 to change the 0 to 1...
?        ' and print.
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.