再配置可能なコードボウリング


14

コードボウリングチャレンジ

ソースコードをどのように再配置しても、同じ出力を生成するプログラムまたは関数を作成します。(出力はエラーにはなりません)


パングラムスコアリング

  • スコアは、ソースコード内の一意の文字の量です。

    ソースコードAJBを使用し3
    たプログラムのスコアは、ソースコードAAJを使用し2
    たプログラムのスコアは、ソースコードを使用したプログラム111のスコアは、1

  • これは亜種です。最高得点のプログラムが勝ちます!

(便宜上、ここに自動スコアリングツールが作成されています


チャレンジルール

  1. 入力
    プログラム/関数は入力を受け取ることができますが、これは完全にオプションです。

  2. 出力
    この出力には任意のものを指定できますが、nil、null、null、空、およびエラーではないはずです。(したがって、出力は少なくとも1バイトでなければなりません)

  3. 再配置
    ソースコードがどのように再配置されても、出力は同じである必要があります。

    例:
       プログラム:ABJ出力hello world、プログラムがそうであるように:[ AJBJABJBA、など]

これは亜種です。文字数が最も多いプログラムが勝ちます!


1
達成するための特定のタスクがなければ、この課題は私の意見では広すぎます。
デニス

2
non-nilはどういう意味ですか?
デニス

2
パングラムスコアリングは、コードボウリングを機能させるための試みですが、これらの課題に実際にコードボウリングをタグ付けする必要があるかどうかはわかりません。スコアリングのメカニズムは、コードボウリングが想定されているものとはまったく異なるため、コードチャレンジを使用するか、新しいタグを作成します。
マーティン・エンダー

1
私はマーティンに同意しなければなりません。たとえば、この課題はコードゴルフではありません。合計文字数(またはバイト数)以外の点数で得点すると、コードボウリングの課題ではなくなります
Nathan Merrill

3
プログラム/機能を終了する必要がありますか?(たとえば、0永久に印刷できますか?)
MildlyMilquetoast

回答:


18

言語、UTF-8の場合は1,112,064ポイント

私のプログラムは、可能なすべてのUTF-8文字で構成されています。 「Hello world」を出力し、1.75 * 1076ヨタバイトのスペースを使用します。

(プログラムを生成するには、17498005810995570277424757300680353162371620393379153004301136096632219477184361459647073663110750484文字でファイルを作成し、各UTF-8文字がファイル内にあることを確認するだけです)


2
あなたは、天才です。待ってください、なぜ私のコンピューターは故障していますか?: 'P
ハイパーニュートリノ

Unicodeには1114112文字があると思いましたか?
MilkyWay90

14

多くの言語、2ポイント

0.

0.0として生産0..0。整数部または小数部が欠落している場合は0であると仮定して、開始または終了に小数点を付けてもかまいません。0000000.同じスコアを与えます。

これは、次の言語でも機能します(場合によっては、示されているように出力が異なります)。

  • Python REPL
  • Javascript REPL
  • MATLAB(プロデュース ans = 0
  • オクターブ(プロデュース ans = 0
  • MATL(プロデュース 0
  • CJam
  • 網膜(プロデュース0
  • 積み上げ(プロデュース0

Pythonの場合、可能性が尽きる可能性があるため、これが1を超えるスコアを取得する唯一の方法だと思います。

  • 二項演算子または単項演算子は最後の文字として失敗します
  • いずれかが[](){}一致する必要があり、最後のものが最初に来ると失敗します
  • タブまたはスペースは行を開始できません。改行はREPLでは使用できません。
  • A , を最初の文字にすることはできません
  • Aは#すべてコメントです最初に配置し、出力を生成しません
  • 開始\は無効な行の継続です
  • バックティック(Python 2)はペアにする必要があり、何も囲むことはエラーです
  • $!?、および@その他の使用不可能の文字なしで使用することはできません

これは、葉の文字、数字、_.、および引用符。

  • 引用符を使用すると、引用符以外の文字列以外はエラーになります。
  • 可能性のある数字の文字と_変数名を作成しますが、その中には常にいくつかの順列が存在しません。

は、数字とを残します.。すべての桁がである場合を除き、異なる桁を並べ替えると、異なる数値が得られます0。だから、私はゼロだと思い.、上記のスコアを取得する唯一の方法1です。しかし、Python lexerをよく知らないので、何かが足りない可能性があります。


11

CJam、スコア15

T U
V	LMOQR[]0q

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

常に印刷0000

  • 0 ゼロをプッシュするだけです。
  • T、はUVゼロに事前に初期化される変数です。
  • LMOQR彼らは出力には表示されませんので、空のリストに事前に初期化される変数です。
  • [また]、リスト内の項目をラップする場合としない場合がありますが、それらは正しく一致する必要はなく、出力は印刷のためにフラット化されます。
  • q 空の入力を読み取るため、出力にも表示されません。
  • 改行、スペース、タブはパーサーによって無視されます。

これは、CJamのような言語に最適な答えです。ニース
アルバートレンショー

小文字rを追加して、小文字に似たものを実現できqますか?
アルバートレンショー

1
@AlbertRenshawでは、EOFでエラーになるため、両方を使用することはできません。
マーティンエンダー

9

MATL3 5 6ポイント

空白を追加するというアイデアは、Bijanの答えからとったものです

lv
 T1

コードまたはその順列は、改行で区切られた3つのコードを出力します。

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

説明

  • 関数lはデフォルトでスタックにナンバーワンをプッシュします。
  • リテラル1も同様です。
  • リテラルTプッシュtrueナンバーワンとして表示される。
  • スペースと改行はセパレータであり、ここでは何もしません。
  • vこれまでのスタック全体を列ベクトルに連結します。したがって、たとえばvafter Tは最初の2つの数値を1つの列に連結します(その後、次の数値がプッシュされます)。イニシャルvは空の配列を生成します。

コードの最後に、スタックは暗黙的に表示され、次の規則が適用されます。

  • スタック内の各要素または配列は、異なる行に表示されます。
  • 列ベクトルは、各要素が異なる行に表示されます。
  • 空の配列は出力を引き起こしません。

したがって、入力文字の順列は、1異なる行で3回生成されます。


説明?これがどのように機能するのか興味があります。
同志SparklePony

@スパークル説明を追加
ルイスメンドー

いいね!またRemoving any part of the source code however should cause that specific output to not be produced.、あなたが投稿した時点でこのテキストがチャレンジに含まれていたことに注意したかったのですが、追加するつもりはなく、削除されました。多分それはあなたが少し多分スコアを上げるのに役立つでしょう
アルバートレンショー

1
@AlbertRenshawヘッズアップをありがとう!さらに2つのポイント
ルイスメンドー

私はあなたが私の考えを盗んだと非難しています。しかし、それは問題ではありません。
ビジャン

6

ゼリー、スコア53 101

¶ ¤$¥&+ABDFHNPQSUVX^_aborv|®²×ȧȯḄḅḌḞḢḤḷṀṂṚṛṠṢṪẠạị«»()kquƁƇƊƑƘⱮƝƤƬƲȤɓɗƒɦƙɱɲƥʠɼʂƭʋȥẸẈẒẎŻẹḥḳṇọụṿẉỵẓḋėġṅẏ

Jellyのコードページの一部である文字のみを使用します

Jellyには暗黙的な入力があり0ạị«»上記のコードの文字列の前半(〜を含む)は、ほとんどが0または1つのゼロのみを含むリストが与えられたときに、単項(大文字)および2項(小文字および記号)アトムで構成されます(または、ダイアドの場合、そのような入力が2つある場合)は、ゼロまたはゼロを1つだけ含むリストを返します。

例外は次のとおりです。

  • スペース:(コードページにある場合でも)無視されます。

  • 巡礼者はリンクを分離します(ラインフィードのように-しかしそれは実際には同じバイトです)が、とにかく他のバイトはコードを参照しません。

  • スカラベは¤、パーラーに、ニラド(または定数)から始まるすべてのものを定数として処理するように指示します(最初のアトムとして機能します)。

  • ドル$、、パーサに2つのリンクをモナドとして残すように指示します(そして、驚くべきことに、最初のアトムとして機能します)

  • 円は¥、同様にパーサーに2つのリンクをダイアドとして残すように指示します。

  • 推奨される、®レジストリの値を最初に思い出します0(対応する著作権は©、アリティが最初のアトムとして使用されると、アリティは左のリンクのアリティから検出されますが、まだ設定されていません)。

括弧のコード、(および)、オンは、現在使用されていないコードポイントである、これらのすべてのget解析され、それぞれが(新しいチェーンの原因となる多くの改行たい、彼らは改行のような呼び出し可能なリンクを作成する効果を持っていませんが、しかし、何もしようとしないので、ここでは問題ありません)。


1
インタプリタがコードを処理する前に文字をドロップするため、コードページの外にあるすべての文字を無料で追加できます。ただし、nil以外が何を意味するのかはまだわかりません。
デニス

1
挑戦の精神はおそらくキャラクターがページ上にあるべきだと思います。non-nilについて尋ねると、応答は1バイトの最小出力を指定することでした。
ジョナサンアラン

@Dennisは、括弧内の解析で何が起こるのかについての正しい用語についての考えを持っていますか?
ジョナサンアラン

未使用の文字はすべて、改行として新しいリンクを開始します。
デニス

1
それらを未定義の動作と呼びましょう。:P
デニス

4

TI-Basic(83シリーズ)、93ポイント(TI-84 Plusで99)

0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZθnπeiAnsrandgetKeyZXsclZYsclXsclYsclXminXmaxYminYmaxTminTmaxθminθmaxZXminZXmaxZYminZYmaxZθminZθmaxZTminZTmaxTblStartPlotStartZPlotStartnMaxZnMaxnMinZnMinΔTblTstepθstepZTstepZθstepΔXΔYXFactYFactTblInputNI%PVPMTFVP/YC/YPlotStepZPlotStepXresZXresTraceStep

すべての数字、すべての1バイト(θとを含む変数nは、極性およびシーケンシャルグラフのための独立変数)、定数π、E、およびI、一部ではない、非常に-変数(Ansrand、およびgetKey)、および59異なりますウィンドウ変数(定義が保証されているすべての変数)。

暗黙の乗算は、これを任意の順序で取得したときに結果が0になることを保証します。これが新しい計算機で実行されている場合、すべての変数は0になります。そうでなくてもgetKey、プログラムが値を返す前にキーを押す時間がないため、0になります。

TI-84 Plusまたは高い上、我々はトークンを追加することにより、6つの、より多くのポイントを得ることができgetDategetTimestartTmrgetDtFmtgetTmFmtisClockOn。結果は常に3のリストを返し、暗黙の乗算が要素に分配される{0 0 0}ためgetDate、結果は常にとgetTimeなります。

これらはすべて使用可能なトークンであると思います:実際のコマンドはプレフィックス、中置、または後置(プログラムの最初または最後で機能しないことを意味します)であり、他の変数は未定義である可能性があります中古)。


これは賢いです。特に印象的ではありませんが、確かに賢いです!+1
アルバートレンショー

3

(非競合)Brainf-ck、63バイト

まあ、これが不正行為と見なされるかどうかはわかりませんが、...

.abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789

ドットは現在の文字(0x00)を印刷し、残りの文字は何もしません。これは技術的に無限に拡張される可能性がありますので、これが不正行為とみなされる場合はお知らせください。


出力がゼロだと考えています
アルバートレンショー

ああ、そのとき答えを削除するか、競合しないとマークする必要がありますか?
brianush1

1
入力可能な文字は97個あり、そのうち7個は使用できません(8-1)。したがって、90と言います
。– Bijan

@ brianush1競合しないままにして、他の人が見えるようにすることができます。私は、出力は、少なくとも1バイトである必要があります説明するために、さらに少し質問を編集します
アルバート・レンショウ

15
@AlbertRenshaw(これらすべてのコメントは申し訳ありません)出力が1バイトでなければならない場合、NULL文字は1バイトであるためカウントされますが、値は0です
。– brianush1

3

Haskell、3ポイント

+ 1

このコードがどのように再配置されても、入力をインクリメントする関数が常に返されます。replでの使用例:

>(+ 1) 1
2
>(1+ ) 1  
2
>( +1) 1
2

2

√åı ¥ ®ÏØ¿、128,234(?)ポイント

@DestructibleLemonの助けを借りて、128,234に到着しました。このプログラムはoOおよびを除くすべてのUnicode文字(128,237)を使用しますł。奇妙なことに、これらのうち2つは出力コマンドです。

ただし、これらの文字すべてを使用できる言語はないでしょうか?この言語は、認識できないコマンドを無視します。問題が解決しました。

この言語は、デフォルトで次を出力します。

===== OUTPUT =====



==================

これは、非ゼロ、非ヌル、非空、非エラーです。

注:これが書かれていないルールに違反する場合は、コメントで通知してください。これを変更します。私のスコアがわかっている場合(これが許可されている場合)、コメントも投稿してください。


どの文字セットを使用しますか?utf 8?utf-16?すべてのUnicodeを使用しますか?
破壊可能なレモン

@DestructibleLemon githubページを見ると、エンコードに「CP-1252」を使用しているようです。
brianush1

@DestructibleLemonのコマンドは、(Windowsの-1252)CP-1252ですべてですが、それは有効な構文として、任意のUnicode文字を受け入れます
coinheringaahing caird

どうやら、128,237個のユニコード文字がありますので、128,234個になるでしょうか?en.wikipedia.org/wiki/Unicode#cite_note-24
破壊可能なレモン

他の回答によると、明らかに1,112,064ユニコードがあるので、私はもうよくわからない
破壊可能なレモン

1

J、3バイト

 1

文字1、スペース、および改行は常に1を出力します。


1

///1 2ポイント

\_

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

他のチューリング完全言語でそれを行う方法はわかりません。もちろん、HQ9がありますが、それは単にチートです。

@Martin Enderのおかげで1バイト。


これはバイトではなく2ポイントである必要があります
破壊可能なレモン

@DestructibleLemon申し訳ありませんが、TIOフォーマットです。
同志SparklePony

1

ドット、1,114,111文字(ユニコードを使用する場合)。

<87 dots here> Every Unicode character except NUL and . here

説明:

1                                           leading binary number
1010                                        010 increments the value under the pointer
1010111                                     111 prints out chr(1)

したがって、結果のバイナリ文字列は 1010111 10進数に変換されるが87であるため、87ドットが必要です。

他のすべての文字はコメントであるため、Python3はファイルの読み取りを停止するため、NULを除くすべての文字を使用します。ドットはコメントではないため、ドットを使用します。


0

前奏曲、スコア1,112,051

(印刷可能なASCIIのみを考慮する[\t\n -~]と、スコアは84です。すべてのUnicodeコードポイントを考慮すると、スコアは1,112,051です。)

!
" #$    %&'+,-./0:;<=>@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~

(その後にすべての文字を追加します[\u{7f}-\u{10ffff}]。)

常に印刷します0


Preludeは並列スタックベースの言語で、スタックには無限の数の0が事前に入力されています。

  • +:2つの値(常に0)をポップし、それらを追加(0)し、プッシュしてスタックします。
  • -:2つの値(常に0)をポップし、それらを減算(0)し、プッシュしてスタックします。
  • #:値をポップして破棄します。
  • !:値をポップし、数値(常に0)として出力します(仕様は「文字」と言いますが、インタープリターは「数値」と言います。どちらの場合もバイトが出力されます)
  • 0:0をプッシュします。
  • ^vV:彼らは常に0を押すようなプッシュ前の/次の並列プログラム(「声」)が、すべての「声」のスタックの最上部の値は、0で満たされています。
  • その他の文字:ノーオペレーション。

したがって、避ける必要があるのは13文字のみです。

  • ():対になっていない括弧はエラーの原因になります
  • 19:0のみを出力します。
  • ?:何も入力したくありません。
  • *:孤立した行で構成される行の前後に、コードの非常に複雑な一貫性チェックを行います*。そのため、新しい行を削除するか、*。リファレンス実装では、Python 2を使用します。.readline()これは、「改行」が\rまたはを意味する場合があり\nます。したがって、単に削除することをお勧めし*ます。

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