Mi amigo hizo un traductor lisp el otro día, es decir, tomó una cadena y convirtió s => th y S => Th. Fue bastante largo y pensé que se podía jugar golf.
Entonces, la tarea es hacer un programa / función que tome una cadena de entrada, la traduzca a lisp y genere la cadena
Caso de prueba
Sam and Sally like Sheep Tham and Thally like Thheep
Sally likes sausages Thally liketh thauthageth
Sally sells seashells Thally thellth theathhellth
Tenga en cuenta que no importa que h se repita todo el tiempo
Este es el código de golf, así que la respuesta más corta gana

sniSen ninguna parte.LOOK OUT A SNAKE!!! -> LOOK OUT A THNAKE!!!Respuestas:
Lithp común, 62
Primero,
(read)la entrada (debe ser una cadena). Las cadenas en CL son secuencias que usamosmappara iterar en cada carácter. El primer argumento paramaprepresenta el tipo de resultado (por ejemplo, podría construir una lista a partir de un vector). Cuando esnil, alias(), los resultados se descartan. La función que se asigna a la entrada simplementeprinc(imprime de forma no legible) cada carácter, excepto los que deben reemplazarse.fuente
sbyth, como todos los demás: mira esas respuestas de Pyson.s->th,S->Th,th->th,Th->Th.(defmacro cathe (&rest args) `(case ,@args))Retina, 9 bytes
Pruébalo en línea!
La respuesta obvia.
fuente
JavaThcript ETh6, 38 bytes
Al principio fui con la solución obvia
Pero lo jugué 4 bytes
Esto utiliza el
iindicador regex , que busca patrones que no distinguen entre mayúsculas y minúsculas. Lo bueno de Javascript es que puede especificar una función anónima para manejar el reemplazo (regex).Pruébalo aquí
fuente
'Tt'[b>'r']+'h', pero tiene la misma duraciónGNU Sed - 17
La respuesta obvia.
fuente
Jalea , 13 bytes
Destrozando el nuevo y delgado átomo de trantilato de Jelly. Pruébalo en línea!
fuente
Python 3 - 40 bytes
Primero golf!
Utiliza el método de traducción
strdel módulo que acepta una tabla de traducción. La tabla de traducción es simple con código clave como claves y en su lugar como valor.dictstrfuente
JavaThcript ETh6, 43 byteth
Tetht Thuite:
fuente
V , 11 bytes
Pruébalo en línea!
Con un idioma que hice. No está terminado, pero es realmente bueno en la regekth.
fuente
C, 50 bytes
Reemplazar
\1con un\x01byte real .jimmy23013 guardó un byte, ¡y luego salvé dos más usando su enfoque! Gracias.
fuente
&cparámetro está roto. Pero no lo es, porque en una arquitectura little-endian el segundo byte de esointserá0x00y realmente terminará la "cadena" ... Esto es terriblemente inteligente, ¡me encanta!s(c){c=getchar();c+=c-83&~32?0:26625;s(printf(&c));}char.'h\1'05AB1E,
1412 bytesLa respuesta directa.
Pruébalo en línea
Guardado 2 bytes gracias a @Adnan
fuente
Java,
7165 bytesPrimer intento de jugar al golf, entonces, ¿por qué no con Java?
fuente
replacelugar dereplaceAlls->s.replace("S","Th").replace("s","th")GNU AWK, 31 bytes
Simplemente usando la
gsubfunción para traducir S inferior o superior a través de expresiones regulares e imprimirlo después. Puede trabajar con archivos, ostdincomo en este casofuente
CJam, 15 bytes
Pruébalo aquí.
Explicación
fuente
Python3 - 46 bytes
¡Se eliminaron 4 bytes con la ayuda de @DenkerAffe !
fuente
lambda s:s.replace("s","th").replace("S","Th")Es un poco más corto.C # 6.0 - 58 bytes
Toma la cadena de entrada como argumento para la función.
fuente
Haskell, 36 bytes
fuente
f's'=...Chars ...Óxido, 46 bytes
Pruébalo en línea!
fuente
PHP, 42 bytes
si se ejecuta desde un archivo:
Correr como:
fuente
php -d error_reporting=0para suprimir avisos.TI-Basic, 126 bytes
fuente
Str1nunca cambia yAnstendrá un número al final.Str1volver a ahorrar ...Java, 101 bytes
Tenga en cuenta que este es un programa completo a diferencia de la respuesta anterior de Java .
Bonificación (se debe alimentar al
preprocesador C,ELE, el preprotetro primero):fuente
Pyth, 14 bytes
Banco de pruebas
¡Gracias a @LeakyNun por detectar un error tipográfico!
fuente
MATL , 17 bytes
Pruébalo en línea!
Explicación
fuente
Python 3, 53 bytes
Uso:
fuente
lambda s:s.replace("s","th").replace("S","Th")Uso:(lambda s:s.replace("s","th").replace("S","Th"))(s)Lenguaje GameMaker, 74 bytes
fuente
Matlab, 39 bytes
Un enfoque directo:
fuente
Emacth Lithp, 61 bytes
Emacs Lisp intenta ser inteligente al reemplazar texto, pero esa inteligencia se rompe cuando la cadena reemplazada solo ocupa un espacio, es decir, la letra mayúscula S. Para evitar que esto convierta "Sam y Sally" en "THam y THally", la palabra completa se compara en su lugar. Sin embargo, esto también maneja "SAM y Sally" de la manera que uno desearía, es decir, producir "THAM y Thally".
fuente
código de máquina x86, 19 bytes
En hexadecimal:
Entrada::
ESIcadena de entrada,:EDIbúfer de salida.Desmontaje
fuente
test al, 'S'para verificar ambos a la vezBefunge 98,
3749 bytesVersión original :
Edición final, según consenso:
Esto deja un gran agujero en la cuadrícula del código que no estoy muy contento. Lo investigaré cuando tenga tiempo.
El byte 49 es un espacio al final de la segunda línea, incluido para tener una cuadrícula rectangular, necesario para evitar que ccbi (y probablemente otros intérpretes) salgan e impriman una línea infinita de "Th" s.
fuente
35 Bytes de Julia:
Pruébalo en línea! (incluye todos los casos de prueba)
fuente
SpecBASThpecBATh - 53 bytesfuente