メタキンを書く


19

メタキンとは、クインではないが、その出力が同じ言語のプログラムとして実行されたとき、クインであるプログラムです。

この課題の目標は、メタキンを書くことです。これはなので、最短のコードが優先され、最も早い回答がタイブレーカーとして使用されます。クインの定義により、完全なプログラムのみが許容されることに注意してください。

クインのルール

真のクインのみが受け入れられます。つまり、あなたは、STDOUTに逐語的に全体のソースコードを印刷する必要がなくて

  • ソースコードを直接または間接的に読み取る。
  • REPL環境に依存します。REPL環境は、フィードするすべての式を単に評価して出力するだけです。
  • 特定の場合にソースを出力するだけの言語機能に依存しています。
  • エラーメッセージまたはSTDERRを使用して、クインのすべてまたは一部を書き込みます。(STDOUTが有効なクインであり、エラーメッセージがその一部でない限り、STDERRに書き込むか、警告/致命的でないエラーを生成できます。)
  • 純粋にリテラル(文字列リテラル、数値リテラルなど)および/またはNOPのみで構成されるソースコード。

抑制できない出力(著作権表示、起動/シャットダウンメッセージ、末尾の改行など)は、クインの有効性のために出力で無視される場合があります。

リテラルのみのプログラムと組み込みのquiningを禁止するルールを無視すると、これはまじめにメタキンになります。

"Q"

プログラムは、"Q"出力で暗黙的に出力される単一の文字列リテラルで構成されます。出力(Q)が実行されると、それはクインです(Q組み込みのクイン関数です)。


2
リテラル/コメント/ NOPルールは、メタクォートの出力(つまり、実際のクイン)にも適用されますか?それ以外の場合ex。T簡単な1バイトのPyth回答です。
ドアノブ

@Doorknobはい、明確にします。
メゴ

8
このチャレンジの難点はどこにあるのか、私には本当にわかりません。「最短の既知のクインを含む文字列を印刷する」という戦略は、各言語で勝つことがほとんど保証されていませんか?
致命的

1
@Fatalize面白い質問は、クイン自体と同じ量またはそれより少ないバイトで実行できるかと思います。
マーティンエンダー

3
@Fatalize長くても有効なクインを出力する短いメタキンを書くこともできませんか?
リゾマティック

回答:


15

CJam、6バイト

"_p"_p

プリント

"_p"
_p

これはCJamで最短の適切なクインです。

ここでテストしてください。

説明

適切なクイン内のラインフィードはノーオペレーションであり、出力から削除する方が高価であるために含まれるだけなので、両方のプログラムはまったく同じように機能します。プログラムの仕組み:

"_p"  e# Push this string.
_     e# Duplicate it.
p     e# Print a string representation of the top of the stack (i.e. the string with
      e# quotes) followed by a linefeed.
      e# The other copy is then printed automatically at the end of the program, without
      e# stringifying it.

サイドノート

GolfScriptでも同じように動作します

".p".p

印刷する

".p"
.p

後続のラインフィードを使用します。これは、既知の最短のクインの1つです。


10

Pyth、12 11 10 9バイト

@ Pietu1998のおかげで、もう1バイト削除されました。

jN B".[9N

これは印刷します

.[9N".[9N

これはPythの馬です。ここで試してみることができます


出力は最短のPythクインの新しいレコードですか?これまで見たことがないと思います。
ETHproductions

私は他のどこにもそれを見つけることができませんでした。メタキンを取得しようと思いつきました。
リゾマティック

1
おそらく、元の
馬の

2
jN B".[9Nまたはを使用して、これを9まで下げることができます.[9N"jN B。(jN B"jN B9で別の真の"
クイン

@ Pietu1998ありがとう!9に到達する方法があるに違いないことを知っていました。Pythに9バイトより短いクインがありますか?
リゾマティック



4

Python 2、29バイト

_="_=%r;print _%%_";print _%_

よく知られている短いpythonクインはメタキンに簡単に変えられることがわかります:)

そして、末尾の改行と一致することを心配する必要がないため、メタキンは実際には短くなります!


もう一度私をbeat
りまし

3

Japt、15 13バイト

Q+"+Q ³s7J" ²

オンラインでテストしてください!

このプログラムは出力します

"+Q ³s7J"+Q ³s7J

これはJaptで最も短い既知の馬です。

使い方

Q+"..." // Take a quotation mark plus this string.  "+Q ³s7J
²       // Repeat it twice.                         "+Q ³s7J"+Q ³s7J
        // Implicit output

非競合バージョン、11バイト

Q+"+Q ²é" ²

私はしました追加した é、「回転」コマンドを使用します。そう

"+Q ²é"+Q ²é

現在、有効なクインです。


1

ルビー、25 23

puts"puts <<2*2,2
"*2,2

古典的なRuby HEREdocクインを生成します

puts <<2*2,2
puts <<2*2,2
2

古いソリューション

_='_=%p;$><<_%%_';$><<_%_

単一引用符を二重引用符で置き換えた場合を除き、自身を生成します。



1

魚(> <>)、17バイト

これは古典的な魚のクインを使用して動作しますが、元のプログラムがクインではなく、実行時に出力されるようにスタック全体を左にシフトする"r00g!;oooooooo|a {を追加します。

"{r00g!;oooooooo|

出力:

"r00g!;oooooooo|

これは魚の馬です!


1

ゼリー、3 バイト(非競合)

残念ながら、必要な原子はチャレンジより約2週間若いです。

メタキン

”Ṙv

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

使い方

”Ṙv  Main link. No arguments.

”Ṙ   Set the left argument and the return value to the character 'Ṙ'.
  v  Dyadic eval; evaluate the return value with the left argument as argument.
     Executing the atom Ṙ on the argument 'Ṙ' prints a string representation of
     the character, i.e., the string "”Ṙ".
     Finally, v returns its unaltered argument, which is printed implicitly.

クイン

”ṘṘ

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

使い方

”ṘṘ  Main link. No arguments.

”Ṙ   Set the left argument and the return value to the character 'Ṙ'.
  Ṙ  Print a string representation of the character, i.e., the string "”Ṙ".
     (implicit) Print the unaltered return value.

2番目は最初の2文字(”Ṙ)を出力するため、これは定義上適切なクインです。


1

オクトペンバル、22バイト

**競合しない回答

愛[35211].pack歩U')

Ruby出力

puts [35211].pack(' U')

どの出力。オクトペンバルの馬です!


1

7、2バイト、言語postdates挑戦

プログラムの長さは2バイトで、いくつかの方法で解釈できます。16進ダンプとして:

00000000: 4ff4                                     O.

コードページ437として:

O⌠

または、最も読みやすい8進数(7がネイティブに使用):

237723

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

これの動作は非常に簡単です。2つの半分の間にノーオペレーションスタック要素が挿入された標準の7クイン7です。(最初に挿入することもできましたが、723723ます。末尾の7は末尾の空白のようなものであり、パックエンコーディングでは無視されるため、最後に解釈することはできませんでした。したがって、出力プログラムと違いはありません。 )

ちなみに、このプログラムは16進数のが、それはほとんど偶然の一致です。



1

Brachylog、12バイト

"~k;?w₁"gjw₃

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

FatalizeのBrachylog v1(非不正)クインから翻訳された、クインの 132の同じ長さのメタキンバリエーションの1つ。私は実際に、それらのすべてを印刷するための(ゴルフではない、全体的にばかげた)プログラムを作成しました。

{[[";?","gj","jḍ"],"₁₃₅₇"]j∋ᵐ{ḍ≠&};"\"~~k~ww~w\"~ww~w~n"}ᶠ{lw" metaquines generated:
"ẉ&}w₁ᵐ

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

:そこinconsequentially交換することができ、元のQUINEの2つの部分がある;?に変更することができgjたりjḍ、とに変更することができまたは。ある方法で文字列リテラルの外側と異なる方法で文字列リテラルの内側にそれらを保持または変更すると、出力はソースと一致しません。文字列リテラル内に存在するバリアントはその内側と外側の両方で印刷されるためです、最初のプログラム実行ではなかったクインをもたらします。

;?gj、およびjḍすべての3つの対自体と文字列リテラルので、交換可能である:プログラムのレイアウトに起因するが、入力変数は?、文字列で統一されているので、;?対自体の文字列。レイアウトに関係なくgj、文字列をリストにラップし、リストに連結します。同様にjḍ、文字列をそれ自体に連結し、それを半分に分割します。

wもともとw0または1しか取得できなかったがw、2番目にフォーマットされた最初の要素を0で印刷し、1番目の要素を1で印刷したため、奇数の添え字は交換可能ですw。添え字の下位ビットは、直接であるかフォーマットされているかをエンコードし、中間ビットは、出力変数がwは、制約されていないか、入力に設定されており、高ビットは、印刷がすぐに行われるか、プログラムの最後まで遅れてバックトラックの対象になるかをエンコードします。(これらの添字は、私の最初で、これまでのところBrachylogへの最も大きな貢献でした。)クインとメタキンは出力変数を使用せず、バックトラックもしないため、4つの奇数添え字はすべて同等です。


0

Befunge-93、22バイト

"+1_@#`+39:,g0:">:#,_@

標準のクインを取り、引用符で囲み、それを逆にして(スタックに正しくロードされるように)、最後にスタック印刷を追加しました。

通常のクインに8文字が追加されているため、より良い解決策がある可能性が非常に高いです。


標準のクインを取り、改行を追加するだけではできませんか?改行は解析段階で消え、標準のクイン(それ自体を印刷します)だけが残ります。

0

Turtlèd、52バイト(非競合)

元のクインより1少ない

@##'@r,r,r-{ +.r_}r{ +.r_}"#'@r,r,r-{ +.r_}r{ +.r_}"

同じように機能しますが、末尾に文字がなく、実行時に末尾に文字があり、#に#を書き込むため、出力には影響しません。出力は、クインチャレンジ用に作成したクインとはわずかに異なりますが、同じように機能します。 "#を書き込みます。



0

Pushy、7バイト

言語が課題を先延ばしにしているため、競合しない。

これは標準のクインですが、改行が削除されています。改行はPushyでは何も意味しませんが、印刷演算子の標準セパレータであるため、真のクインに必要です。

95 34_"

オンラインでお試しください!この出力:

95 34
_ "

これは最短のプッシークインです-それがどのように機能するかの説明はここにあります

または、H5-34_"同じバイト数で機能します。


0

フォーム、14バイト

[. .'|: ~|]: ~

これはここで見つけることができる2番目のFoamクインを印刷します。これは実際には短くなります。これは.、各要素間に常にスペースが挿入されるためですが、3番目のトークンのバーにより、その前のスペースを省略できます。


新しい言語はサイトポリシーに従って自動的に競合しないため、競合しないビットを削除しました。
Mego

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