ソースコードGO!


18

拡張現実を使用して、ソースコードに隠された小さな生き物を狩りましょう。変更され、PCG-monを表示する5つの連続した文字を除いて、独自のコードソースを出力するクインプログラムを作成します。(^_^)

5つの連続した文字は、(位置からソースコードのどこにでも配置することができる0までn-5nソースコードの長さです)。ソースコードの最小長は5文字でなければなりません。文字列(^_^)またはその長さが2以上の部分文字列は、初期ソースコードには表示されず、出力にのみ表示されます。

有効な提出の例:

  • ソースコードmy source code、出力my (^_^)e code

無効:

  • ソースコード(^_^) copy;、出力(^_^) (^_^)

受賞基準

バイト単位の最短コードが優先されます。


5
過度に否定的ではないが、これは一般化されたクインy xなしのdo x問題である。一般的なカイン法を使用する言語では、これはかなり退屈です。また、ソースコードが5バイト以下の場合の動作を指定していません。
FryAmTheEggman

@Fry 5文字(^_^)未満のソースコードで5文字を表示することはできないと思いますか?多分特定のエンコーディング
Arnaud

3
この場合に可能かどうかは定かではありませんが、含まれているよりも多くのバイトを出力するプログラムを作成するのは簡単です。たとえば、PythプログラムGは出力を生成しますabcdefghijklmnopqrstuvwxyz
FryAmTheEggman

3
Bubblegumを試みないように、プログラムは少なくとも6文字にすることをお勧めします。
Sp3000

2
@FryAmTheEggman鈍いと面白い一般化されたクインの間の境界線はかなり良いです。私のメタの答えは、ほとんどの場合、実行可能な解決策がソースコード全体を表す文字列を取得し、その文字列を処理することである、クインに関するものです。ある時点で完全なソースコードを構築せずに逃げることができるソリューションがある場合、通常はすでに興味深いソリューション(たとえば、現在の主要なCJamの回答)を既に許可していると思います。Yなしのdo Xに関しては、些細な(クイン)解決策を避けるために、部分文字列の制限が必要と思われます。
マーティンエンダー

回答:


14

Javascript ES6、44バイト

$=_=>`$=(\^\_\^\)${($+'').slice(5)};$()`;$()

出力:

$=(^_^)=(\^\_\^\)${($+'').slice(5)};$()`;$()

まだゴルフに取り組んでいますが、今のところうまくいきます。


12
別の顔を持つための+1:=_=
チョイス

2
できません$=_=>`(\^\_\^\)${($+'').slice(3)};$()`;$()(実際に寝顔を目覚めているように見えるので、実際はもっときれいに見えます)。:)
マーティンエンダー

10

Vimは、33、27回のキーストローク

qqqqqS(<C-v>94_<C-v>94)q@q<esc>hh"qPq@q

<C-v>はctrl + v を意味し、byte 0x16<esc>あり、エスケープ文字であり、byteであることに注意してください0x1B

これは私のゴルフのわずかに修正されたバージョンを使用しています。回答。

出力:

(^_^)S(^V94_^V94)q@q^[hh"qPq@q

ので、これは有効で^V表しvimの方法です<C-v>^[vimのが表す方法です<esc>

基本的な考え方は(^_^)、コードポイントでテキストを入力するだけで、ソースコードにこれらの文字を入れないようにすることです。挿入モードで<C-v>numberは、「数字」のASCII文字を挿入します。ただし、チャレンジには次のように記載されているため、

文字列(^_^)またはその長さが2以上の部分文字列は、初期ソースコードには表示されず、出力にのみ表示されます。

この答えは、人権侵害だけのコードポイントを入力して「サブストリング」ルール^の文字を、そして入る(_)直接。

このソリューションを実際に使用して、ソースコードと出力を並べて比較できるgifを次に示します。

ここに画像の説明を入力してください


かなり卑劣な、使用して^制御文字を... 1
Rɪᴋᴇʀ


3

Python、115 111 107バイト

def f():s='def f():s=%r;print s%%s.replace(s[:5],"^".join("(_)"))';print s%s.replace(s[:5],"^".join("(_)"))

呼び出しf()と出力は次のとおりです。

def f():s='(^_^)():s=%r;print s%%s.replace(s[:5],"^".join("(_)"))';print s%s.replace(s[:5],"^".join("(_)"))

同様の質問へのこの回答に一部触発されました。


サイトへようこそ!
DJMcMayhem



3

JavaScript(ES6)、91バイト

JavaScriptの回答は既にありますが、ソースを読めないJSの回答はありません。

a="a=%s;co%s.log(a,uneval(a),`(${'^'}_${'^'})`)";console.log(a,uneval(a),`(${'^'}_${'^'})`)

これは、ソースを読まない私の答えに基づいています Golf you a great good!。出力

a="a=%s;co%s.log(a,uneval(a),`(${'^'}_${'^'})`)";co(^_^).log(a,uneval(a),`(${'^'}_${'^'})`)

これは、2番目の %s、文字列のをます。例えば、

a="a=%s;console.log(a,uneval(a),`($%s_${'^'})`)";console.log(a,uneval(a),`(${'^'}_${'^'})`)

出力

a="a=%s;console.log(a,uneval(a),`($%s_${'^'})`)";console.log(a,uneval(a),`($(^_^)_${'^'})`)


2

C#5.0、715バイト

私は知っています、これは巨大です。C#ソリューションを追加したかっただけです。

/*^()_*/using System.CodeDom;namespace System{class P{static void Main(){var b="/*^()_*/using System.CodeDom;namespace System{{class P{{static void Main(){{var b={0};var f=new string(new[]{{b[3],b[2],b[5],b[2],b[4]}});var w=new IO.StringWriter();CodeDom.Compiler.CodeDomProvider.CreateProvider(\"CSharp\").GenerateCodeFromExpression(new CodePrimitiveExpression(b),w,null);Console.WriteLine(b.Replace(\"[4]}}}}}}}}\",f),w);Console.ReadKey();}}}}}}";var f=new string(new[]{b[3],b[2],b[5],b[2],b[4]});var w=new IO.StringWriter();CodeDom.Compiler.CodeDomProvider.CreateProvider("CSharp").GenerateCodeFromExpression(new CodePrimitiveExpression(b),w,null);Console.WriteLine(b.Replace("[4]}}}}",f),w);Console.ReadKey();}}}

出力は次のとおりです。

/*^()_*/using System.CodeDom;namespace System{class P{static void Main(){var b="/*^()_*/using System.CodeDom;namespace System{{class P{{static void Main(){{var b={0};var f=new string(new[]{{b[3],b[2],b[5],b[2],b[4]}});var w=new IO.StringWriter();CodeDom.Compiler.CodeDomProvider.CreateProvider(\"CSharp\").GenerateCodeFromExpression(new CodePrimitiveExpression(b),w,null);Console.WriteLine(b.Replace(\"[4]}}}}}}}}\",f),w);Console.ReadKey();}}}}}}";var f=new string(new[]{b[3],b[2],b[5],b[2],b[4]});var w=new IO.StringWriter();CodeDom.Compiler.CodeDomProvider.CreateProvider("CSharp").GenerateCodeFromExpression(new CodePrimitiveExpression(b),w,null);Console.WriteLine(b.Replace("(^_^)}}",f),w);Console.ReadKey();}}}

Ideone.comで入手可能



1

Bash、178バイト

Q='#(8_8)
printf "Q=\47"
echo -n "$Q"|sed -r "s~(_|\()8~\1^~g"
echo -e "\x27"
tail<<<"$Q" -n4'
printf "Q=\47"
echo -n "$Q"|sed -r "s~(_|\()8~\1^~g"
echo -e "\x27"
tail<<<"$Q" -n4

Pfff、私はクインが得意ではありません:/ゴルフに関する提案は歓迎以上です!:-)

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