Tienes la tarea de escribir dos programas. El programa A no debe imprimir nada en todas las entradas, excepto cuando se ingresa el programa B , en cuyo caso debe imprimir 1
. El programa B debe imprimir 1
en todas las entradas, excepto cuando se ingresa el programa A , en cuyo caso no debe imprimir nada.
Puntuación:
- +1 para cada personaje de ambos programas.
- La puntuación más baja gana.
Respuestas:
GTB , 25
Ejecutado desde una calculadora TI-84
Programa
A
Programa
B
Explicación
`_
Ingrese una cadena@_eq;"
Compruebe si es igual al código fuente (#
se elimina automáticamente junto con letras minúsculas)$w;&
Si es así, muestre 1 (de lo contrario, nada) [porqueB
es,$#w;&
si no, muestre 1 (de lo contrario, nada)]fuente
Bash - 32 caracteres
Guión A - 16 caracteres
Guión B - 16 caracteres
Uso
fuente
Rubí, 54
UN
si
ejemplos:
fuente
J (62)
Como no prohibiste esto ...
Almacene los programas como
A
yB
respectivamente.Programa A (30):
Programa B (32):
Cómo funciona (el programa B, A es similar):
1!:1[3
: leer stdin1!:1<'A'
: leer archivoA
-:
: ver si son iguales-.
: negar el resultado#~
: replica el resultado por sí mismo (por lo tanto,1
da como resultado uno1
y0
da como resultado cero0
s, es decir, nada)echo
: salidaexit
: salir (el intérprete J no sale por defecto cuando llega al final del archivo)fuente
Haskell - SIN fuente de carga - 478
644caracteresEsto supone que getContents SIEMPRE termina con una nueva línea y, por lo tanto, suelta el carácter final sin verificarlo porque no tengo ganas de escapar.
UN
si
Funciona como un quine estándar, pero intercambiando * por * para obtener el otro programa (evitando esos caracteres en otra parte).
La siguiente prueba se imprime como se esperaba (reemplazando main = interact $ con a = y b =)
-
fuente
Python 2.7 - 82
Archivo A (literalmente llamado solo
a
):Archivo B (literalmente llamado solo
b
):fuente
.py
... ¿eso funciona?python a
.touch a
, creará un archivo vacío si tiene permisos. Para una diversión extra cruel, incluso puede hacer lotouch \~
que crea un archivo llamado con una sola tilde (~
) - luego ver cómo alguien intentaRuby, 166 caracteres, sin fuente de lectura
UN:
SI:
Asegúrese de que su editor de texto no se guarde con una nueva línea final.
Uso (ejemplo):
Cada programa construye la fuente del otro programa usando un HEREdoc y transforma cadenas, luego compara el resultado con la entrada.
fuente
p
es un método de rubí incorporado que imprime los argumentos que se le pasan, luego los devuelve, lo que lo hace útil para la salida de golf. Cuando se llama sin argumentos, devuelve nil. El argumento paragets
es un delimitador, por lo que pasarp
resulta en un delimitador nulo, lo que significa que lee STDIN hasta que llega a EOF. La expresión heredoc es<<2
, por lo que termina en (y no incluye), el 2 al final del archivo.2
delimitador heredoc es un poco tradicional de ofuscación. Puede ser casi cualquier cadena.Haskell - 138
Realmente no es una buena respuesta, pero quería que ambos programas usaran la misma fuente. Podría guardar algunos caracteres cambiando el nombre del archivo, pero no va a hacer de esta una solución ganadora, así que no creo que valga la pena.
Compile esta fuente como ambos
A
yB
.Prueba:
fuente
A
y luego copiarA
aB
?Node.js - 142 caracteres
Script
|
(también conocido como Script A) - 80 caracteresScript
&
(también conocido como Script B) - 62 caracteresUso
Descripción
El guión B lee el contenido del guión A y lo evalúa después de intercambiar los nombres de archivo y el
and
operador a unor
.Puse un nombre a los archivos
&
y|
así puedo realizar un solo reemplazo en el Script B.fuente
Python 3 - 102 caracteres
Imprime 1 si la entrada es la misma que la del programa 2; de lo contrario, nada:
Imprime 1 si la entrada no es la misma que la del programa 1; de lo contrario, nada:
fuente
bash / grep - 59 caracteres
51 caracteres si solo contamos la cadena real del programa.
fuente
R (62 caracteres)
produce:
Meta comentario: R es relativamente malo en el golf de código ya que no hay un atajo para
function
...fuente