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
s
niS
en 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 usamosmap
para iterar en cada carácter. El primer argumento paramap
representa 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
s
byth
, 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
i
indicador 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
str
del 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.dict
str
fuente
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
\1
con un\x01
byte real .jimmy23013 guardó un byte, ¡y luego salvé dos más usando su enfoque! Gracias.
fuente
&c
parámetro está roto. Pero no lo es, porque en una arquitectura little-endian el segundo byte de esoint
será0x00
y 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
replace
lugar dereplaceAll
s->s.replace("S","Th").replace("s","th")
GNU AWK, 31 bytes
Simplemente usando la
gsub
función para traducir S inferior o superior a través de expresiones regulares e imprimirlo después. Puede trabajar con archivos, ostdin
como 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'=...
Char
s ...Ó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=0
para suprimir avisos.TI-Basic, 126 bytes
fuente
Str1
nunca cambia yAns
tendrá un número al final.Str1
volver 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::
ESI
cadena de entrada,:EDI
bú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