No idioma inglês, uma maneira infalível de fazer uma combinação de letras sem sentido pronunciada é transformá-la inteiramente em pares consoantes-vogais, por exemplo, Wu ko pa ha ou, Me fa ro , consoante primeiro, seguido pela vogal .
Desafio:
Escreva um programa ou função que, com um número especificado de letras do usuário, crie um nome aleatório usando esse princípio. É simples assim.
Entrada:
Um número inteiro maior ou igual a 2 que designa o número necessário de letras na saída. A entrada pode ser obtida de STDIN, argumentos de linha de comando ou argumentos de função.
Resultado:
Uma sequência de comprimento especificado contendo pares consoante-vogal selecionados aleatoriamente. Pode ser impresso em STDOUT ou na alternativa mais próxima ou retornado no caso de uma função.
Regras:
- Cada consoante do alfabeto inglês deve ter a mesma probabilidade de ser selecionada para o primeiro caractere de cada par, e cada vogal do alfabeto inglês deve ter a mesma probabilidade de ser selecionada para o segundo caractere de cada par.
- Pares de letras podem ser repetidos.
- Como esse é um nome, a primeira letra deve ser maiúscula.
- Se a entrada for ímpar, um par de letras selecionado aleatoriamente no nome deve ter y ou h anexado ao final. A escolha de y ou h também deve ser aleatória.
- As brechas padrão não são permitidas.
- O menor código em bytes vence.
Definições das letras:
Consoantes:
bcdfghjklmnpqrstvwxyz
Vogais:
aeiou
Exemplo de E / S:
Input: 6
Output: Mefaro
Input: 9
Output: Wukohpaha
Desfrutar!
Respostas:
Pitão, 33 bytes
Demonstração.
fonte
JavaScript ES6,
187180168 bytesEdit: Eu mudei de usar regex replace para um loop simples, o que melhorou consideravelmente o comprimento. Código não-bloqueado e interface do usuário abaixo. Insira um número negativo por sua conta e risco, porque ele faz um loop infinito. (Obrigado ao unclemeat por apontar isso.)
fonte
SWI-Prolog,
286285 bytesExemplo:
a(13).
saídasLeqihsekeqira
.Nota: Pode ser necessário substituí-lo
`
por"
se você tiver uma versão antiga do SWI-Prolog.fonte
Pitão,
5242 bytesVocê pode experimentá-lo no compilador online aqui.
Obrigado a Jakube por jogar ainda mais, o NinjaBearMonkey por esclarecer o desafio e o issacg por criar Pyth e, inadvertidamente, me ensinar sobre
X
.Este programa seleciona aleatoriamente uma consoante e uma vogal para preencher a sequência, adiciona 'h' ou 'y' a um par se a entrada for ímpar e, em seguida, coloca o primeiro caractere em maiúscula. Aqui está o detalhamento:
Parece ineficiente anexar 'h' ou 'y' ao primeiro par consoante-vogal e depois embaralhar a lista. Tentei acrescentar um par aleatório, mas o código era sempre maior que isso.
fonte
rX1
capitalizarX
.t
é a mesma coisa que_P_
.J
, uma vez que você usaJ
apenas uma vez.Perl,
253238 bytesProvavelmente posso jogar mais, mas isso deve acontecer por enquanto.
Alterar:
fonte
Julia, 141 bytes
Isso cria uma função lambda sem nome que aceita um número inteiro como entrada e retorna uma string. tira vantagem do fato de que seqüências de caracteres em Julia podem ser indexadas e referenciadas como matrizes de caracteres. Para chamá-lo, dê um nome, por exemplo
f=n->...
.Ungolfed + explicação:
Exemplos:
fonte
Python 2,
148169156Edit: Percebeu que não estava em maiúscula a primeira letra. Vou ver se consigo jogar de volta amanhã.
Editar 2: Lembrado,
.title
mas acho que será isso.fonte
SmileBASIC 2 (Pequeno Computador),
197177 bytesEDIÇÃO CONTEMPORÂNEA MAIO 2018 : Esta foi a minha primeira submissão, quase 3 anos atrás! Minhas habilidades melhoraram muito desde então; -20 apenas com pequenos ajustes.
Começa com um prompt (é deixado em branco para salvar bytes, então é apenas um?) Onde você coloca o comprimento (armazenado na variável
L
).Tenho certeza de que participar de uma linguagem obscura do BASIC não vai me dar nada além de looks estranhos, mas consegui torná-lo bem pequeno para o BASIC. Ele tira proveito das peculiaridades estranhas do SB (como condicionais avaliando como 1 ou 0, já que não há tipo booleano) para eliminar o máximo de bytes possível quando escrevi isso às 3 da manhã.
fonte
Marbelous, 203 bytes
Teste aqui (intérprete online). Entrada via argumentos. Bibliotecas e placas cilíndricas devem estar ativadas.
Versão comentada / legível:
Isso é aproximadamente equivalente ao seguinte pseudocódigo (
random(a,b)
gera números entrea
eb
inclusive):fonte
Ruby, 119 bytes
13 bytes para capitalizar ...
Uso:
Resultado:
fonte
C, 219 caracteres
Parece funcionar, ainda sou novo nisso.
fonte
rand()%(n-1-i)<2
vez derand()%(n-1)<(i+2)
obter uma distribuição uniforme, a menos que gere esse número aleatório apenas uma vez e salve-o em algum lugar.🙋
que usa mais de um byte.R, 166 bytes
Leva a entrada de STDIN e sai para STDOUT.
Explicação
Alguns testes
fonte
K5, 131 bytes
Isso NÃO funcionará no Kona ou no kdb +; você precisa usar um intérprete K5 como oK .
Demonstração ao vivo. (Tente definir
5
no final um número diferente para tentar entradas diferentes.)fonte
Rubi,
316 238216 caracteresCombinações de números ímpares terminam em
h
ouy
.Obrigado a @blutorange por um dicionário completo de dicas de golfe em rubi.
Uau, reduzi meu código em 100 caracteres.
fonte
j
foi um erro de digitação.for i in ?a..?z;...;end
podem ser substituídos por(?a..?z).map{...}
; Othen
depoisif
é opcional.v.include?(i)||c.push(i)
é a abreviação deunless v.include?(i);c.push(i)
. Usec<<i
parac.push(i)
.c.map{}
é mais curto quec.each{}
.i%2==1?1:2
é a abreviação deif i%2==1;1;else;2;end
. Oprint "Enter..."
não é necessário no codegolf; )Perl 5 , 112 bytes
Experimente online!
fonte