自己採点プログラム


15

独自のスコアを出力するのは難しいですが、そこにあるすべての答えは出力をハードコーディングするだけで、退屈なようです1。それで、新しい挑戦をしましょう。バイト単位での独自の長さは、文字列に続いて、あなたのプログラムを出力しなければならない" bytes"が、私たちは除去することにより、そのサイズを小さくした場合にハードコーディングソリューションを防止するために、任意の 1つのバイトを、新しいプログラムはまた、出力はそれはまだ続く新しいバイト・カウント、です必要があります" bytes"。出力では大文字と小文字を区別する必要はありません。末尾の改行を出力することもできます。

回答はバイト単位で記録され、バイト数は少ない方が良いです。


1:私は実際にいくつかの答えが好きです。


たぶん、チャレンジの名前を「自己採点修正可能プログラム」などに変更することができます。
ディルナン

準拠言語を使用できますか?
ローガン

@Logernどちらでも使用できます。
小麦ウィザード

2
ああ。私は30分間、Hexagonyソリューションを作成しましたが、テストに行ったとき、バイトを削除すると六角形が収縮しました:(
ジョーキング

1
@WW私が意味するのは、「1 bytes技術的に間違った文法ですが、言語に文字列「バイト」を2バイト以下で出力するビルトインがないと仮定すると、プログラムは3バイトより長くなります。問題」-とにかく問題ではありません。
user202729

回答:


16

バックハンド40 36 29バイト

vv""sseettyybb  ""jjHHOO]

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

疑わしいときは、すべてを倍増してください。これは、Backhandの機能を使用して一度に複数のステップを移動し、冗長性を実装します。印刷できないものはすべてバイト値28を持っています。

説明:

非照射プログラム:

v       Reduce step count to 2
  "    Start string literal
    s e t y b        Push the " bytes" part of the output
                  " Push 28 twice and end the string literal
                       j    Jump to the 28th position (0 indexed) 
                             ]   Increment the 28 to 29
                           O     Print the 29
                         H       Halt and output the entire stack

照射プログラム:

文字が削除されると、それ以降のすべての文字が下にシフトされます。

vv"sseettyybb
v " s e t y b     The same instructions are still executed

ただし、にジャンプする]代わりに、プログラムの終わりを反映して代わりに着地しOます。

                             v  28th character (0 indexed)
vv""sseettyybb       ""jjHHOO]
v""sseettyybb       ""jjHHOO]OOHHjj"".....
                             ^ 28th character, reflecting off the end of the code

3

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

>>yyLL     @"setyb 64"/
"47 bytes"@"setyb 64"L\

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

これは多かれ少なかれ私のガイガーカウンターの回答のポートですが、異なる出力(それ自体、クラインの回答のポートです)です。

>>yyLLRunicが(少なくとも)1つのIPを生成し、2つのIPSをマージし、左に反射して、すべてのバリエーションが単一の左に移動するIPになるようにするために必要です。に置き換えることyy<<ができますが、バイトは保存されません。

右側のリフレクターは、IPを左下のストリングに強制するため、右上のリフレクターを削除すると、IPが右上のストリングに挿入されます。一番上の行に沿って他の場所でバイトを削除すると、一番上のリフレクターがLの上に位置するように調整されます(プログラムを右下に配置できます)。下部に沿ってバイトを削除すると、そのリフレクターが調整され(または削除され)、最後の文字が暗黙的にスペースで満たされ、IPが右上のリフレクターの両側から右上の文字列に跳ね返ることができます。

ただし、余分なスペースは残念です。しかし、それらを減らす試みはすべて、より大きなプログラム、同じサイズのプログラム、または100%の放射線に耐えられないプログラムのいずれかになりました。ここでのクラインと>>の両方の回答は、Runicで利用できない機能を使用しています。


2

> <>43 39バイト

||vn-{"' bytes"-10/
 o>o<"38 bytes"[0/0

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

照射されていないプログラムでは0'(39)に追加し、照射されたプログラムでは0をスキップ-1して代わりに追加します。一番上の行から何かが削除された場合、代わりに一番下の行にシフトし、単にoutputします38 bytes


2

六角形、71バイト

//.........||.>e;s;@..\;t;y;b<>}F"+!P0;/|/F!P0$@;<...t;ye;bs/.........)

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

私はこれをサイズ5の六角形にしようと非常に長い間費やしましたが、代わりにサイズ6のサブパーに落ち着かなければなりませんでした:(

拡張:

      / / . . . .
     . . . . . | |
    . > e ; s ; @ .
   . \ ; t ; y ; b <
  > } F " + ! P 0 ; /
 | / F ! P 0 $ @ ; < .
  . . t ; y e ; b s /
   . . . . . . . . .
    ) . . . . . . .
     . . . . . . .
      . . . . . .

私は、最初でこれを作った)下側1列、しかしそれはサイズ5とサイズ6個の六角形の間の分割がある場所を正確だということが判明しました。つまり、バイトが削除されると、サイズがすべて下に移動し、経路が台無しになります。サイズ5が可能なことは間違いありません。


私がこれを正しく理解している場合)、行を下に置いて、その後にノーオペレーションを入れてサイズ6の六角形にすることはできませんか?
EdgyNerd

@EdgyNerdあなたはそれがプログラムに影響を与えずに取り外すことができるよりもそれの後に空命令を入れていない場合
ジョー・キング

2

クライン 000、41バイト

<<@"setyb "$"4"+"0"/
..@"setyb 04"(....<1

オンラインでお試しください! JoKingの検証

この答えはJoKingの> <>答えに似ていると思いますが、> <>を読んでいないので、わかりません。

ここには4種類のバイト削除があります

  1. 前の最初の行からバイトが削除され/ます。 この場合、スラッシュは効果的に1つのスペースを残して移動し、最終行にそって、コードの変更された部分が実行されないようにします。これにより、コードが実行され、("40 bytes"@出力されます40 bytes

  2. 最初の/最初の行から除去されます。 この場合、コードを実行します"0"+"4"$" bytes"@。これは複雑な方法または印刷40 bytesです。

  3. 改行は削除されます。これにより、2行目の終わりから開始され、結果のコード(noopsが削除された)は1("40 bytes"@、単に印刷され40 bytesます。

  4. 最後の行から1バイトが削除されます。 これにより、1最初の行の末尾が左に移動し、先のとがった線がによって偏向されたときにスタックに追加されなくなります/。コード"0"+その理由プッシュのための0代わりに1、コードの残りの部分は変わり0にします40 bytes

クライン 001、41バイト

\("40 bytes"@......1
..@"setyb "$"4"+"0"/

オンラインでお試しください! JoKingの検証

別のトポロジを使用した回答を次に示します。同じサイズですが、改善の余地があると思います。


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