Code source GO!

18

Utilisons la réalité augmentée pour chasser les petites créatures cachées dans le code source. Écrivez un programme quine qui génère sa propre source de code, à l'exception de 5 caractères consécutifs qui seront modifiés et qui afficheront un PCG-mon :(^_^)

Les 5 caractères consécutifs peuvent être positionnés n'importe où dans le code source (de la position 0à n-5, nétant la longueur du code source). Le code source doit avoir une longueur minimale de 5 caractères. La chaîne (^_^)ou l'une de ses sous-chaînes de longueur> = 2 ne doit pas apparaître dans le code source initial, uniquement dans la sortie.

Exemple de soumission valide:

  • code source my source code, sortiemy (^_^)e code

Invalide:

  • code source (^_^) copy;, sortie(^_^) (^_^)

Critères gagnants

Le code le plus court en octets gagne.

Arnaud
la source
5
Ne pas être trop négatif, mais c'est un quine généralisé et un do x sans y problème. Dans une langue avec une méthode de quining générale, c'est plutôt terne. Vous n'avez pas non plus spécifié ce qui devrait se produire si votre code source est de 5 octets ou moins.
FryAmTheEggman
@Fry Je ne pense pas qu'il soit possible d'afficher les 5 caractères (^_^)avec un code source de moins de 5 caractères? peut-être avec un encodage spécifique ...
Arnaud
3
Bien que je ne suis pas certain que ce soit possible dans ce cas, il est plutôt trivial de créer un programme qui imprime plus d'octets qu'il n'en contient. Par exemple, le programme Pyth Gproduit la sortie abcdefghijklmnopqrstuvwxyz.
FryAmTheEggman
3
Je recommanderais que les programmes contiennent au moins 6 caractères, afin que personne n'essaye, par exemple, Bubblegum .
Sp3000
2
@FryAmTheEggman La ligne entre un quine généralisé terne et intéressant est plutôt fine. Ma méta-réponse se réfère principalement aux quines où la seule solution viable est d'obtenir une chaîne représentant le code source entier, puis de traiter cette chaîne. S'il y a des solutions qui peuvent s'échapper sans construire le code source complet à un moment donné, je pense que cela permet déjà déjà des solutions intéressantes (par exemple la réponse CJam actuellement leader). Quant au do X sans Y, la restriction sur les sous-chaînes semble nécessaire pour éviter les solutions triviales (quine).
Martin Ender

Réponses:

14

Javascript ES6, 44 octets

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

Production:

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

Je travaille toujours sur le golf, mais ça marche pour l'instant.

Mama Fun Roll
la source
12
+1 pour avoir un autre visage:=_=
Cyoce
2
Tu ne peux pas faire $=_=>`(\^\_\^\)${($+'').slice(3)};$()`;$()(ça a l'air encore plus agréable parce que maintenant on dirait que tu te réveilles un visage endormi). :)
Martin Ender
10

Vim, 33 , 27 touches

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

Notez que cela <C-v>signifie ctrl + v, et est octet 0x16et <esc>est le caractère d'échappement, et est octet 0x1B.

Cela utilise simplement une version légèrement modifiée de mon Golf, une quine pour le bien! répondre.

Les sorties:

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

Ceci est valable car ^Vc'est la façon dont vim représente <C-v>et ^[c'est la façon dont vim représente <esc>.

L'idée de base est simplement de saisir le texte (^_^)par ses points de code afin que nous puissions éviter de mettre ces caractères dans le code source. En mode insertion, <C-v>numberinsérera le caractère ASCII de "nombre". Cependant, puisque le défi dit:

La chaîne (^_^)ou l'une de ses sous-chaînes de longueur> = 2 ne doit pas apparaître dans le code source initial, uniquement dans la sortie.

Cette réponse abuse de la règle « substring » par seulement entrer dans les points de code des ^caractères, et en entrant (, _et )directement.

Voici un gif qui vous permet de voir cette solution en action, et met le code source et la sortie côte à côte pour comparaison:

entrez la description de l'image ici

DJMcMayhem
la source
assez sournois, en utilisant le caractère de ^contrôle ... +1
Rɪᴋᴇʀ
7

CJam , 13 11 octets

"(_)"
_p'^*

Interprète en ligne (-2 octets grâce à @MartinEnder) .

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

Python, 115 111 107 octets

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

Appelez f()et la sortie est:

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

Inspiré en partie par cette réponse à une question similaire .

SCB
la source
Bienvenue sur le site!
DJMcMayhem
3

CJAM, 16 15 octets

Essayez-le ici .

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

Aller (golang), 131 octets

Ce défi doit avoir une réponse dans 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)}

Essayez-le en ligne!


la source
3

JavaScript (ES6), 91 octets

Il y a déjà une réponse JavaScript, mais il n'y a pas de réponse JS sans lecture de source:

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

Ceci est basé sur ma réponse sans lecture de source à Golf you a quine for great good! . Les sorties

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

Cela peut facilement être modifié en se déplaçant autour de la seconde %sde la chaîne. Par exemple,

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

les sorties

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

Gelée , 22 octets

“4094959441b³ỌØV”ṘVabc

Disponible sur TryItOnline

Utilise la quine capable de charge utile intégrée “ØV”ṘV
Le abcsur la fin est juste une charge à remplacer
convertit l'entier en base 100, résultant en [40,94,95,94,41]
transtypages en caractères, résultant en (^_^)
Donc, le résultat entier est“4094959441b³ỌØV”(^_^)

Jonathan Allan
la source
2

C # 5.0, 715 octets

Je sais, c'est énorme. Je voulais juste ajouter une solution 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();}}}

La sortie est:

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

Disponible sur Ideone.com

cyber_zodiac
la source
1

MATL , 14 octets

')_`_*i't&Dwqh

Produit la sortie ')_`_*i'(^_^)h.

Essayez-le en ligne!

Explication

')_`_*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
la source
1
Ma première tentative de quine!
Luis Mendo
1

Bash, 178 octets

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, je ne suis pas doué pour les quines: / Toute suggestion de jouer au golf est plus que bienvenue! :-)

Master_ex
la source