Quellcode GO!

18

Verwenden wir Augmented Reality, um kleine Kreaturen zu jagen, die im Quellcode versteckt sind. Schreiben Sie ein Quine-Programm, das seine eigene Codequelle ausgibt, mit Ausnahme von 5 aufeinanderfolgenden Zeichen, die geändert werden und die ein PCG-Mon anzeigen :(^_^)

Die 5 aufeinander folgenden Zeichen können an einer beliebigen Stelle im Quellcode positioniert werden (von Position 0bis n-5, nwobei es sich um die Quellcodelänge handelt). Der Quellcode muss mindestens 5 Zeichen lang sein. Die Zeichenfolge (^_^)oder eine ihrer Unterzeichenfolgen mit einer Länge> = 2 darf nicht im ursprünglichen Quellcode, sondern nur in der Ausgabe enthalten sein.

Beispiel für eine gültige Einreichung:

  • Quellcode my source code, Ausgabemy (^_^)e code

Ungültig:

  • Quellcode (^_^) copy;, Ausgabe(^_^) (^_^)

Gewinnkriterien

Der kürzeste Code in Bytes gewinnt.

Arnaud
quelle
5
Um nicht allzu negativ zu sein, aber dies ist ein verallgemeinertes Quine und ein do x ohne y- Problem. In einer Sprache mit einer allgemeinen Quining-Methode ist dies eher langweilig. Sie haben auch nicht angegeben, was passieren soll, wenn Ihr Quellcode 5 Bytes oder weniger enthält.
FryAmTheEggman
@Fry Ich glaube nicht, dass es möglich ist, die 5 Zeichen (^_^)mit einem Quellcode mit weniger als 5 Zeichen anzuzeigen . vielleicht mit spezifischer Kodierung ...
Arnaud
3
Obwohl ich nicht sicher bin, ob dies in diesem Fall möglich ist, ist es eher trivial, ein Programm zu erstellen, das mehr Bytes druckt, als es enthält. Beispielsweise Gerzeugt das Pyth-Programm die Ausgabe abcdefghijklmnopqrstuvwxyz.
FryAmTheEggman
3
Ich würde empfehlen, dass Programme aus mindestens 6 Zeichen bestehen, nur damit niemand versucht, etwa Bubblegum .
Sp3000,
2
@FryAmTheEggman Die Grenze zwischen einer stumpfen und einer interessanten verallgemeinerten Quine ist ziemlich gut. Meine Meta-Antwort bezieht sich hauptsächlich auf Quines, bei denen die einzige praktikable Lösung darin besteht, eine Zeichenfolge zu erhalten, die den gesamten Quellcode darstellt, und diese Zeichenfolge dann zu verarbeiten. Wenn es Lösungen gibt, die irgendwann durchkommen, ohne den vollständigen Quellcode zu erstellen, dann lassen sich meiner Meinung nach in der Regel bereits interessante Lösungen finden (z. B. die derzeit führende CJam-Antwort). Für do X ohne Y scheint die Beschränkung auf Teilzeichenfolgen erforderlich zu sein, um triviale (quine) Lösungen zu vermeiden.
Martin Ender

Antworten:

14

Javascript ES6, 44 Bytes

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

Ausgabe:

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

Ich arbeite immer noch am Golfen, aber es funktioniert erstmal.

Mama Fun Roll
quelle
12
+1 für ein anderes Gesicht:=_=
Cyoce
2
Kannst du nicht $=_=>`(\^\_\^\)${($+'').slice(3)};$()`;$()(es sieht sogar noch schöner aus, weil es jetzt so aussieht, als würdest du ein schlafendes Gesicht wecken). :)
Martin Ender
10

Vim, 33 , 27 Tastenanschläge

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

Beachten Sie, dass <C-v>dies Strg + v bedeutet, Byte ist 0x16und <esc>das Escape-Zeichen ist und Byte ist 0x1B.

Dies verwendet nur eine leicht modifizierte Version von meinem Golf. Sie ist ein Quine für großartiges Wohl! Antworten.

Ausgänge:

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

Dies gilt, da ^Ves sich um die Art <C-v>und ^[Weise handelt, wie vim darstellt, und um die Art und Weise, wie vim darstellt <esc>.

Die Grundidee besteht darin, den Text nur (^_^)an seinen Codepunkten einzugeben, damit wir vermeiden, diese Zeichen in den Quellcode einzufügen. Im Einfügemodus <C-v>numberwird das ASCII-Zeichen "number" eingefügt. Da die Herausforderung jedoch lautet:

Die Zeichenfolge (^_^)oder eine ihrer Unterzeichenfolgen mit einer Länge> = 2 darf nicht im ursprünglichen Quellcode, sondern nur in der Ausgabe enthalten sein.

Diese Antwort Mißbräuche die „Teil“ Regel , indem nur die Codepoints der Eingabe ^Zeichen, und die Eingabe (, _und )direkt.

Hier ist ein GIF, mit dem Sie diese Lösung in Aktion sehen und den Quellcode und die Ausgabe zum Vergleich nebeneinander stellen können:

Bildbeschreibung hier eingeben

DJMcMayhem
quelle
ziemlich hinterhältig, mit dem ^Steuerzeichen ... +1
Rɪᴋᴇʀ
7

CJam , 13 11 Bytes

"(_)"
_p'^*

Online-Interpreter (-2 Byte dank @MartinEnder) .

"(_)"             Push string
      _p          Duplicate and print repr with newline
        '^*       Join string with '^'
Sp3000
quelle
3

Python, 115 111 107 Bytes

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

Aufruf f()und die Ausgabe ist:

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

Zum Teil inspiriert von dieser Antwort auf eine ähnliche Frage .

SCB
quelle
Willkommen auf der Seite!
DJMcMayhem
3

CJAM, 16 15 Bytes

Probieren Sie es hier aus .

{"^(_)"(*}_~sss
Arnaud
quelle
3

Go (Golang), 131 Bytes

Diese Herausforderung muss in Go!

package main;import"fmt";func main(){a:="package main;import\"fmt\";func(%c_%[1]c)(){a:=%q;fmt.Printf(a,94,a)}";fmt.Printf(a,94,a)}

Probieren Sie es online!

CryptoBob
quelle
3

JavaScript (ES6), 91 Byte

Es gibt bereits eine JavaScript-Antwort, aber keine JS-Antwort ohne Quellenangabe:

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

Dies basiert auf meiner nicht quellenlesbaren Antwort auf Golf you a quine for great good! . Ausgänge

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

Dies kann leicht geändert werden, indem Sie sich um die Sekunde %sin der Zeichenfolge bewegen . Beispielsweise,

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

Ausgänge

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

Jelly , 22 Bytes

“4094959441b³ỌØV”ṘVabc

Erhältlich bei TryItOnline

Verwendet das eingebaute Payload-fähige Quine. “ØV”ṘV
Das abcam Ende zu ersetzende
Füllelement konvertiert die Ganzzahl in die Basis 100, was zu Umwandlungen [40,94,95,94,41]
in Zeichen führt. (^_^)
Das Gesamtergebnis ist also“4094959441b³ỌØV”(^_^)

Jonathan Allan
quelle
2

C # 5.0, 715 Bytes

Ich weiß, das ist riesig. Ich wollte nur eine C # -Lösung hinzufügen.

/*^()_*/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();}}}

Die Ausgabe ist:

/*^()_*/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();}}}

Erhältlich bei Ideone.com

cyber_zodiac
quelle
1

MATL , 14 Bytes

')_`_*i't&Dwqh

Erzeugt die Ausgabe ')_`_*i'(^_^)h.

Probieren Sie es online!

Erläuterung

')_`_*i'  % Push this string
t&D       % Duplicate and get string representation (i.e. enclose with quotes)
w         % Swap
q         % Subtract 1. Transforms ')_`_*i' into the code points of '(^_^)h'
h         % Concatenate. Automatically casts code points to chars. Implicitly display
Luis Mendo
quelle
1
Mein erster Versuch einer Quine!
Luis Mendo
1

Bash, 178 Bytes

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, ich bin nicht gut in Quines: / Jeder Vorschlag, mehr Golf zu spielen, ist mehr als willkommen! :-)

Master_ex
quelle