不潔でユニーク


26

この質問では、文字列としてのプログラムについて説明します。これは文字ではなくバイトの文字列です。結果のプログラムがどのようにレンダリングまたは表示されるかは、この課題にとって重要ではなく、メモリ内での表示方法のみが重要です。

自然のままのプログラムは、プログラムである実行がないエラーをしたときに、しかし、それはサイズのたび連続サブエラーになりますことを、N1 N <を| S | 、削除されます。Sn1n<|S|

不潔プログラムは、プログラムで、反対側のランときに行い、エラー、サイズがいつでも連続サブN1 nは< | S | 、削除され、エラーにはなりません。Sn1n<|S|

このチャレンジでは、エラーはSTDERRへの空でない出力です。

あなたの挑戦は、できるだけ多くのユニークなバイトを使用する不潔なプログラムを書くことです。これは、コードに表示される一意のバイトごとに1ポイントを獲得し、スコアが大きいほど良いことを意味します。したがって、最大スコアは256です。


括弧/括弧を含む言語でこれに答えることさえ可能ですか?括弧が一致しないように、コードから一部のサブストリングを削除することが可能です。
ジョンファンミン

@JungHwanMin言語がバランスの取れた括弧を強制する場合、私はそれが不可能になると疑います。
小麦ウィザード

@CatWizardだから、文字の連続した部分文字列(つまり連続したバイトのセットではない)が削除されたときに、不潔なプログラムはエラーになりませんか?
ジョンファンミン

@JungHwanMinごめんなさい。それはそうでないかもしれません。連続文字列のみが重要です。
小麦ウィザード

回答:


18

単項、14バイト

123456789ABCDE

これは、一致[しない括弧によるエラーであるbrainfuckプログラムをエンコードします。

削除バイトがになります><+-.,または有効なbrainfuckプログラムです空のプログラム。


これはもはや解決策は、この溶液に減少する可能性があるため、最適なソリューションで、どのエラー
ジョー・キング

これも唯一の解決策です。
user202729

13

R、3バイト

qrt

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

オブジェクトの名前は、Rで有効なプログラムです。

qrt は何の名前でもないため、エラーを返します。

q 終了関数です

qr QR分解関数です

rt t分布のサンプリング関数

qt t分布の逆CDF

t は転置関数です


2
@pajonkただし、「r」は連続した部分文字列です。削除すると「qt」が
残ります-Orphevs

3
Rには長さ3の不潔なプログラムが1つだけあり、これがこれです!唯一の単一のcharの有効なプログラムである(0-9cqtCDFIT、任意のプログラムは、そのためで始める必要がありcmqfqrqttsまたはIm。長さは3つの可能性があるqrfqrmqrtqtsそしてtsd、唯一のこれらの不潔である(他の人がそれら不潔を作るためにどちらかに拡張することができません何の機能がないとrm*rf*ts*sd*
JDL

@Orphevs私の悪い、挑戦を誤解しました。
パジョン

10

ゼリー4 5 6 7 8 10 11バイト

“a”;⁽PFð+µU

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

確認してください。

整数を含む文字列を追加しようとします。

可能なサブプログラムの一部:

“a” 文字列リテラルです。

“a 同じ文字列リテラルです。

空の文字列です。

“a”; 「a」をそれ自体と連結します。

...すべてを列挙するには多すぎます。


1
幸いなことに、Jellyはまだエラーを許可しています。
user202729

6

ポリグロット、3バイト

1 2

で動作します:

  • JavaScript
  • ルビー
  • R
  • オクターブ
  • GHCi
  • ジュリア

JavaScriptでは、SyntaxError:予期しないトークン:数値リテラルまたは同様のエラーがスローされます。

他のすべての文字列は有効な数値リテラル(ある12、または12)。


GHCiでは、これがスローされます

<interactive>:1:1: error:
     Non type-variable argument in the constraint: Num (t1 -> t2)
      (Use FlexibleContexts to permit this)
     When checking the inferred type
        it :: forall t1 t2. (Num t1, Num (t1 -> t2)) => t2

これは、関数として適用しようとします12、できないためです。これの一部が削除されると、単に数値リテラルになります。


言語

1
@ngm GHCiも同様ですが、Pythonの `2`エラー。
小麦ウィザード

私はそれが非常に一般的だと疑っていました。これをコミュニティWikiに変更したので、これが機能するすべての言語で自由に編集してください!
アーナウルド


5

Python 2 / 3、3バイト

4\f2

または

4\x0c2

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

Pythonでは、「\ f」は「\ x0c」と同じであり、フォームフィードです文字です。これは、プリンターが次の行に進むことを示すことを意味します。

Python式がで始まるか終わる場合、\f基本的に無視されますので\f2、有効な式です。

4そして2、任意の数0-9することができます。ただし、最初のバイト0は、Python 2.7.15でのみ有効です。これ02は、の正当な宣言です2

そのため、空白で区切られた2つの数値があるため、式自体は構文エラーで失敗します。ただし、短縮\fは重要ではない場所の先頭または末尾に配置されるか、作成されます42有効なします。

(IDLEでは、このファイルが「42」のように開くことに注意してください。)

フォームフィードの説明のソース:https : //stackoverflow.com/a/26184126


3
これは、ソースなしで実際のコードを使用した場合に理解しやすくなります\fここではあなたが事前にフォーマットされた答えを得ることができ、そこから試して、それがオンラインのリンクがあります。
小麦ウィザード

1
説明のためにバリアントとして追加しました。また、リンクの提案をありがとう。
マット

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