Meu amigo fez um tradutor de lisp no outro dia, ou seja, pegou uma string e converteu s => th e S => Th. Era bastante longo e eu pensei que poderia ser jogado golfe.
Portanto, a tarefa é criar um programa / função que pegue uma string de entrada, traduza-a para lisp e produza a string
Caso de teste
Sam and Sally like Sheep Tham and Thally like Thheep
Sally likes sausages Thally liketh thauthageth
Sally sells seashells Thally thellth theathhellth
Observe que não importa que h seja repetido o tempo todo
Este é o código de golfe, então a resposta mais curta ganha
s
nemS
em lugar algum.LOOK OUT A SNAKE!!! -> LOOK OUT A THNAKE!!!
Respostas:
Lithp comum, 62
Primeiro,
(read)
a entrada (deve ser uma string). Seqüências de caracteres em CL são sequências, por isso usamosmap
para iterar em cada caractere. O primeiro argumento paramap
representa o tipo do resultado (por exemplo, eu poderia criar uma lista a partir de um vetor). Quando énil
, também conhecido()
, os resultados são descartados. A função que é mapeada para a entrada simplesmenteprinc
(imprime de forma não legível) cada caractere, exceto os que devem ser substituídos.fonte
s
byth
, como todo mundo fez: olhe para as respostas de Pyson.s
->th
,S
->Th
,th
->th
,Th
->Th
.(defmacro cathe (&rest args) `(case ,@args))
Retina, 9 bytes
Experimente online!
A resposta óbvia.
fonte
JavaThcript ETh6, 38 bytes
No começo eu fui com a solução óbvia
Mas joguei 4 bytes
Isso faz uso do
i
sinalizador regex , que procura padrões que não diferenciam maiúsculas de minúsculas. O bom do Javascript é que você pode especificar uma função anônima para manipular (regex) a substituição.Experimente aqui
fonte
'Tt'[b>'r']+'h'
, mas é o mesmo comprimentoGNU Sed - 17
A resposta óbvia.
fonte
Gelatina , 13 bytes
Exibindo Jelly, o novo átomo de tranthlato. Experimente online!
fonte
Python 3-40 byteth
Primeiro golfe!
Ele usa o método de conversão
str
do módulo que aceita uma tabela de conversão. A tabela de conversão é simples, com código-chave como chave e o lugar dela como valor.dict
str
fonte
JavaThcript ETh6, 43 bytes
Tetht Thuite:
fonte
V , 11 byteth
Experimente online!
Com a linguagem que eu criei. Não está terminado, mas é realmente bom em termos de regimento.
fonte
C, 50 bytes
Substitua
\1
por um\x01
byte real .jimmy23013 salvou um byte e depois salvei mais dois usando sua abordagem! Obrigado.
fonte
&c
parâmetro está quebrado. Mas não é, porque em uma arquitetura little-endian o segundo byteint
será0x00
e realmente encerrará a "string" ... Isso é terrivelmente inteligente, eu adoro!s(c){c=getchar();c+=c-83&~32?0:26625;s(printf(&c));}
char
.'h\1'
05AB1E,
1412 bytesA resposta direta.
Experimente online
Guardado 2 bytes graças a @Adnan
fonte
Java,
7165 bytesPrimeira tentativa de jogar golfe, então porque não com Java.
fonte
replace
vez dereplaceAll
s->s.replace("S","Th").replace("s","th")
GNU AWK, 31 bytes
Basta usar a
gsub
função para traduzir S inferior ou superior via regex e imprimi-lo depois. Pode trabalhar com arquivos oustdin
como neste casofonte
CJam, 15 bytes
Teste aqui.
Explicação
fonte
Python3 - 46 bytes
Queda de 4 bytes com a ajuda de @DenkerAffe !
fonte
lambda s:s.replace("s","th").replace("S","Th")
é um pouco mais curto.C # 6.0 - 58 bytes
Leva a string de entrada como um argumento para a função.
fonte
Haskell, 36 bytes
fonte
f's'=...
Char
...Ferrugem, 46 bytes
Experimente online!
fonte
PHP, 42 bytes
se executado a partir de um arquivo:
Correr como:
fonte
php -d error_reporting=0
para suprimir avisos.TI-Basic, 126 bytes
fonte
Str1
nunca muda eAns
manterá um número no final.Str1
novamente ...Java, 101 bytes
Observe que este é um programa completo, diferente da resposta Java anterior .
Bônus (deve ser alimentado primeiro ao
pré-processador CTHEEpré-processador):fonte
Pitão, 14 bytes
Suíte de teste
Obrigado a @LeakyNun por detectar um erro de digitação!
fonte
MATL , 17 bytes
Experimente online!
Explicação
fonte
Python 3, 53 bytes
Uso:
fonte
lambda s:s.replace("s","th").replace("S","Th")
Uso:(lambda s:s.replace("s","th").replace("S","Th"))(s)
Idioma do GameMaker, 74 bytes
fonte
Matlab, 39 byteth
Uma abordagem direta:
fonte
Emacth Lithp, 61 bytes
O Emacs Lisp tenta ser inteligente ao substituir o texto, mas essa inteligência é interrompida quando a sequência substituída ocupa apenas um espaço, ou seja, a letra maiúscula S. Para impedir que isso converta "Sam e Sally" em "THam e THally", a palavra inteira é correspondido. No entanto, isso também lida com "SAM e Sally" da maneira que se deseja, ou seja, produzindo "THAM e Thally".
fonte
código de máquina x86, 19 bytes
Em hexadecimal:
Entrada::
ESI
sequência de entrada,:EDI
buffer de saída.Desmontagem:
fonte
test al, 'S'
para verificar ambos ao mesmo tempoBefunge 98,
3749 bytesVersão original :
Edição final, conforme consenso:
Isso deixa um grande buraco na grade de código que eu não estou muito feliz. Vou investigar isso quando tiver tempo.
O 49º byte é um espaço no final da segunda linha, incluído para ter uma grade retangular, necessária para impedir que o ccbi (e provavelmente outros intérpretes) espreite e imprima uma linha infinita de "Th" s.
fonte
35 Byteth of Julia:
Experimente online! (inclui todos os casos de teste)
fonte
SpecBASThpecBATh - 53 bytesfonte