Desafio
Para cada caractere da sequência, exceto o último, faça o seguinte:
Produz o caractere atual.
Seguido pela saída aleatória da lista a seguir um número aleatório de vezes entre 1 - 5 (inclusive):
- O caractere atual
- O próximo caractere da sequência
- A versão do switchcase do personagem em que você está atualmente
- A versão do switchcase do próximo caractere da sequência.
Casos de teste
String
-> SSSTSStrTrIiinIIngn
, . , . , . Hello world!
-> ,,, .. , ,, .... , , .. .. . HHH HHEeelLlLllooO wwOworOOrrrRllDd!!D
Programming Puzzles and Code Golf
-> PrPPrRrOooooogggRgGraAraaaMMMmmmimMIiininGGgG PPPPuZzZZzZzzZzllLLEEeEsEsssS a aANnNddD C COCoooOOdeDe E GGGoOllFFf
Notas
- Você só precisa aplicar a versão do switchcase de um caractere se ele fizer parte do alfabeto (AZ e az).
- Sua função aleatória não precisa ser uniforme, mas ainda precisa ter a chance de retornar qualquer elemento da lista fornecida.
- Você tem permissão para usar qualquer formato de E / S padrão.
- Você pode assumir que o comprimento da entrada é maior ou igual a dois.
- Você pode assumir que a entrada consiste apenas em caracteres ASCII.
- O título não é um caso de teste (não é intencional se for um caso de teste válido).
- Switchcase significa transformar o caractere em minúsculas, se estiver em maiúsculas, e em maiúsculas, se estiver em minúsculas.
String
produzSSSTSStrTrIiinIIngn
[S]SSTSS [t]rT, [r]I, [i]inII, [n]gn
onde os caracteres entre os blocos são os primeiros marcadores (" Output the current character ") e os outros são de 1 a 5 vezes aleatoriamente, uma das quatro opções para isso personagem. Mas eu concordo, algumas explicações mais explícitas seriam apropriadas. Além do caso de teste, não estava particularmente claro que precisamos escolher uma escolha aleatória de 1 a 5 vezes. Em vez de escolher uma escolha aleatória repetida 1-5 vezes (como a resposta do Gaia atualmente faz).Respostas:
Gaia , 25 bytes
Experimente online!
Obrigado a Kevin Cruijssen por apontar 2 bugs!
Observe que
4ṛ
é porqueṛ
é implementado para um número inteiroz
como o de pythonrandom.randint(1,z+1)
, que retorna um número inteiroN
como esse1<=N<=z+1
.fonte
SSSTSStrTrIiinIIngn
([SSSTSS, trT, rI, iinII, ngn]
) parece refletir isso, e atualmente não é possível no seu programa (eu acho).5ṛ
pode resultar em6
algum motivo Experimente-o online ? PS: Não existe um número inteiro para a lista à distância ou loop for em Gaia?for
construção de tipo, mas tenho certeza que é issoₓ
que nem sequer está documentado na página da wiki.APL (dzaima / APL) , 23 bytes
Função de prefixo tácito anônimo.
Experimente online!
2(
…)/
Aplique a seguinte função tácita infix entre cada par de caracteres:-
a caixa⍤
de distribuição da,
concatenação do par,,
preceder a concatenação do par àquele{
…}⊇
Escolha os seguintes elementos a partir disso:?5
número aleatório no intervalo de 1 a 54⍴⍨
que muitos quatros?
índices aleatórios para aqueles∊
ε nlist (achatar)fonte
Perl 6 , 60 bytes
Experimente online!
A parte minúscula / maiúscula é meio irritante.
fonte
$/
e$0
juntos e usá.lc
-lo nessa sequência e, em seguida, criar uma cópia dessa sequência e usar.uc
e concaturar os dois juntos? Não tenho certeza se isso é mesmo possível, ou mais curto do que o atual$/.lc,$/.uc,$0.lc,$0.uc
, mas isso significaria que você usaria$/
,$0
,.lc
, e.uc
uma vez cada.(.lc~.uc for $0~$/).comb
é mais longo. O Perl 6 realmente quer distinguir strings e listas, então"abc"[0] eq "abc"
(ele finge ser uma lista de item único).{.lc,|.uc}($/,|$0)
por -5 bytes, e apenas use a lista de correspondências{.lc,|.uc}(@$/)
por -8 bytes. tio.run/…Gelatina , 12 bytes
Experimente online!
fonte
Bash , 121 bytes
-20 bytes graças a Nahuel
-9 bytes graças ao roblogic
Experimente online!
Resposta original
Bater , 150 bytes
Fiz muito pouco esforço com o golfe e tentei melhorar minha festa, então qualquer comentário é bem-vindo.
Experimente online!
O código é um loop direto através de caracteres, configurando o caractere atual
c
e o próximon
, criando uma matriz das 4 possibilidades, repetindo uma delas para que haja exatamente 5. Em seguida, embaralhámos essa matriz e, em seguida, escolhe n elementos, onde n é aleatório entre si. 1 e 5.fonte
printf %s "$c"
do
edone
pode ser substituído por não documentado{
e}
Python 2 , 107 bytes
Experimente online!
fonte
05AB1E ,
1817 bytesInspirado na resposta Gaia de @Giuseppe .
-1 byte graças a @Shaggy .
Experimente on-line 10 vezes ou verifique todos os casos de teste 10 vezes .
Explicação:
fonte
INè
, você poderia salvar alguma coisa pressionando o primeiro caractere dey
?¨vNUy5LΩFy¹X>è«D.š«Ω?
t
,T
ous
para a entrada"String"
em seu programa, enquanto deve começar sempre com oS
.Carvão , 27 bytes
Experimente online! Link é a versão detalhada do código. Explicação:
Faça um loop sobre todos os índices da sequência de entrada.
Exceto pelo primeiro índice, faça um loop sobre um número aleatório de 1 a 5, inclusive ...
... extrai os caracteres anteriores e seguintes da string, pega as versões em maiúsculas e minúsculas e escolhe um caractere aleatório dos quatro.
Imprima o caractere no índice atual.
fonte
perl 5 (
-p
), 77 bytesTIO
fonte
$&
vez de$1
echop
+ em-l
vez des/.$//
Japonês
-P
, 14 bytesTente
fonte
Python 3 , 167 bytes
Experimente online!
fonte
Gelatina , 14 bytes
Experimente online!
Explicação
fonte
C (GCC)
175162 bytes-12 bytes do LambdaBeta
Experimente online
fonte
0
da primeira linha.S
como parâmetro e adicionando suas variáveis à lista de argumentos: Experimente online!0
que fez com que não valesse a pena ter#define
maisPowerShell ,
1541051039587 bytes-67 bytes graças ao mazzy que não pode ser parado
Experimente online!
Não é um método fantástico, mas funciona.Agora está muito bom. Recebe entrada via splattingfonte
Scala 2.12.8, 214 bytes
Versão Golfed:
Jogou golfe com novas linhas e recuos:
Ungolfed:
fonte
a :: b :: Nil
ema::b::Nil
? Mesmo paraa :+
,a:+()
oua.:+()
pode funcionara::b::Nil
causa um erro de compilação.+:
é um método definido na lista, para economizar espaço ao se livrar das parênteses externas?Perl 5
-n
, 61 bytesExperimente online!
fonte
C # (Compilador interativo do Visual C #) ,
236213209 bytesExperimente online!
fonte
char b=a[0]
->var b=a[0]
, espaço extra na declaração dod
loop forConsulta T-SQL, 286 bytes
Experimente online infelizmente, a versão online sempre mostra o mesmo resultado para o mesmo varchar, ao contrário do MS SQL Server Management Studio
fonte
C # (compilador interativo do Visual C #) , 156 bytes
Experimente online!
fonte
Japonês
-P
,4316 bytesEncurtado por muito agora!
Tente
fonte
ä
a descrição diz que ele fornece três argumentos, sendo o últimox+y
. Mas como você pode ver aqui , ele retorna apenas 1. Isso é um bug?C (gcc) ,
110109 bytesExperimente online!
-1 graças a ceilingcat
O número de caracteres impressos (por caractere de entrada) não é uniformemente aleatório:
fonte
Zsh,
113107 bytesCom muita ajuda de
man zshexpn
eman zshparam
. Experimente Online!fonte