Código fuente GO!

18

Usemos la realidad aumentada para cazar pequeñas criaturas ocultas en el código fuente. Escriba un programa quine que genere su propio código fuente, excepto 5 caracteres consecutivos que serán modificados y que mostrarán un PCG-mon :(^_^)

Los 5 caracteres consecutivos se pueden colocar en cualquier lugar en el código fuente (de la posición 0para n-5, nsiendo la longitud de código fuente). El código fuente debe tener una longitud mínima de 5 caracteres. La cadena (^_^)o cualquiera de sus subcadenas de longitud> = 2 no debe aparecer en el código fuente inicial, solo en la salida.

Ejemplo de presentación válida:

  • código fuente my source code, salidamy (^_^)e code

Inválido:

  • código fuente (^_^) copy;, salida(^_^) (^_^)

Criterios ganadores

El código más corto en bytes gana.

Arnaud
fuente
55
No debe ser demasiado negativo, pero esta es una quine generalizada y un problema de do x sin y . En un lenguaje con un método de quining general, esto es bastante aburrido. Tampoco ha especificado qué debería suceder si su código fuente es de 5 bytes o menos.
FryAmTheEggman
@Fry ¿No creo que sea posible mostrar los 5 caracteres (^_^)con un código fuente con menos de 5 caracteres? quizás con codificación específica ...
Arnaud
3
Si bien no estoy seguro de que sea posible en este caso, es bastante trivial crear un programa que imprima más bytes de los que contiene. Por ejemplo, el programa Pyth Gproduce la salida abcdefghijklmnopqrstuvwxyz.
FryAmTheEggman
3
Recomiendo que los programas tengan al menos 6 caracteres, para que nadie intente, por ejemplo, Bubblegum .
Sp3000
2
@FryAmTheEggman La línea entre una quine general aburrida y una interesante está bastante bien. Mi meta respuesta se refiere principalmente a quines donde la única solución viable es obtener una cadena que represente todo el código fuente y luego procesar esa cadena. Si hay soluciones que pueden escaparse sin construir el código fuente completo en algún momento, creo que generalmente ya permite soluciones interesantes (por ejemplo, la respuesta actual de CJam). En cuanto a do X sin Y, la restricción en las subcadenas parece necesaria para evitar soluciones triviales (quine).
Martin Ender

Respuestas:

14

Javascript ES6, 44 bytes

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

Salida:

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

Todavía estoy trabajando en golf, pero funciona por ahora.

Mama Fun Roll
fuente
12
+1 por tener otra cara:=_=
Cyoce
2
No puedes hacerlo $=_=>`(\^\_\^\)${($+'').slice(3)};$()`;$()(en realidad se ve aún mejor porque ahora parece que estás despertando). :)
Martin Ender
10

Vim, 33 , 27 pulsaciones de teclas

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

Tenga en cuenta que <C-v>significa ctrl + v, y es byte 0x16y <esc>es el carácter de escape y es byte 0x1B.

¡Esto solo usa una versión ligeramente modificada de mi Golf que te quine para bien! responder.

Salidas:

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

Esto es válido ya que ^Ves la forma en que vim representa <C-v>y ^[es la forma en que vim representa <esc>.

La idea básica es simplemente ingresar el texto (^_^)por sus puntos de código para que podamos evitar poner esos caracteres en el código fuente. En el modo de inserción, <C-v>numberinsertará el carácter ASCII de "número". Sin embargo, ya que el desafío dice:

La cadena (^_^)o cualquiera de sus subcadenas de longitud> = 2 no debe aparecer en el código fuente inicial, solo en la salida.

Esta respuesta abusos del "subcadena" regla de solamente entrar en los puntos de código de los ^personajes, y entrando (, _y )directamente.

Aquí hay un gif que le permite ver esta solución en acción, y pone el código fuente y la salida lado a lado para comparar:

ingrese la descripción de la imagen aquí

DJMcMayhem
fuente
bastante astuto, usando el ^control char ... +1
Rɪᴋᴇʀ
7

CJam , 13 11 bytes

"(_)"
_p'^*

Intérprete en línea (-2 bytes gracias a @MartinEnder) .

"(_)"             Push string
      _p          Duplicate and print repr with newline
        '^*       Join string with '^'
Sp3000
fuente
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("(_)"))

Llamada f()y la salida es:

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

Inspirado en parte por esta respuesta a una pregunta similar .

SCB
fuente
Bienvenido al sitio!
DJMcMayhem
3

CJAM, 16 15 bytes

Pruébalo aquí .

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

Go (golang), 131 bytes

Este desafío debe tener una respuesta en 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)}

Pruébalo en línea!

CryptoBob
fuente
3

JavaScript (ES6), 91 bytes

Ya hay una respuesta de JavaScript, pero no hay una respuesta de JS que no lea la fuente:

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

¡Esto se basa en mi respuesta que no es de lectura de fuente para Golf una quine por un gran bien! . Salidas

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

Esto se puede modificar fácilmente moviéndose alrededor del segundo %sen la cadena. Por ejemplo,

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

salidas

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

Jalea , 22 bytes

“4094959441b³ỌØV”ṘVabc

Disponible en TryItOnline

Utiliza el quine con capacidad de carga incorporada. “ØV”ṘV
En abcel extremo solo hay que reemplazar el relleno
convierte el entero en base 100, lo que resulta en [40,94,95,94,41]
conversiones en caracteres, lo que da como (^_^)
resultado todo el resultado.“4094959441b³ỌØV”(^_^)

Jonathan Allan
fuente
2

C # 5.0, 715 bytes

Lo sé, esto es enorme. Solo quería agregar una solución 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();}}}

El resultado es:

/*^()_*/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 en Ideone.com

cyber_zodiac
fuente
1

MATL , 14 bytes

')_`_*i't&Dwqh

Produce la salida ')_`_*i'(^_^)h.

Pruébalo en línea!

Explicación

')_`_*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
fuente
1
Mi primer intento de una 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, no soy bueno en quines: / ¡Cualquier sugerencia para jugar más al golf es más que bienvenida! :-)

Master_ex
fuente