Prelúdio:
Esse desafio é diferente de "outro programa para gatos".
Há toneladas literais de reviravoltas diferentes, por que não posso ter o meu pessoal?
Coisas únicas:
- Não está lendo entrada direta para saída.
- Está manipulando a corda de uma maneira que com certeza não é um gato reto.
Desafio:
Dadas três entradas (ou uma entrada, separadas como você quiser), três objetos (palavras) serão substituídos por canetas, abacaxis e maçãs na letra e na saída.
Formato de saída (de acordo com as letras encontradas no AZLyrics ):
Supondo (substitua valores por colchetes por estes):
- A, B, C com palavras de entrada (ex.
apple
) - UA, UB, UC com palavras de entrada com as primeiras letras maiúsculas (se ainda não estiverem maiúsculas) (ex.
Apple
) - FUA, FUB, FUC com respectivamente as primeiras letras maiúsculas: (ex.
A
) - a / an com artigo correspondente à primeira letra da vogal / consoante (ex.
an
)
[FUA] - [FUB] - [FUC] - [FUA] Eu tenho [a / an] [A], eu tenho [a / an] [C]. Uh! [UC] - [UA]! Eu tenho [a / an] [A], eu tenho [a / an] [B]. Uh! [UB] - [UA]! [UC] - [UA], [UB] - [UA]. Uh! [UA] - [UB] - [UC] - [UA]. [UA] - [UB] - [UC] - [UA]!
Caso de teste:
Teste com pen
, pineapple
e apple
:
P-P-A-P
I have a pen, I have an apple.
Uh! Apple-Pen!
I have a pen, I have a pineapple.
Uh! Pineapple-Pen!
Apple-Pen, Pineapple-Pen.
Uh! Pen-Pineapple-Apple-Pen.
Pen-Pineapple-Apple-Pen!
Regras:
- Se a entrada não começar com uma letra, assuma consoante (
a
) e primeiro em maiúscula o primeiro caractere (ex.123 -> 1
). - código-golfe , menor quantidade de caracteres ganha!
Respostas:
JavaScript (ES6),
217...187183 bytesRecebe a entrada como uma matriz de 3 seqüências, como
['pen', 'pineapple', 'apple']
.Exemplos
Mostrar snippet de código
fonte
'golf', 'puzzle', 'code'
IMHOPerl 6 , 165 bytes
Usa a mesma abordagem que a resposta JS de Arnauld .
fonte
Lote,
494490 bytesExplicação: A
:h
sub-rotina processa a linhaI have a %, I have a %.
As%
s são substituídos a partir dos argumentos da linha de comando apropriados, e, em seguida, as cordasa a
,a e
,a i
,a o
ea u
são substituir com o equivalentean
versão. A:u
sub-rotina lida com as outras linhas; leva as palavras de parâmetro e maiúsculas todas as primeiras letras. (Um espaço extra é prefixado para permitir que a primeira palavra seja colocada em maiúscula, mas é removida na saída.) Para manipular as palavras após-
s, os espaços extras são passados, mas também são excluídos na saída. A:u
sub-rotina também é usada para a primeira linha, embora extrair as iniciais seja complicado.fonte
Python 3.6 -
351287286 bytesNão há nada sofisticado aqui, exceto usar o novo recurso de formatação literal de strings.
Nota - A versão é
3.6
onde a formatação literal da string foi introduzida . Portanto, isso não funcionará em versões anteriores.fonte
"
economizará apenas 2 bytes, mas\n
adicionará 12 bytes.Lua,
615607 bytesEconomizou 8 bytes graças a [um usuário anônimo]
Ufa, longa. Experimente aqui.
Estou 100% certo de que isso pode ser reduzido. Eu sou apenas preguiçoso ..
Basicamente, usa muita manipulação de strings. Existem 3 funções principais e uma variável:
d(string)
: retorna um se string é vogal (AEIOUaeiou
), senão retorna umz(string)
: retorna a primeira letra em maiúsculaz(s) .. s:sub(2)
: retorna a palavra inteira, mas a primeira letra é maiúsculaf
: a palavra final (em uma variável, para salvar alguns bytes). No seu caso de teste, seriaPen-Pineapple-Apple-Pen
.Entrada:
pen
,pineapple
,apple
Resultado:
fonte
Python 2 , 283 bytes
Experimente online!
fonte