Su tarea es enfrentar cada lado del teclado uno contra el otro y construir dos programas, en el mismo idioma, uno usando solo las teclas del lado izquierdo de un teclado estándar que sale Pollinium milk; plump pumpkin; lollipop?y otro usando las teclas del lado derecho que sale Weatherheaded sweetheart haberdasheress!.
Reglas
Las claves exactas permitidas para el programa de la izquierda son:
123456!@#$%^QWERTYqwertyasdfghASDFGH`zxcvb~ZXCVB
y para el programa de la derecha:
7890-=&*()_+uiop[]UIOP{}jkl;'\JKL:"|nm,./NM<>?
Hay cuatro teclas libres Esc( \x1b), Tab( \x09), Space( \x20) y Enter( \x0ay / o \x0d) que se pueden usar en cualquiera, ninguna o ambas soluciones.
Su puntaje será el recuento total de bytes para ambos programas. Si bien he usado el término program, sus envíos pueden ser programas completos o funciones como de costumbre, y ambos pueden ser de diferentes tipos (por ejemplo, un programa completo y una función).
Su resultado debe incluir el texto deseado, cualquier cantidad de espacios en blanco iniciales y finales está bien, siempre que el texto exacto aparezca dentro de él.
Las lagunas estándar están prohibidas .
Las soluciones más cortas en cada idioma ganan.
fuente

Respuestas:
Perl 5 , 261 = 88 + 173 bytes
Este es un ejemplo donde "las opciones de idioma no cuentan" es un problema. La solución del lado rigt usa
-p, el lado izquierdo no. Entonces, ¿cuenta como el mismo idioma o no? ¿Y las opciones deben provenir del conjunto de caracteres izquierdo / derecho?Izquierda 88
use
-M5.10.0(o-Edesde la línea de comandos) para activarsayDe nuevo discutible si esta opción debe contar como código y debe venir del lado izquierdo o si se encuentra en "opciones para configurar la versión del idioma no cuenta"Pruébalo en línea!
Derecha 173
Ejecutar con la
-popción (que también consta de caracteres correctos)Es casi seguro que esto se puede mejorar, pero por ahora fue bastante difícil hacer que algo funcione. No tener acceso a
print,say,$_ysub{}hace que la producción complicadoPruébalo en línea!
fuente
evaltravés de&{(u&I.._)[9-7].O.(P|'"'&_).("U::u"&"o::o").("&"|p).(uo&il).(u&i.._)[9-8].("{|o"&"}uu").(j..u)[9]}!Espacio en blanco ,
11751143655645638632639578 (293 + 285) bytesTenía que hacerse ..; p
Definitivamente se puede jugar al golf llenando la pila al revés e imprimiéndolo todo al final en algún tipo de bucle, pero este es solo mi segundo programa de espacios en blanco, así que todavía tengo que resolverlo ..EDITAR: Golf.+7 bytes porque escribí mal
pumpkincomopumkin... (Gracias por notarlo, @ fəˈnɛtɪk .)Las letras
S(espacio),T(tabulación) yN(nueva línea) se agregan solo como resaltado.[..._some_action]agregado solo como explicación.Lado izquierdo
Pollinium milk; plump pumpkin; lollipop?:Pruébelo en línea (solo con espacios en bruto, pestañas y nuevas líneas).
Lado derecho
Weatherheaded sweetheart haberdasheress!:Pruébelo en línea (solo con espacios en bruto, pestañas y nuevas líneas).
Explicación:
Primero construye la pila invertida. Empujar un número se realiza de la siguiente manera:
Sal principio: Habilite la manipulación de la pilaS: Empuje lo que sigue como número a la pilaS/T: Bit de signo dondeSes positivo yTnegativoTySseguidos de unN: Ponga el número como binario en la pila (T=1yS=0).Luego recorrerá la pila invertida e imprimirá todo como caracteres. Hace esto de la siguiente manera:
SSSN)Label_0(NSSN)SNS)Label_1(NTSTN)TNSS)Label_0(NSNN)Label_1(NSSTN)Este es el diseño predeterminado para ambos programas. Aquí está el registro de cambios para este diseño predeterminado que redujo aún más el recuento de bytes:
Todos los números se reducen en la misma cantidad ( en el primer programa y en el segundo) para disminuir los dígitos binarios utilizados para los números ahora más bajos, y entre los pasos 3.2 y 3.3 se agregan los siguientes dos subpasos:
100110102101SSSTTSTTTSN) en el programa 1 o 101 (SSSTTSSTSTN) en el programa 2TSSS)También he utilizado
SNSen algunos casos para duplicar la parte superior de la pila, que se utiliza para el campoll,ll,eeyss.Además, el paso 4 (crear
Label_1) se eliminó por completo. Saldrá con un error, pero aún generará todo correctamente (lo cual está permitido según el meta ).Es posible copiar un
nvalor 'th desde la parte superior de la pila (conSTS+ 0 indexadon), que en algunos casos es más corto que crear un nuevo número.En el primer programa para el que hice esto: el segundo
penpop(STSSTN(copia 1) es más corto queSSSTTSSN(crear número para 'p')), el segundolenlol(STSSTN(copia 1) es más corto queSSSTSSSN(crear número para 'l' )), el segundopenp p(STSSTN(copia 1er) es más corto queSSSTTSSN(crear número para 'p')), el segundopenpumlp(STSSTTN(copia 3ro) es más corto queSSSTTSSN(crear número para 'p')), el segundopenpmup(STSSTSN( copia 2) es más corto queSSSTTSSN(cree el número para 'p')), el segundomenm m(STSSTN(copia 1) es más corto queSSSTSSTN(cree el número para 'm')), el segundoienini(STSSTN(copia 1) es más corto queSSSTSTN(cree el número para 'i') )En el segundo programa esto no se hace para ninguno. La distancia entre algunos es bastante corta, como
ereoded, pero crear el número para 'e' (SSTTN) o 'd' (SSTTSN) es más corto o de la misma longitud que la copia 1st (STSSTN), por lo que no pude aplicar este truco en el segundo programa para guardar bytes. NOTA: Después del paso de golf 7, ya no se aplican todos estos.En ambos programas, cambié el paso 1 del bucle de
SSSN(Push 0) aSSN(Push error_value), y eliminé los pasos 3.1 (SNSDuplicar) y 3.2 (NTSTNSi 0: Salir). Ahora simplemente saldrá con un error queSSNes un valor desconocido tan pronto como intente acceder a él.Se eliminó el
SSN(error_value) completamente en ambos programas. Ahora se detendrá con el error " No se puede hacer Infix Plus " cuando intenta hacer la función Agregar sin dejar nada en la pila.Cambió los valores constantes de
100y102hacia110y101respectivamente. Aquí el programa Java solía generar la110constante; y aquí el programa Java solía generar la101constante. Tenga en cuenta que ahora se usa menos Copia que la descrita en el punto 4 anterior, porque los nuevos valores son en muchos casos más cortos que las copias, por lo que volver a empujarlos es más corto.fuente
Lenguage, esta cantidad de bytes
El lado izquierdo es 65721878296123796350462639500449228197646164622176218219262161264085219054330862921130017235140285847450697804123168755463678390611789188813352602373675420824698785508893489685489807676509031860196742608788337382365939621331808044899882497347443262020486908162559376082705672994569868 repeticiones del
acarácter, que es equivalente al siguiente programa Brainfuck:Pruébalo en línea!
El lado derecho es 636605880289050800007960838028215177632402180834140124157618258152393860687206680356620669530585999501769442445842690365640523699585001167392310123764258380235064746704898152544431842440556280249638840374132783257375880144623575829131522611446544303839106505176776161206935275549421170646618266717893044911373119804737614528140 repeticiones del
pcarácter, que es equivalente al siguiente programa Brainfuck:Pruébalo en línea!
fuente
CJam , 128 + 192 = 320 bytes
Pruébalo en línea!
Pruébalo en línea!
fuente
Fisión , 958 + 752 = 1710 bytes
._.
Izquierda
Pruébalo en línea!
Correcto
Pruébalo en línea!
OK, aquí estamos con suerte, en realidad ._.
La primera característica interesante de Fission es que tiene 4 comandos para crear punteros de comando, átomos de AKA:
RLDUasí que tengo dos comandos para los grupos izquierdo y derecho.El segundo amuleto de la suerte es de 2 comandos para la salida
!yO, que se produce en diferentes grupos.Tercera vez el encanto. Ambos comandos de salida generan el equivalente ASCII de la masa de los átomos. Entonces necesito cambiarlo de alguna manera. ¡Suerte la mía! Tanto
+ (+1 mass)y_ (-1 mass)están en un grupo y los tres necesarios$ (+1 energy),~ (-1 energy),@ (swap mass and energy)están en otro grupo.Así que no hay nada que me detenga, pero no puede ser compacto, estableciendo masas paso a paso.
Primer programa
El primer programa consiste solo en
Dz^@$~!VEl inicio puede ser más simple (solo
R), pero el uso de dividir guarda algunos bytes para la primera letra.Atom, eso va a la izquierda, se envuelve y se encuentra
V, lo que lo hace bajar y envolverse indefinidamente, sin hacer nada.El segundo átomo va derecho y encontrará un montón de patrones repetidos
@...@!para cada letra que salga.Eventualmente se encontrará
Vy compartirá el destino del primer átomo. No hay forma de destruirlos o detenerlos con la parte izquierda del teclado.Segundo programa
El segundo viene con sus altibajos. Tengo comandos para cambiar la masa directamente, pero el comando de salida
Odestruye los átomos, así que necesito preservarlos de alguna manera.El programa comienza a la derecha desde el
Látomo hacia la izquierda.Patrón repetido:
'pone el siguiente código ASCII de char en la masa de los átomos, por lo que el código de algunosXse almacena primero, que la masa se cambia por_y+al valor exacto.A veces
X'se omite, si es más corto de usar solo_y+.El átomo viene de la izquierda, refleja dos veces y golpea
}desde la izquierda. En este caso}funciona como clonador, enviando dos átomos idénticos hacia arriba y hacia abajo. El átomo de abajo se refleja en el espejo y se va hacia la izquierda. Envolturas de átomos, golpea el mismo espejo pero desde abajo y así se refleja bien, encuentroOe impresión.Al final, el último átomo se encuentra con el final
Opara ser destruido.fuente