Dados los 95 caracteres imprimibles en ASCII más nueva línea, sepárelos en dos grupos iguales de 48 caracteres (en adelante, el grupo A y el grupo B). Cree un mapeo uno a uno de su elección (tiene total discreción) entre los dos grupos. En otras palabras, A
podría mapear a
y viceversa, pero A
también podría mapear >
y viceversa, si eso es lo que necesita para su programa.
Una vez que haya dividido ASCII en dos grupos, escriba dos programas y / o funciones, utilizando solo los caracteres de cada grupo, respectivamente. En otras palabras, escriba un programa / función que solo use los caracteres del grupo A, y otro programa / función que solo use los caracteres del grupo B.
Estos programas deben poder recibir un carácter como entrada. El programa escrito con los caracteres del Grupo A debería generar / devolver el mismo carácter si la entrada era un carácter del grupo A, y el carácter del grupo A asignado si recibió un carácter del grupo B; el programa del Grupo A siempre debe generar un carácter del grupo A. De manera similar, el programa del Grupo B debería generar el mismo carácter si es un carácter del grupo B, y el carácter del grupo B mapeado si la entrada es un carácter del grupo A.
Puede que no sea tan claro, así que aquí hay un ejemplo. Si asume que todas las letras mayúsculas están en el grupo A, y todas las letras minúsculas están en el grupo B, y ha elegido que su mapeo uno a uno para estas letras sea de una a la otra, entonces: entonces aquí hay algunas entradas / salidas de muestra:
Programa A
Input Output
A A
D D
a A
q Q
Programa B:
Input Output
A a
D d
a a
q q
Otras reglas:
- Los dos programas no necesitan estar en el mismo idioma.
- No necesitan ser ambos programas o ambas funciones; uno podría ser un programa, el otro una función, eso está bien.
- No necesitan trabajar de la misma manera, tener una longitud similar, nada de eso; simplemente deben cumplir con las otras reglas anteriores.
- Sí, solo uno de sus programas puede usar nuevas líneas, y solo uno puede usar espacios (esto podría ser el mismo o un programa diferente).
- No necesita utilizar los 48 caracteres en cada programa.
Las lagunas estándar están prohibidas, como es normal. Todos los programas deben ser independientes, sin archivos que contengan la asignación que elija.
Criterios de puntuación: código-golf . Específicamente, la suma de los bytes del texto de los dos programas.
Por favor, publique su respuesta de esta manera:
Idioma - # bytes + Idioma - # bytes = # bytes
Una descripción inequívoca de su mapeo. Si es complicado, use un cuadro como este:
ABCDEFGHIJKLMNOPQRSTUVWXYZ (etc.) zyxwvutsrpqonmlkjihgfedcba (etc.)
O bien, puede explicarlo (los primeros 48 mapas a los últimos 48 en secuencia), seguido de su respuesta de manera normal.
fuente
+
y>
, y el otro usando-
y<
. Luego debe intentar generar los operadores que faltan, como a,
o.
en el programa que no puede usarlos.Respuestas:
CJam - 11 bytes + CJam - 25 bytes = 36 bytes
Los personajes se seleccionan en grupos alternos de 16:
Es genial que algunas de las asignaciones se puedan obtener con la tecla Mayús :)
Programa A
Pruébalo en línea
Programa B:
Pruébalo en línea
Explicación:
Programa A
Programa B:
fuente
\n
), simplemente no es fácil de ver sin inspeccionar el html. Puede agregar uni
al final del programa para ver el código ASCII en su lugar (oci
también para tratar con una entrada de nueva línea, ya que genera una cadena de nueva línea en lugar de un carácter en ese caso)_0=
para0=_
que siempreCJAM -
46442611 bytes + GolfScript -1421251159368474036 bytes = 47 bytesGracias a Peter Taylor por jugar golf a 6 bytes del programa GolfScript (y allanar el camino para muchos más).
Gracias a Dennis por jugar 15 bytes fuera del programa CJam y 4 bytes fuera del programa GolfScript.
Grupo A: todos los caracteres con código de caracteres par.
Grupo B: todos los caracteres con código de caracteres impares, más nueva línea.
Estoy usando el mapeo obvio entre los dos, es decir, emparejar aquellos caracteres que solo difieren en el bit menos significativo, así como
~
y\n
. Aquí está el mapa completo (las columnas):Programa A (CJam, pruébalo aquí ):
Programa B (GolfScript, pruébelo aquí ):
Explicación
Programa A
(Anticuado, se actualizará mañana).
Este programa debe convertir los códigos de caracteres impares en pares, es decir, establecer el bit menos significativo en 0. La forma obvia de hacerlo es bit a bit Y con 126 (o 254, etc.), pero es más corto establecerlo en 1 (a través de bit a bit O con 1) en su lugar y luego disminuir el resultado. Finalmente, necesitamos arreglar las nuevas líneas manualmente:
Programa B
(Anticuado, se actualizará mañana).
Este programa simplemente puede establecer el bit menos significativo a 1 a través de bit a bit O con 1 ahora. Pero tiene que verificar ambos
\v
(código de caracteres 0x0B) y<DEL>
(código de caracteres 0xFF) manualmente y configurarlos en su~
lugar. En GolfScript no tenía acceso a eval, pero en su lugar puede agregar una cadena a un bloque (que luego se convierte en parte del código en ese bloque), que podría asignar a la entrada con%
:Y en cuanto al código generado en el bloque:
fuente
Java - 1088 bytes + Java - 1144 bytes = 2232 bytes
Gracias a @ durron597 por ayudar a jugar golf 1090 bytes desde el primer programa.
Prueba de que es posible hacerlo en un idioma (y no en eso).
Usa el truco Unicode para convertir el primero a todos los caracteres Unicode. El segundo usa la reflexión para obtener acceso a System.out para imprimir en std. fuera. No podía usar la u porque se usó en el primer programa. Sé que esto se puede jugar más, pero primero quería publicar una solución válida.
Los grupos se asignan de manera bastante arbitraria, pero básicamente, el primero solo requiere u, \ y los dígitos hexadecimales (en cualquier caso).
Los grupos:
Primer programa:
Equivalente a
Segundo programa:
Pruébelos aquí: https://ideone.com/Q3gqmQ
fuente
void x(int z)
, esos son los personajes en el primer juego de caracteres demasiado¡FIJO! Pyth - 23 bytes + Pyth - 30 bytes = 53 bytes
Uy error de fijación --- por favor sea pacientemisma división ASCII que la de Martin:
Prog # 1: Prueba en línea
Prog # 2: Prueba en línea
fuente