Codice sorgente GO!


18

Usiamo la realtà aumentata per cacciare piccole creature nascoste nel codice sorgente. Scrivi un programma quine che emette la propria sorgente di codice, ad eccezione di 5 caratteri consecutivi che verranno modificati e che visualizzerà un PCG-mon :(^_^)

I 5 caratteri consecutivi possono essere posizionati in qualsiasi punto del codice sorgente (dalla posizione 0a n-5, nessendo la lunghezza del codice sorgente). Il codice sorgente deve avere una lunghezza minima di 5 caratteri. La stringa (^_^)o parte della sua sottostringa di lunghezza> = 2 non deve apparire nel codice sorgente iniziale, ma solo nell'output.

Esempio di invio valido:

  • codice sorgente my source code, outputmy (^_^)e code

Non valido:

  • codice sorgente (^_^) copy;, output(^_^) (^_^)

Criteri vincenti

Vince il codice più breve in byte.


5
Non essere eccessivamente negativo, ma questo è un quine generalizzato e un do x senza y problema. In una lingua con un metodo di quining generale, questo è piuttosto noioso. Inoltre non hai specificato cosa dovrebbe succedere se il tuo codice sorgente è di 5 byte o meno.
FryAmTheEggman,

@Fry Non penso che sia possibile visualizzare i 5 caratteri (^_^)con un codice sorgente con meno di 5 caratteri? forse con una codifica specifica ...
Arnaud,

3
Anche se non sono sicuro che sia possibile in questo caso, è piuttosto banale creare un programma che stampa più byte di quanti ne contenga. Ad esempio, il programma Pyth Gproduce l'output abcdefghijklmnopqrstuvwxyz.
FryAmTheEggman,

3
Consiglierei che i programmi debbano contenere almeno 6 caratteri, così nessuno cerca, per esempio, Bubblegum .
Sp3000,

2
@FryAmTheEggman La linea tra un noioso e un quine generalizzato interessante va piuttosto bene. La mia meta risposta si riferisce principalmente a quines in cui l'unica soluzione praticabile è ottenere una stringa che rappresenti l'intero codice sorgente e quindi elaborare quella stringa. Se ci sono soluzioni che possono cavarsela senza costruire l'intero codice sorgente a un certo punto, penso che di solito consenta già soluzioni interessanti (ad esempio la risposta CJam attualmente in testa). Per quanto riguarda do X senza Y, la restrizione sulle sottostringhe sembra necessaria per evitare soluzioni banali (quine).
Martin Ender,

Risposte:


14

Javascript ES6, 44 byte

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

Produzione:

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

Sto ancora lavorando sul golf, ma per ora funziona.


12
+1 per avere un'altra faccia:=_=
Cyoce,

2
Non puoi farlo $=_=>`(\^\_\^\)${($+'').slice(3)};$()`;$()(in realtà sembra ancora più bello perché ora sembra che ti svegli una faccia addormentata). :)
Martin Ender,

10

Tasti Vim, 33 , 27

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

Nota che <C-v>significa ctrl + v, ed è byte 0x16ed <esc>è il carattere di escape ed è byte 0x1B.

Questo usa solo una versione leggermente modificata del mio Golf, un vero vantaggio! risposta.

Uscite:

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

Questo è valido poiché ^Vrappresenta il modo in cui vim rappresenta <C-v>ed ^[è il modo in cui vim rappresenta <esc>.

L'idea di base è solo quella di inserire il testo (^_^)con i suoi punti di codice in modo da poter evitare di inserire quei caratteri nel codice sorgente. Nella modalità di inserimento, <C-v>numberinserirà il carattere ASCII di "numero". Tuttavia, poiché la sfida dice:

La stringa (^_^)o parte della sua sottostringa di lunghezza> = 2 non deve apparire nel codice sorgente iniziale, ma solo nell'output.

Questa risposta abusi la regola "sottostringa" inserendo solo i codepoints dei ^personaggi, ed entrando (, _e )direttamente.

Ecco una gif che ti consente di vedere questa soluzione in azione e mette il codice sorgente e l'output affiancati per il confronto:

inserisci qui la descrizione dell'immagine


piuttosto subdolo, usando il ^controllo char ... +1
Rɪᴋᴇʀ

7

CJam , 13 11 byte

"(_)"
_p'^*

Interprete online (-2 byte grazie a @MartinEnder) .

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

3

Pitone, 115 111 107 byte

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

Chiama f()e l'output è:

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

Ispirato in parte da questa risposta a una domanda simile .


Benvenuti nel sito!
DJMcMayhem


3

Go (golang), 131 byte

Questa sfida deve avere una risposta 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)}

Provalo online!


3

JavaScript (ES6), 91 byte

C'è già una risposta JavaScript, ma non c'è una risposta JS non di lettura sorgente:

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

Questo si basa sulla mia risposta non di lettura alla fonte a Golf, un vero vantaggio! . Uscite

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

Questo può essere facilmente modificato spostandosi attorno al secondo %snella stringa. Per esempio,

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

uscite

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

2

Gelatina , 22 byte

“4094959441b³ỌØV”ṘVabc

Disponibile su TryItOnline

Utilizza il payload incorporato abilitato quine “ØV”ṘV
L' abcestremità è solo il filler da sostituire
converte il numero intero in base 100, risultando in [40,94,95,94,41]
cast in caratteri, risultando (^_^)
quindi l'intero risultato è“4094959441b³ỌØV”(^_^)


2

C # 5.0, 715 byte

Lo so, questo è enorme. Volevo solo aggiungere una soluzione 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();}}}

L'output è:

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

Disponibile su Ideone.com


1

MATL , 14 byte

')_`_*i't&Dwqh

Produce l'output ')_`_*i'(^_^)h.

Provalo online!

Spiegazione

')_`_*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

1
Il mio primo tentativo di quine!
Luis Mendo,

1

Bash, 178 byte

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, non sono bravo a quines: / Qualsiasi suggerimento per giocare a golf è più che benvenuto! :-)

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.