Introdução
Nós - especialmente os nerds entre nós, que tendem a ser fãs - todos nos lembramos desse velho desenho animado do Far Side :
Claramente, o professor Schwartzman poderia ter aprimorado suas habilidades de programação apenas um pouquinho mais antes de usar sua invenção. Mas você pode replicar você mesmo ... usando o mínimo de bytes possível?
Especificações de entrada
Você deve criar um script que traduza os sons de cães em "Hey" s entonados adequadamente. Isso é puro código de golfe; o menor número de bytes vence.
Sua entrada consistirá em alguma combinação dos seguintes tokens:
Bark
,Baark
,Baaark
,Baaaark
, ... (isto é,B*rk
com pelo menos uma
substitui o asterisco)Woof
,Wooof
,Woooof
, ... (W*f
com, pelo menos, 2o
s substituindo o asterisco)Grr
,Grrr
,Grrrr
, ..., (G
seguido por, pelo menos, 2r
s)- Qualquer número de caracteres
.
(ponto),!
(ponto de exclamação) e / ou?
(ponto de interrogação), que pode ocorrer em qualquer lugar da entrada
Note-se, mais uma vez, que os Woof
baseados e Grr
fichas baseados sempre requerem pelo menos duas o
s e r
s, respectivamente; Wof
e nãoGr
são tokens válidos.
Não há limite para a duração de um token (por exemplo, quantos a
s repetidos podem existir em um Bark
token); no entanto, seu decodificador só precisa funcionar corretamente para tokens de entrada com até 10a
s, o
s ou r
s totais para passar nesse desafio.
Especificações de saída
Fiel ao design de Schwartzman, seu programa de decodificador canino deve processá-lo no texto de saída da seguinte maneira:
Bark
,Woof
eGrr
torne - seHey
;Baark
,Wooof
eGrrr
torne - seHeyy
;Baaark
,Woooof
eGrrrr
torne - seHeyyy
; etc.- Para
Bark
tokens com base em todos , o número dey
s noHey
token com base na saída deve ser igual ao número dea
s; - Para
Woof
tokens com base em todos , o número dey
s noHey
token com base na saída deve ser um a menos que o número deo
s; - Para
Grr
tokens com base em todos , o número dey
s noHey
token com base na saída deve ser um a menos que o número der
s; - Todas as pontuações (
.
,!
e?
) permanecem inalteradas.
Lembre-se de retirar um y
da saída apenas por se Woof
es Grr
! A entrada Baaaaaaaark?
, com 8 a
s, se tornará Heyyyyyyyy?
, com um conjunto correspondente de 8 y
s. No entanto, Woooooooof?
torna-se apenas Heyyyyyyy?
, com 7 y
s.
Novamente, se você conseguir que seu programa funcione para tokens de entrada de tamanho ilimitado, isso é ótimo, mas para os propósitos deste desafio, seu programa será verificado apenas para garantir que funcione corretamente para tokens de entrada que não tenham mais que 10 letras repetidas .
Todos Bark
-, Woof
-, e Grr
os tokens baseados em sua entrada são assumidos para começar com letras maiúsculas. Portanto, não há nenhuma necessidade de viragem alça Bark grrr
em Hey heyy
ou qualquer coisa semelhante.
Exemplo de entradas e saídas
- Entrada:
Bark. Bark! Bark!!
- Saída:
Hey. Hey! Hey!!
- Entrada:
- Entrada:
Baaaaaark?
(seisa
s) - Saída:
Heyyyyyy?
(seisy
s)
- Entrada:
- Entrada:
Grrrrrrrr...
(oitor
s) - Saída:
Heyyyyyyy...
( setey
s)
- Entrada:
- Entrada:
?...!
- Saída:
?...!
- Entrada:
- Entrada:
Wooof Woof? Grrrr. Baaaark Grr!
- Saída:
Heyy Hey? Heyyy. Heyyyy Hey!
- Entrada:
Respostas:
Retina ,
24181716 bytes1 byte salvo com base em uma ideia na resposta do MT0.
Experimente online!
Explicação
Isso simplesmente transforma todas as letras em
y
, mas se elas são seguidas por umf
ouk
nós as substituímos imediatamente também. Removendof
ek
"normalizamos" os comprimentos das palavras, para que agora todos tenham mais doisy
s do que precisam.Isso transforma as duas primeiras
y
de cada palavraHe
, completando a transformação.fonte
Perl,
514139 bytesUso
Entrada
Saída
Como funciona
Substituição simples de regexp usando a impressão automática
-p
adicionando 1 byte à contagem./ge
executa a substituição para cada padrão e executa a substituição como código.Uma versão mais antiga usava uma detecção de três vias, mas Martin Ender percebeu que eu não era agressivo o suficiente, o que me salvou em 10 bytes.
O msh210 me informou que você não precisa de aspas na string
He
, economizando dois bytes.fonte
He
.Python, 106 bytes
Demo
https://repl.it/C6Rr
fonte
JavaScript (ES6) -
57555251 bytesTeste:
Agradecemos a @MartinEnder pelos bytes 56 e 51 e a inspiração para algumas das outras aparas.
fonte
Vimscript,
51393733322928 bytes,Créditos Regex para barbear mais 9 bytes: MT0, Martin Ender, msh210
Demo
Explicação:
fonte
\<yy
vez de\<\hy
?Perl 5, 25 bytes
Uma cópia Perl da resposta de Martin Ender Retina . 24 bytes, mais 1 para em
-pe
vez de-e
.fonte
Javascript,
726664 bytesEditar: separado
f=
e função + contagem reduzida de bytesfonte
f=
(como padrão do PPCG), então 64 bytes funcionam.Pyke, 35 bytes
Experimente aqui!
Gera Heys, gera pontuação, fecha e junta-se
fonte
Python 3,
140135134 bytesUsando regex para encontrar ocorrências de caracteres substituíveis.
Edit: Golfed 1 byte espaço em branco e 4 bytes para obter os valores do resultado de findall.
Edit2: Golfed 1 byte ("a" de Bark não foi contado corretamente)
fonte