2016 Time Capsule String:あなたの言語はどの程度多用途ですか?


71

約1年前の2015年12月31日、私は次のことを考えていました。

タイムカプセル文字列を作成する必要があります。誰もが1つのキャラクターを追加することができ、次の新しい年は、誰がその時点で存在するエソランですべてのキャラクターから最高のプログラムを作成できるかがわかります。

ドアノブは優雅に文字を収集からPPCGのコミュニティと年のために安全にそれらを保ちました。

なんと74人が参加したので、74 種類の印刷可能なASCII文字を使って遊ぶことができます!

2016年のタイムカプセル文字列の74文字を、送信された順に示します。

H@~*^)$.`~+1A|Q)p~`\Z!IQ~e:O.~@``#|9@)Tf\eT`=(!``|`~!y!`) Q~$x.4|m4~~&!L{%

以下は、ASCII順の2016年のタイムカプセル文字列の74文字です(先頭のスペースに注意してください)。

 !!!!!#$$%&())))*+...1449:=@@@AHILOQQQTTZ\\^`````````eefmpxy{||||~~~~~~~~~

取り組むことはそれほど多くありませんが、ここではチャレンジが好きです。

挑戦

タイムカプセル文字列でどの言語が「最適」かを判断するために、74個のタイムカプセル文字のサブセットを使用する必要がある難易度が増加する6つの(201 6の)チャレンジがあります。

6つの明確な課題があると、より多くの言語が競争できるようになりますが、すべての言語に答えて高得点を獲得できるのは最高の言語のみです。

得点:

  • 各チャレンジは、使用されているキャラクターの数に応じて0から74までのスコアが付けられます。
  • スコアが高いほど優れています。
  • 言語がチャレンジを完了できない場合、そのチャレンジのスコアは0です。
  • チャレンジの空でないサブセットはすべて完了できます。
  • 最終スコアは、6つの課題すべてのスコアの合計です。
  • 可能な最高の最終スコアは6×74または444です。

課題

1.実行する

言語のコードがそもそも実行できないと、何もできなくなります。

コンパイル時または実行時エラーなしで実行/実行される、可能な限り最長の完全なプログラムを作成します(74個のタイムカプセル文字のみを使用してください)。

プログラムが何をするかは関係ありません。入出力があるか無限ループに入るかは関係ありません。エラーなしで実行されることだけが重要です。(警告は問題ありません。また、不適切なユーザー入力によるエラーも同様です。)

コメントが許可されているため、これは

#H@~*^)$.`~+1A|Q)p~`\Z!IQ~e:O.~@``|9@)Tf\eT`=(!``|`~!y!`) Q~$x.4|m4~~&!L{%

Pythonでスコア74。

(これがあなたの言語が完了することができる唯一の挑戦であるならば、答えることを恐れてはいけませんが、多くの票も期待しないでください。)

スコア=プログラムの長さ(プログラムが長いほど良い)

2. I / O

入力または出力の形式を持たない言語は、実行できない言語とほとんど同じくらい役に立たない。

与えられた印刷可能なASCIIの文字!(0x33の)の}前と後(0x7D)を含め、出力可能なASCII文字を。

出力は、長さ2の文字列またはリスト、またはスペースまたは改行で区切られた文字にすることができます。

たとえば、入力が}出力の場合、|~or ["|", "~"]または| ~orになり|\n~ます。

同様に、 "はの出力で!ACはの出力ですB

スコア= 74-プログラムの長さ(プログラムは短いほど良い)

3.分岐可能性

多くの場合、条件はチューリング完全性の要件であり、これは多くの場合、有用な言語の要件です。

正の整数が与えられ、10進数で終わる場合166、aに変更して7結果を出力します。それ以外の場合は、入力を変更せずに出力します。必要に応じて、入出力に文字列を使用できます。

例:

2016 -> 2017
16 -> 17
116 -> 117
1616 -> 1617
6 -> 6
15 -> 15
17 -> 17
106 -> 106
2106 -> 2106

スコア= 74-プログラムの長さ(プログラムは短いほど良い)

4.ループ可能性

ループを実行できない言語は、繰り返しコードを生成するため、しばらくプログラミングの休憩を取る必要があります。

正の整数を指定すると、任意の2つの異なる印刷可能なASCII文字を交互に配置する同心の小さな正方形のパターンで満たされたその辺の長さのASCIIアート正方形を出力します。異なる入力に対して同じ2文字である必要はありません。

例えば:

1    <- input
X    <- output

2
XX
XX

3
XXX
X-X
XXX

4
XXXX
X--X
X--X
XXXX

5
YYYYY
Y...Y
Y.Y.Y
Y...Y
YYYYY

6
XXXXXX
X----X
X-XX-X
X-XX-X
X----X
XXXXXX

7
ZZZZZZZ
Z-----Z
Z-ZZZ-Z
Z-Z-Z-Z
Z-ZZZ-Z
Z-----Z
ZZZZZZZ

スコア= 74-プログラムの長さ(プログラムは短いほど良い)

5.数学

数字や数学が苦手な言語は、人文科学専攻にも向いているかもしれません。

入力なしで、2016の正と負の72の整数除数を任意の順序で出力します。出力は、合理的な方法で文字列またはリストとしてフォーマットできます。

例:

-1, -2, -3, -4, -6, -7, -8, -9, -12, -14, -16, -18, -21, -24, -28, -32, -36, -42, -48, -56, -63, -72, -84, -96, -112, -126, -144, -168, -224, -252, -288, -336, -504, -672, -1008, -2016, 1, 2, 3, 4, 6, 7, 8, 9, 12, 14, 16, 18, 21, 24, 28, 32, 36, 42, 48, 56, 63, 72, 84, 96, 112, 126, 144, 168, 224, 252, 288, 336, 504, 672, 1008, 2016

スコア= 74-プログラムの長さ(プログラムは短いほど良い)

6.密教

(いいえ、そうではありません。)PPCGの私たちは難解なものが好きで、クインはその良い例です。

通常の馬のルールに従って、できる限り長い馬を書きます。クインは、入力を一切受け取らず、それ自体を出力するプログラムです。

スコア=プログラムの長さ(プログラムが長いほど良い)

特定のルール

  • 6つの課題のそれぞれにおいて、プログラムは、好きなように再配置された74個のタイムカプセルキャラクターのサブセットでなければなりません。空のサブセットまたは不適切なサブセットである可能性があるため、各プログラムには0文字から74文字までの文字を含めることができます。
  • 入力/出力/コードの最後にある単一の末尾の改行は、一部の言語ではこれを必要とするか、簡単に回避できないため、どこでも問題ありません。
  • 特に指定がない限り、各チャレンジはデフォルトに従って機能または完全なプログラムとして完了することができます。
  • すべての課題は同じ言語で完了する必要があります。
  • 地球上のどこでも 2017年以前に作成された言語(または言語のバージョン)を使用する必要があります。
  • タイムカプセルにキャラクターを追加したかどうかにかかわらず、誰でも回答できます。

2016年のタイムカプセルキャラクターを自由に使用してチャレンジしてください。


4
Yay:D JavaScriptが潜在的に優れている可能性がある挑戦です!
ダウンゴート

1
いくつかのソリューションで協力するためのディスカッションチャットルーム
user48538

6
6×74 or 444空のプログラムを意味するため、それが不可能であることはかなり確実です。そのプログラムをとる3入力の二つは、それらのcharを有することを意味するように、従って、442は、実際の最小
破壊可能レモン

7
私の言語はJavaです。P:私は、デフォルトで失う
Weckar E.

2
もう一度やりましょう!
ev3commander

回答:


37

グリフォ、74 +(74-36)= 112

1.実行(74バイト)

!!#%QTQT@=A@$!!$)()*!&))+...1449:@HILOQZ\\^`````````eefmpx|||{~~~~~~y~|~ ~

2. IO(36バイト)

!!!#!$!$4419TAHT\ee\OQQQ))*+)..)|~~~

説明

Glyphoは、実際に使用されているキャラクターを気にしないため、この課題にはかなり良い選択のように見えました。代わりに、4文字のグループを見て、それらの4文字の繰り返しのパターンに基づいてコマンドを選択します。タイムカプセル文字列には多くの重複があるため、18個のコマンドのプログラムに制限されていることを除き(Glyphoではあまり多くありません)、作成できるプログラムにはかなり柔軟性があります。これにより最初の2つの問題を非常に簡単に解決することができましたが、Glyphoは他の問題を非常に少ないキャラクターで実行できるとは思いません。

ウェイバックマシン2006-06-23から取得したJavaインタープリターを使用してこれらをテストしました。これは、コマンドのわずかに異なるマッピングを使用します。

0000 n
0001 i
0010 >
0011 \
0012 1
0100 <
0101 d
0102 [
0110 +
0111 o
0112 *
0120 -
0121 ]
0122 !
0123 e

実行プログラムは、に変換します。

1d-+[...]

...翻訳を煩わせなかったジャンクはどこにありますか。

1      Push 1.
d      Duplicate.
-      Turn into -1.
+      Add. Gives 0.
[...]  Skip the rest because the top of the stack is zero.

IOのプログラムは、に変換します。

id1-+o1+o

これが何をするかです:

i   Read a character.
d   Duplicate.
1   Push 1.
-   Turn into -1.
+   Add to character, i.e. decrement it.
o   Output it.
1   Push another 1.
+   Add to character, i.e. increment it.
o   Output it.

24

CJam、74 +(74 − 14)+(74 − 26)= 182スコア

1.実行(74バイト)

e# !!!!!$$%&())))*+...1449:=@@@AHILOQQQTTZ\\^`````````efmpxy{||||~~~~~~~~~

e#先頭に移動すると、行全体がコメントアウトされます。

2. I / O(14バイト)

9`)ZH*+~):Q(Q)

デニスは8バイトを節約しました。

説明:

9`                   Push "9".
  )                  Extract character '9'.
   ZH*               Push 3 * 17 = 51.
      +              Add to get character 'l'.
       ~             Eval as CJam code. Command l reads a line.
        )            Extract the only character from the input line
         :Q(         Assign to Q and decrement
            Q)       Push Q and increment

3.分岐可能性(26バイト)

4`)4Z|`I!`|~^~~T$AT$*%H(=+

説明:

4`)                            Push character '4'
   4Z|`                        Push 4 | 3 = 7, stringify
       I!`                     Push !18 = 0, stringify
          |~                   Setwise or and eval to get 70
            ^                  XOR to get 'r'
             ~                 Eval to read input
              ~                Eval the input as CJam code to turn
                               it into an integer
               T$              Duplicate it
                 A             Push 10
                  T$*          Duplicate that and multiply → 100
                     %         Mod the copy by 100
                      H(=      Compare to 17 - 1 = 16
                         +     Add the result (1 or 0) to the original

後で他を見ていきます。(編集:ブロックまたは文字列リテラルなしで可能だとは思わない...多分数学のものですか?)


#2には、を使用できます9`)ZH*+~):Q(Q)
デニス

11

J、スコア71 +(74-19)= 126

タスク1、長さ71

AHILO=:( |T`T`Z`e`e`f`m`p`x`y|.~~%~@{|~^|Q@Q@Q+.*.449!~!~!~!!#$$&1\\~~)

これは動詞AHILOを内部に定義します。未使用:

)))

これより長くなる方法はないと思います。

タスク3、長さ19

+($#~$~4)=1e4|&%:*~

制限なしでこのタスクを実行する方法は+16=100|]、次のとおりです。

        ]  Input
    100|   mod 100
 16=       equals 16? (Evaluates to 1 or 0)
+          Add to input.

+あり=、いくつかのコピーがあるか|、自由に使用でき]ますが、簡単に回避できますが、数には問題があります。入力モジュロ100を計算する最初の部分は次のとおりです。

1e4|&%:*~
       *~  Input squared (multiplied with itself).
1e4        The number 10000.
   |       Perform modulo
    &      on
     %:    their square roots.

それが終わったら、16という数字を生成しましょう。簡単な方法は*~4(4にそれ自体を掛ける)ですが、すでに使用している*ので禁止されています。代わりに、配列の操作を行います。

($#~$~4)
    $~4   Reshape 4 to shape 4, resulting in the array 4 4 4 4.
  #~      Replicate wrt itself: replace each 4 by four 4s.
 $        Take length.

作業

2

これはほとんど間違いなく不可能です。文字値を操作する唯一の方法はとでa.ありu:、どちらにもアクセスできません。

ここaで、たとえばの代わりに使用できる場合A、これは解決策になります。

Q{~(*^.4%9 1)+I.~&Q=:a.

これを機能させるための最も難しい部分は、-1を生成することでした。

Q{~(*^.4%9 1)+I.~&Q=:a.
                     a.  The array of all bytes.
                  Q=:    Bind it to Q
              I.~&       and find the input's index in it.
   (        )+           Add the following array:
    *                    Signum of
     ^.                  logarithm of
       4%                4 divided by
         9 1             the array 9 1.
                         This evaluates to -1 1.
Q{~                      Index back into Q.

4

(*.1:"|~@+.)

これにより、殻の形状が生成されますが、キャラクターを生成する方法が見つからないようです。ああ。

5

確かに、これはJで行うのが最も簡単なタスクのように見えます。しかし、なしではi.、これは非常に困難になります。

6

これは449、カプセル文字列に引用符やJ文字列を生成する他の方法が含まれていないため、偽物のような偽物がなければ不可能です。


タスク2ではQ{~1+I.~&Q=:a.、次の文字を指定します。アルファベットa.をバインドしQ、その中の入力のインデックスを見つけI.、を追加し、にインデックスを付けQます。それを試してみてください。残っている唯一の問題は-1... を生成することです
-Zgarb

また、タスク3は文字列関数なしで実行できます+16=100&|。どうにか16と100を生産する必要があります。
-Zgarb

@Zgarb(1)うん...(2)ああ!カッコいい!うーん、難しくありません
コナーオブライエン

ハ、私は3を得たと思う:+($@#~@$~4)=1e4|&%:*~それは私たちがそれぞれ1つと(&=:+*2つしか持っていないので、それは非常に迷惑だった4
ズガルブ

AAANDはここ2だ:Q{~(*^.4%9 1)+I.~&Q=:a.私は対数は気づい^.0と1の間の厳密な入力に対して負の数を与え、我々は持っている%画分を製造するためと*に結果を取るために-1と1
Zgarb

8

PowerShell-合計スコア:74

1.実行-スコア:74

#~= `TeQ.)`~H|$QL4yA)\*`!^O$1)!Z`!`~|\`&T@!x+e(f|Q`.|!4%.{~`:~~)m@~`@p~I9~

これはPowerShellでは非常に難しいので(私が知る限り、与えられた文字では入力を取得するすべての方法は不可能です)、少なくとも最初のチャレンジをランダム化して、すべての例を直接コピーするわけではありません投稿から。

ランダムチャレンジ1回答ジェネレーター#は次のとおりです(コメントがある言語の場合)。

'#'+$(-join([char[]]' !!!!!$$%&())))*+...1449:=@@@AHILOQQQTTZ\\^`````````eefmpxy{||||~~~~~~~~~'|Get-Random -Count 73))

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


あなたは正しいと思います。最も近い$^ものは「セッションの前の行の最初のトークン」であり、これは非常に制限され、標準のI / Oルールが厳しく曲げられる可能性が非常に高くなります。
AdmBorkBork

@TimmyDええ、$^とにかく新しいセッションでは空白です。
-briantist

8

ミーム、スコア(62 65 + 70)135

1:実行

すべてのバックティック(`)および数学演算子を削除しました。すべての単項演算子と二項演算子を満たすのに十分な数がなかったため、それらは競合していました。いくつか残して、結果として+3バイトになりました。結果のプログラム:

 !!!!!#$$%&())))...+1^4*49:=@@@AHILOQQQTTZ\\eefmpxy{||||~~~~~~~~~

これがなぜ、どのように機能したのか分かりません。少なくともC#ランタイム例外はスローされないため、クラッシュしません。

6:クイン

これらの74文字のどこかに-小文字があったとしたらq、これはあまりにも簡単でしょう。私はIオペレーター、少なくとも嬉しいです。

1/4I

このコードは明確ではありません。説明は次のとおりです。

1    Set object to 1 (1)
/4   Divide by 4     (0.25)
I    Set object to a fraction string. (1/4)

分数文字列(例:)1/4は、末尾にIを付けて表示され、正確に示されます。Iオペレータは通常役に立たないですが、私は他の手段のためにそれを追加しましたが、ちょっと、それはこのように動作します!

上記のコードは無効です。愚かな私は、74文字に単一の除算演算子、スラッシュ(/)が含まれていないことを知りませんでした。私は他の何かを思いつきました:

True

説明:

T    Set object to "true" (bool value)
rue  None of these are valid tokens, so they don't get interpreted.

出力True(C#がBoolean.ToString()小文字ではなく大文字を処理する方法のため)。これが適切な馬であるかどうかはわかりませんが、その間、私はまだ有効で、本当に適切で、直観的な人のために頭を割っています。

I / Oと数学の課題も解決できるかもしれませんが、74文字に含まれていない特定のトークン(文字)がありません。


8

Brainfuck、74バイト

H@~*^)$.`~+1A|Q)p~`\Z!IQ~e:O.~@``#|9@)Tf\eT`=(!``|`~!y!`) Q~$x.4|m4~~&!L{%

しなければなりませんでした。

説明:

有効なBrainfuckキャラクターでないキャラクターはコメントとして扱われます。実際に実行される唯一のコードは次のとおりです。

.+..

0も1もASCIIの印刷可能文字ではないため、これは印刷可能な出力を生成しません。ただし、エラーは発生しないため、最初のチャレンジを正常に完了します。


3
実際に出力を生成します。それらの文字を生成します。それらは「印刷可能」ではない場合があります(読み取り:表示されます)が、それでもなお標準出力に送信されます。
mbomb007

7

Mathematica、スコア62

Mathematicaで2〜6の課題を実行できる人がいると驚くでしょう。これが、チャレンジ1で行った最高の方法です。

A:=1.`!#&@(4`+4.`*9.`^$$H~I~L~O~Q~Q~Q~T~T||Z||e@@efmpxy%)!!!!

A定数値でかなり愚かな関数を定義します。未使用の12文字は次のとおりです。

)))\\`````{~

6

オクターブ、スコア74

1.実行する

x =@(AHILOQQQTTZeefmpy)+.1||!!!!!~~~~~~~~~4.^.4||9%#$$)))*@@\`````````{\&:

これらの文字のうち50個は関数の一部ですが、残りの24個はそうではありません。

それが何をする:

x =@(AHILOQQQTTZeefmpy)入力としてx変数AHILOQQQTTZeefmpyを取ることができる関数を作成します。

残りを理解するには:

a||bとのall()両方aで関数を呼び出しますb。これらのいずれかまたは両方がtrueを返す場合、||演算子はtrueを返します。

!a~aここで同じことを意味し、両方not(a)です。

a.^b は要素ごとのべき乗です (a(1)^b(1), a(2)^b(2) ...)

続きの説明

進むにつれて、各ステップを短縮します。

4.^.4||9  % This is 4 raised to the power of .4||9
          % .4||9 is true, since both .4 and 9 are true
          % true is evaluated to 1 when used in an expression
...       % 4 raised to the power of 1 is simply 4.
4         % The above expression simplified

そして:

!!!!!~~~~~~~~~4  % ! and ~ are the not() operator, so this is equivalent to:
not(not(not(not(not(not(not(not(not(not(not(not(not(not(4))))))))))))))

の数が偶数でnotあるため、not(not(4))これはtrueまたはに相当し1ます。

+.1||1      % This is equivalent to all(+.1) | all(1), which returns true

残りはコメント化されています。


6

*> <>、合計スコア= 74

1.実行、スコア74

f:4%*e+e14=p!Q H@~^)$.`~A|Q)~`\ZI~O.~@``#|9@)T\T`(!``|`~!y!`)Q~$x.|m~~&!L{

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

これを;キャラクターなしで行うことは非常に困難でした。私が実際に見たまで、しばらくの間、それは不可能になると思って%いました、私は基本的にあきらめていました。

これも有効な<>プログラムです。

説明(関連部分は省略)

f:4%*e+e14=p!Q 

f:               copy 15
  4%             pop 15, push 15%4 (3)
    *            pop 15 and 3, push 15*3 (45)
     e+          pop 45, push 45+14 (59, ascii ";")
       e         push 14
        14=      push 0
           p     replace coord (14, 0) with ";"
            !Q   skip Q (this is just filler)
              ;  end execution

直面する課題

私は他の挑戦を試みるかもしれません...彼らは非常に難しく、奇妙な方法でルールを曲げることを伴うかもしれませんが、|ミラーと!トランポリンの寛大な使用は少なくとももう1つの挑戦を可能にするはずです。

*> <>(oおよびn)、または関数呼び出し(C)、関数戻り値(R)、プログラムターミネータ(;)を含む出力は許可されないため、これらの課題は特に困難です。i入力についても不足していますが、スタックに入力を置くことができます。これはプラスです。もう1つpの利点は、単一の命令を取得することです。これにより、コードボックス内の命令を置き換えることができます。これは複数回使用できる可能性があり(実用的な方法はまだわかっていません)、他のプログラムがより可能に見えるようになります(2つ以上の命令を生成できるため)。


5

ハスケル、スコア63

1.実行:

(!!!!!#$$%&*+...:@@@\\^||||~~~~~~~~~)fmpxyAHILOQQQTTZ e=14`e`49

使用されていません)))```````{。Haskellのコメントは--また{- ... -}はですので、簡単な全コメント版はありません。

このコードは、!!!!!#$$%&*+...:@@@\^||||~~~~~~~~~2つの引数を取る中置演算子を定義します。

  1. fmpxyAHILOQQQTTZ これは無視されるため、任意の型にすることができます
  2. e、2つの数値を取る関数でなければなりません

関数本体でeは、`-infix表記を使用して14と49に適用されます。

使用例:

Prelude> () !!!!!#$$%&*+...:@@@\\^||||~~~~~~~~~ (*)
686

演算子は()、空のタプル、および(*)乗算演算子に適用されるため、14*49 = 686計算されます。

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

その他の課題

私は、他の課題のいずれかが、最も顕著な理由だけで二回表示されることが可能な変数名の欠如、の、可能であることは疑うe(か何かのようなeQT変数名は大文字で始めることはできませんので、)。もちろん、1つだけ持って=いても助けにはなりません。


5

Pyth、今のところ131(2つの課題が完了)

1.実行、74

# `````````!!!)!)!)*$AOeIefLmpxQ|Q|y|Q|~~~~~~~~~()${+%&\=@@@^\:.1.4.49TTZH

このプログラムは入力を受け取らず、出力も作成しません。

このプログラムはを使用する$$ため、任意のコードを実行できるため、オンラインで禁止されているため、このプログラムはオンラインでオフラインで実行されます。コンパイル出力は次のとおりです。実際に実行される内容を確認できます。

while True:
 try:
  (repr(repr(repr(repr(repr(repr(repr(repr(repr(Pnot(Pnot(Pnot()))))))))))))
  imp_print(Pnot())
  imp_print(Pnot())
  imp_print(times(AOeIefLmpxQ|Q|y|Q|~~~~~~~~~(),uniquify(plus(mod(("=" and lookup(lookup(lookup(Ppow(":",.1),.4),.49),T)),T),Z))))
  imp_print(H)
 except Exception:
  break

Pythでエラーにならない任意の文字を使用してプログラムを作成することは、かなり注意が必要です。ユーザーの入力を必要とせずにプログラムを実行することも要求するという追加の課題を設定しました。

最初のステップは#、すべてのエラーを食べるために使用することです。次に、我々はによって引き起こされるエラーを回避する必要がある~ILそれぞれが独自の詳細を持っています、。これは$$、出力コンパイル内にそれらを埋め込むことで実現され、PythではなくPythonのコンパイルルールに従います。最後に、ユーザー入力を避けるために、さまざまなアリティ0トークン(変数など)が最後に配置され、Qsが$$ブロック内に移動されます。

2. IO

可能であれば、これは非常に困難です。任意の文字列または文字を作成するPyth関数は、を除いて存在.fせず、任意の文字を作成するという非常に悪い仕事をします。

3.分岐可能性:74-17 = 57

|&x%Q*TTye|LZ9Q+1

オンラインで試す

同等のPythプログラムは次のとおりです。

?n%Q100 16Q+1

このコードは入力mod 100を取得し、それを16と比較し、3進数を使用して入力と入力プラス1のいずれかを選択します。文字の制限のため、いくつかの置換を行いました。

  • の代わりに?、私は|&or次にを使用しましandた。同じ機能を持ちますが、入力がゼロの場合は壊れますが、正の整数入力が保証されているので問題ありません。(これは、追加の文字がないため修正できましたが、この方法の方が簡単です。)

  • 2つの数値を直接比較する代わりにx、必要に応じて、等しい場合に限りゼロになるXORを使用します。

  • 100直接記述する代わりに*TTTで初期化されるため、で生成し10ます。

  • 16直接書く代わりに、で生成しye|LZ9ます。|LZ本質的にので、範囲の関数としての機能|LZ9が得られます[0, 1, 2, 3, 4, 5, 6, 7, 8]eリストの最後の要素を取り、を与え8ます。必要に応じyて、それを倍に16します。エキストラ+またはエキストラ*を使用すると、キャラクターを保存できますが、どちらも他の場所でより便利です。

もっと来ます!


3

Ruby-スコア:74

1.実行する

#H@~*^)$.`~+1A|Q)p~`\Z!IQ~e:O.~@``|9@)Tf\eT`=(!``|`~!y!`) Q~$x.4|m4~~&!L{%

挑戦からつかんだ。


1
Pythonでも同じです
ダニエル

3

JavaScript(ES6)、スコア= 74

1.実行、74バイト

Z=` !!!!!#$$%())))...1449:@@@\AHILOQQQTT^\`eefmpxy{||||~~~~~~~~~`*``+``&``

6.密教(無効)

記録のために、私の提案したクインは次のとおりでした:

1.4e+49

以下のコメントで説明されているように、これは無効であることが判明しました。


その馬は有効です。
wizzwizz4

3
クインは無効です。関連するルールはチャレンジにリンクされています。特に、単一のリテラルに基づくクインは、ソースの一部をソースの別の部分にエンコードできません。cc @ wizzwizz4
マーティン・エンダー

@MartinEnder私のブラウザでは、そのプログラムはソースコードを文字通り出力します。それはそれ自体に評価されるステートメントです。何を言っているのかわかりません。ソースの別の部分はありません。
wizzwizz4

1
@ wizzwizz4このコミュニティには、「プログラムが独自のソースを出力する」だけでなく、クインの要件が多くあります。リンクをご覧ください。
マーティンエンダー

1
トップ投票回答の@ wizzwizz4「プログラムの異なる部分をエンコードするプログラムのセクションを識別できる必要があります。(「異なる」は、2つの部分が異なる位置に表示されることを意味します。)」幸いなことに、チャレンジ(およびリンクされた回答)は、リンクされたメタ投稿よりも数年古いです。
マーティンエンダー

3

網膜、スコア74

1.実行、スコア74

)))` !!!!!#$$%&()*.+..1449:=@@@AHILOQQQTTZ\\^````````eefmpxy{||||~~~~~~~~~

正規表現でバランスを取るために、余分な括弧を構成に移動しました。私も`それらの後に右に移動し、に変更+.しました.+

オンラインで試す

改行がないため、その他はおそらく不可能です。文字-変換またはd数字の文字クラスにもありません。


3

ピップ、スコア74 +(74-19)= 129

引用符が表示されていないバックティックが多く表示されます(シングルまたはダブル)。

タスク1、スコア74

`` `\``!!!!!`#$$%&())))*+...1449:=@@@ILOQQQTTZ\^efmpx{|||~~~~~~~~~`|`yeAH`

基本的には、バックティック内の一連のパターン(正規表現)リテラルのみで、最後のものが出力されます。奇数のバックティックがあるので、そのうちの1つをバックスラッシュでエスケープする必要があります(`\``)。警告が生成されないことを証明するためにフラグを追加して、オンライン試してください-w

タスク3、スコア55(長さ19)

e+!!e%(1.#x.!9)=4*4

かなり奇妙な入力方法(5番目のコマンドライン引数)を使用することは可能です。オンラインでお試しください!

                     e is 5th cmdline arg; x is empty string
       1.#x.!9       Concatenate 1, 0 (length of x), and 0 (not 9)
    e%(       )      e mod 100...
               =4*4  ... equals 16?
  !!                 Logically negate twice
e+                   Add to e (+1 if number mod 100 is 16, +0 otherwise)
                     Expression is autoprinted

その他のタスク

上記のタスク3と同じ方法で、タスク2の入力を取得することができます。問題はASCIIコードに変換してから文字に戻すことです。前者はで行うことができますAが、後者ではC、または場合によってはPA変数へのインデックス付けが必要です。なしでは、コードの構築と評価はできませんV。タスクが可能だとは思わない。

タスク4は、制限された文字セットがなくても困難です。推測では、リスト([]区切り記号またはRL(繰り返しリスト)を使用せず、使用するAL(リストを追加する)可能性は1回だけ)または、おそらくCG(座標グリッド)またはMC(マップ座標)のいずれかが許可されていないリストが必要です。

タスク5は可能性の限界にあります。ForとMapは使用できず、範囲はで構築できないため、ループは困難,です。T病気でやるべきことがあるかもしれません。増分はx:x+1さまざまです(xただし、明らかに以外の変数を使用します)。分裂性チェックではを使用できます%。それでも、発生する必要のあるすべてのことを行うのに十分なキャラクター、特に繰り返される文字があるとは思いません。

タスク6は完全に不可能に見えます。すべての既知のPip quinesに含ま"れています。また、R(replace)、RP(repr)、またはV(eval)も使用しますが、いずれも使用できません。


2

実際には、スコア(74 + 0 + 0 + 0 + 0 + 0)= 74

はい、カプセル文字列は、実際にはエラーをすべて無視し、すべてのエラーがNOPになるため、実行時と同様に実際に動作します。

H@~*^)$.~+1A|Q)p~\Z!IQ~e:O.~@#|9@)Tf\eT`=(!|~!y!) Q~$x.4|m4~~&!L{%オンラインで試してみてください!

しかし、物事の混乱を出力します(しかし、そのソースも一度:3)。

ただし、他の課題に取り組みます。


1
いくつかのopをnoopにできる場合、クインプログラムは(できれば)非常に単純になります。
wizzwizz4

1
馬のプログラムは単純ではありません。あなたはまったく使用できませんQ(それは五角形のビルトインだからです)、そして二重引用符はありませんので、文字列のフォーマットはできません。私は昨日これでしばらく働いたが、他のプログラムは74文字だけでは不可能だと確信している。
メゴ

そして、イタリック体のfはないようです... :(
user48538


2

(乱用)PHP、74 + 74 = 148

H@~*^)$.`~+1A|Q)p~`\Z!IQ~e:O.~@``#|9@)Tf\eT`=(!``|`~!y!`) Q~$x.4|m4~~&!L{%

PHPインタープリターは、これらの文字のすべての順列が<?不足し<ているため実行中のクインであるため、ソースコードを見つけるまで単純にダンプします。私はこれが組み込みのquineコマンドを使用するよりも悪いことではないと思います


9
これは、クインの仕様を満たしていません。こちらを参照してください。それ自体をエンコードしません(つまり、実際にそれ自体を出力しません。コンパイラのために出力されるだけです。
Rɪᴋᴇʀ17年

@Easterlyインタープリターは、すべてのcharがをoutput this char満たすまで扱い<ます。私はそれがペイロード対応だと言っているのではありませんoutput the source。これがパート1の有効な回答でない場合、エラーなしで入力を受け付ける言語も有効な回答ではありません。これはほとんどの答えよりも虐待的ではないと思います。
クリストフ

4
@Christophパート1には有効ですが、チャレンジにリンクされているルールでは有効なクインではありません。コードの別の部分をエンコードするソースのセクションを特定できる場合、このコミュニティはクインを有効と見なします。プログラムでは、すべての文字は自分自身をエンコードするだけです。
マーティンエンダー

@MartinEnder:#!/ bin / catは以前はクインと見なされていました。
ジョシュア

@Joshuaは確かですが、最近ではそうではなく、猫もプログラミング言語とは見なされていません。
マーティンエンダー

2

Mathematica、スコア68

`A:= .1%*。44y#+。9 ^` H @ `$ I @` L @( `$ O〜` Q〜 `Q〜` Q〜 `T〜T〜Z〜e〜e | f | m | p | x)!!!!!&\

末尾の改行に注意してください。Mathematicaで他の課題を達成できるとは思いません。


2

ラビリンス、スコア74

AH)
IL)
OQ:
`=!)~`{+4.@ !!!$$%&(*..149@@TTZ\\^```eefmpxy||||~~~~~~~~
`Q#
`Q)
``!

これらの文字の組み合わせによって有効なラビリンスプログラムが生成されると確信していますが、少なくとも少し面白くするために、これは2016数字ごとに出力します。(要約:2スタックで2をプッシュ、1つをポップ/印刷、もう1つをAuxスタックに移動、0を印刷1、スタックで2をプッシュ、ポップ/印刷1、インクリメント、ビット単位ではなく、否定(最後にこの時点で1a 3)、2auxスタックからの合計、5 * 10 + 4 = 54、ascii値として出力、終了)

@プログラムが終了するため、長い行のほとんどは単純に無視されます。

Labyrinthの入力コマンドはどちらも使用できない(,または?)ため、チャレンジ2、3、および4は不可能であり、5または6については何も思いつきませんでした。


2

SmileBASIC、48ポイント

チャレンジ1:

@LOQQQTTZ A$=H$+@efmy+@9414*!exp(!!.||!!.#||I%):

説明:

@LOQQTTZ 'label
A$= 'set value of A$ (string)
H$ 'string
+@efmy 'adds label, interpreted as string literal
+@9414 'adds label, interpreted as string literal
*!exp( 'multiplies by logical not e^x (= 0)
!!. 'not not 0.0 (= 0)
||!!.# 'or not not 0.0 converted to a float (= 0)
||I% 'or I% (integer variable)
: 'equivalent to a line break, does nothing here

その他:

使用可能な入出力コマンドはないため、残りは使用できません。

それでも、コメントを使用せずに実際の言語に悪いことはありません。


+1本当に美しい。私はこれらのいずれかをどのように行い、それを取得することができなかったのだろうと思っていました。これは何をしますか?
カタツムリ_


1

bash、スコア74

1:実行します。74個すべてを実行できます

#H@~*^)$.`~+1A|Q)p~`\Z!IQ~e:O.~@``|9@)Tf\eT`=(!``|`~!y!`) Q~$x.4|m4~~&!L{%

6:密教:

空のプログラムはbashのクインです。

空白文字がないと、リスト上の他の何も達成できません。エルゴ、優勝したbashエントリがあります。


ルールノート:空が有効なクインではなく、勝つと誰かが挑戦した場合、私はまだ勝者のエントリーを持っています(クインなし)。一方、私がそれを配置せず、他の誰かが配置し、彼らが私に勝った挑戦に勝った場合。そこにとどまります。
ジョシュア

1

Perl 6、合計スコア74

1.実行、スコア74

my @TOTAL=$!||(e*4...9^e)Z+1~4||!!Q`{fp)))\#\&`~Q!```HI````!~Q:x~~~$~@~@~%

コメントはありません。
#すべてをコメントにするために先頭に置くだけでも機能しますが、これはもっと楽しいです。)

作業

これは、許可された文字のみを使用するPerl 6言語のサブセットです。

定数:e

タイプ名:IO

関数:exp

方法:
    タイプIOの場合:.e .f .x
    (...おそらくもっと。)

演算子:| 中置:| プレフィックス:
    ----------- + ----------------------- + ---------
    数値:| + * + ^ + | +&%| + + ^
    文字列:| 〜x〜^〜| 〜&| 〜
    ブール値:| || ~~ | !
    ジャンクション:| | &^ |  
    その他:| =:= Z .. ... |  

構文:
    数値リテラル:1 4 9
    文字列リテラル:Q` `Q!!等
    シェルコマンド:Q:x` `Q:x!!等
    どの星でも:*
    変数:my \ $ @&
    グループ化:()
    コメント:## `()
    アンスペース:\

課題2〜6を妨げる差し迫ったハードルは、I / Oを実行する方法がないように見えることです。

  • というファイルがあると仮定するとf、そのファイルQ`f`.IO.eが存在するかQ`f`.IO.xどうか、または実行可能かどうかを確認するために使用できます。しかし、私たちはそれを読むことも書くこともできません。

  • Q:x` `シェルコマンドを実行するために使用できます(1つの文字が見つかった場合)。しかし、私たちは何かを補間することはできませんので、書き込みではなく、読み取りにのみ適しています。

  • 右中括弧がないため、{1 + $_}最後のステートメントの値を自動的に返すブロックラムダ(例:)を作成できません。

  • 我々は可能性が表現ラムダ(例えばを作るためにアスタリスクを使用1+*)が、その後、私たちは、一つの引数のみを取ることができ、一度だけ、この引数を参照してください、そして、我々が使用できる構文/オペレーターでも、より限定されています。


よくできました、本当に!:)
ダダ

0

ルア、スコア31

1.実行(74点中31点)

AHILOQQQTTZeefmpxy=1.%4+(4.*9.)

3
スペースを逃しました。variable =stuff1バイト長くなります。
devRicher


0

///、スコア:146

1.実行、スコア:74

!!!!!#$$%&())))*+...1449:=@@@AHILOQQQTTZ\\^`````````eefmpxy{||||~~~~~~~~~

6.クイン、スコア:72

!!!!!#$$%&())))*+...1449:=@@@AHILOQQQTTZ^`````````eefmpxy{||||~~~~~~~~~

ええ、コードにスラッシュやバックスラッシュが含まれていない場合は、それ自体を出力します。

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