Desafio
Tomamos três inteiros positivos a
, b
e c
como entrada. Usando esses números inteiros, primeiro crie uma sequência no intervalo [0, c]
(inclusive nas duas extremidades), nas etapas de b
. Por exemplo, para a=4, b=2, c=100
, a sequência seria [0,2,4,...,96,98,100]
.
Para cada número nesta sequência que é divisível por a
, substitua-o pela próxima letra do alfabeto em minúsculas, começando com a letra 'a' e retornando a 'a' depois de chegar a 'z'.
Exemplo:
Entrada: a=4, b=2, c=100
Saída:a2b6c10d14e18f22g26h30i34j38k42l46m50n54o58p62q66r70s74t78u82v86w90x94y98z
Regras do desafio:
- Você pode assumir que
a
,b
ec
são inteiros positivos somente, ondeb ≤ a ≤ c
. - Você pode assumir que
a
é um múltiplo deb
. - Você pode assumir que
c
é divisível porb
. - A saída preferida é uma única string concatenada como acima, mas uma lista / matriz também é aceitável.
Casos de teste:
Input: a=4, b=2, c=100
Output:
a2b6c10d14e18f22g26h30i34j38k42l46m50n54o58p62q66r70s74t78u82v86w90x94y98z
Input: a=9, b=3, c=174
Output:
a36b1215c2124d3033e3942f4851g5760h6669i7578j8487k9396l102105m111114n120123o129132p138141q147150r156159s165168t174
Input: a=10, b=2, c=50
Output:
a2468b12141618c22242628d32343638e42444648f
Input: a=25, b=1, c=25
Output:
a123456789101112131415161718192021222324b
Input: a=6, b=6, c=48
Output:
abcdefghi
Input: a=6, b=3, c=48
Output: a3b9c15d21e27f33g39h45i
Input: a=2, b=1, c=100
Output: a1b3c5d7e9f11g13h15i17j19k21l23m25n27o29p31q33r35s37t39u41v43w45x47y49z51a53b55c57d59e61f63g65h67i69j71k73l75m77n79o81p83q85r87s89t91u93v95w97x99y
Eu realmente gostaria de ver uma resposta em PHP , mas esse desafio está aberto a qualquer idioma. Como é um codegolf , a resposta deve ser a mais curta possível. As regras padrão se aplicam a funções / programas e as brechas padrão são proibidas .
[codegolf]
é a mais comum que eu recomendaria. Também mencionado por JoKing, tornando-o específico do idioma não é recomendado. É melhor abri-lo para todos os idiomas. Quanto ao desafio em si, especifique um pouco mais e adicione mais alguns casos de teste. Com base no exemplo, posso ver que o intervalo é[0,c]
, mas isso deve ficar claro sem observar o exemplo.'z'
para'a'
. Você poderia incluir um que sim?Respostas:
PHP , 67 bytes
Primeiro de tudo, obrigado por postar um desafio tão legal! Eu realmente gostei de resolvê-lo :) Agora, aqui está a minha solução de 67 bytes:
Para executá-lo:
Ou Experimente online!
Aqui está a mesma solução não-destruída e com comentários explicativos:
Eu fiz uma solução de 60 bytes, mas ela não envolve :(
Experimente online!
fonte
Japonês , 15 bytes
Teste online!
Explicação
fonte
c,a,b
.R ,
65bytes 63Experimente online!
2 bytes salvos graças ao JayCe!
Retorna uma lista de cadeias, pois R coagirá números a cadeias. Para imprimir, basta substituir o final
z
porcat(z,sep="")
.fonte
l=
não é necessário. TIOClojure,
847977 bytesDando Lisp um pouco de amor
Experimente online!
(-7 bytes graças a @NikoNyrh!)
fonte
#(...)
e usarfn
para expressar a interna. Enquanto você está nisso, você pode substituirmap
porfor
construir e salvar mais 4 bytes.%1
pode ser substituído por%
;)Java 10,
9383 bytesExperimente online aqui . Agradecimentos a Scrooble por jogar 10 bytes.
Ungolfed:
fonte
Perl 6 ,
6050 bytesTeste-o
Teste-o
fonte
->\a,\b,\c
: use just$^a
etc. Echr 97+$++%26
é um pouco menor que("a".."z")[$++%26]
. Por fim, você pode omitir a concatenação porque o desafio não exige isso. Isso economizaria 10 bytes no total, deixando 50JavaScript (Node.js) , 62 bytes
Experimente online!
fonte
05AB1E ,
1715 bytes-2 bytes graças a @MagicOctopusUrn .
Recebe a entrada na ordem
bca
.Experimente online ou verifique todos os casos de teste .
Explicação:
fonte
/ݹ*vyD³ÖiA¾è¼}?
é 16, apenas duplica o emy
vez de usarë
, o que?
ignorará se for empurrado um caractere de alfabeto. Na verdade,/ݹ*εD³ÖiA¾è¼}?
funciona para 15 pares, porque estamos sobrescrevendo a matriz de saída, então você pode amarrar o vencedor atual> :).ë
.C (gcc) ,
7472 bytesExperimente online!
fonte
Python 2,
8070 bytesRetorna uma lista, pois o OP disse que é aceitável.
Abordagem muito diferente da outra resposta do Python 2 .
Experimente online!
fonte
CJam , 23 bytes
Experimente online!
Ler a entrada como
b a c
e soltar o@
seria 22 bytes (não tenho certeza se isso é válido).fonte
Python 2 ,
6563 bytesRetorna uma lista, pois o OP disse que é aceitável.
Experimente online!
Versões anteriores usadas durante o processo criativo (trabalhando para trás):
84 bytes
Retorna uma expressão de gerador.
111 bytes
Usa um gerador para o alfabeto e retorna uma lista.
fonte
next
. Agradável.PHP , 79 bytes
Nota: Não é muito bom em PHP
Experimente online!
PHP , 84 bytes
Este é o mesmo código acima apenas no formato de função (já que você queria uma resposta PHP, talvez isso seja melhor para você)
Experimente online!
fonte
Excel VBA, 76 bytes
Toma entrada,
a
,b
, ec
a partir de[A1]
,[B1]
e[C1]
, respectivamente, em seguida, emite para a janela imediato do VBE.fonte
Python 2 , 83 bytes
Experimente online!
fonte
Kotlin,
8079 bytes-1 graças a OOBalance !
Experimente online!
Minha primeira vez jogando golfe (ou fazendo qualquer outra coisa) em Kotlin! Provavelmente pode ser melhorado.
Muito parecido com esta resposta Java , percebi depois de escrevê-la. Economize
return
e perca no ternário por quase a mesma pontuação.fonte
else
.Python3 -
111,101,98, 94 bytesProvavelmente não é o mais curto, mas há espaço para melhorias
Experimente online!
fonte
next(q)if x%a==0else x for x in[y*b
Carvão , 22 bytes
Experimente online! Link é a versão detalhada do código. Explicação:
fonte
Haskell ,
7169 bytesExperimente online!
71 bytes anteriores:
Experimente online!
Explicação:
fonte
CJam ,
6463 bytes ( ouch )Experimente online!
Explicação
Definitivamente, isso poderia ser melhorado, então fique à vontade para participar!
Alterar
Helen cortou um byte!
Antigo:
97:Y;riri:Bri\/1+,[{B*}*]{X\_@\%0={Yc\Y):Y'{i={97:Y;}&}{X\}?}fX;
Novo:
97:Y;riri:Bri\/),[{B*}*]{X\_@\%0={Yc\Y):Y'{i={97:Y;}&}{X\}?}fX;
Ao mudar
1+
para)
, podemos cortar um byte.fonte
Gelatina , 16 bytes
Um programa completo recebendo argumentos
c b a
que imprimem o resultado.Experimente online!
fonte
Clojure, 117 bytes
Que imperativo. : /
fonte
C (gcc / clang),
8068 bytesPorta da minha resposta Java . Experimente online aqui .
fonte
printf(L"搥挥"+!(i%a),i%a?i:i/a%26+97)
vez dei%a?printf("%d",i):putchar(i/a%26+97)
Gelatina , 14 bytes
Experimente online!
fonte
Python 2 e 3 -
123128 bytesVocê precisará colocar
f=
na frente dolambda
e ligar com ele,f(a,b,c)
mas tenho certeza de que isso é permitido.fonte
Ruby ,
59 5855 bytesExperimente online!
Retorna uma lista
fonte