Défi
Nous prenons trois entiers positifs a
, b
et c
en entrée. À l'aide de ces nombres entiers, créez d'abord une séquence dans la plage [0, c]
(incluse aux deux extrémités), par étapes de b
. Par exemple, pour a=4, b=2, c=100
, la séquence serait [0,2,4,...,96,98,100]
.
Pour chaque nombre de cette séquence divisible par a
, remplacez-le par la lettre suivante de l'alphabet minuscule, en commençant par la lettre «a» et en revenant à «a» après avoir atteint «z».
Exemple:
Entrée: a=4, b=2, c=100
Sortie:a2b6c10d14e18f22g26h30i34j38k42l46m50n54o58p62q66r70s74t78u82v86w90x94y98z
Règles du défi:
- Vous pouvez supposer que
a
,b
etc
sont uniquement des entiers positifs, oùb ≤ a ≤ c
. - Vous pouvez supposer qu'il
a
s'agit d'un multiple deb
. - Vous pouvez supposer qu'il
c
est divisible parb
. - La sortie préférée est une seule chaîne concaténée comme ci-dessus, mais une liste / tableau est également acceptable.
Cas de test:
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
J'aimerais vraiment voir une réponse en PHP , mais ce défi est ouvert à tous les langages. Il s'agit de codegolf , donc la réponse doit être aussi courte que possible. Les règles standard s'appliquent aux fonctions / programmes et les failles par défaut sont interdites .
[codegolf]
est la plus courante que je recommanderais. Également mentionné par JoKing, le rendre spécifique au langage n'est pas recommandé. Il est préférable de l'ouvrir à toutes les langues à la place. En ce qui concerne le défi lui-même, veuillez en préciser un peu plus et ajouter quelques cas de test supplémentaires. Sur la base de l'exemple, je peux voir que la plage est[0,c]
, mais cela devrait être clair sans regarder l'exemple.'z'
à'a'
. Pourriez-vous s'il vous plaît en inclure un qui le fait?Réponses:
PHP , 67 octets
Tout d'abord, merci d'avoir publié un défi aussi cool! J'ai vraiment apprécié de le résoudre :) Maintenant, voici ma solution de 67 octets:
Pour l'exécuter:
Ou essayez-le en ligne!
Voici la même solution non golfée et avec des commentaires d'explication:
J'ai fait une solution de 60 octets, mais elle ne se termine pas :(
Essayez-le en ligne!
la source
Japt , 15 octets
Testez-le en ligne!
Explication
la source
c,a,b
.R ,
6563 octetsEssayez-le en ligne!
2 octets économisés grâce à JayCe!
Renvoie une liste de chaînes, car R contraindra les nombres aux chaînes. Pour imprimer, remplacez simplement la fin
z
parcat(z,sep="")
.la source
l=
n'est pas requis. TIOClojure,
847977 octetsDonner un peu d'amour à Lisp
Essayez-le en ligne!
(-7 octets grâce à @NikoNyrh!)
la source
#(...)
et utilisezfn
pour exprimer la fonction interne. Pendant que vous y êtes, vous pouvez le remplacermap
par lafor
construction et économiser encore 4 octets.%1
peut être remplacé par%
;)Java 10,
9383 octetsEssayez-le en ligne ici . Merci à Scrooble pour avoir joué au golf 10 octets.
Non golfé:
la source
Perl 6 ,
6050 octetsEssaye-le
Essaye-le
la source
->\a,\b,\c
: utilisez simplement$^a
etc. Etchr 97+$++%26
est un peu plus court que("a".."z")[$++%26]
. Enfin, vous pouvez omettre la concaténation car le défi ne l'exige pas. Cela économiserait 10 octets au total, ce qui en laisserait 50JavaScript (Node.js) , 62 octets
Essayez-le en ligne!
la source
05AB1E ,
1715 octets-2 octets grâce à @MagicOctopusUrn .
Prend l'entrée dans l'ordre
bca
.Essayez-le en ligne ou vérifiez tous les cas de test .
Explication:
la source
/ݹ*vyD³ÖiA¾è¼}?
est 16, reproduit juste ley
au lieu d'utiliserë
, qui?
ignorera s'il pousse un caractère alphabétique. En fait,/ݹ*εD³ÖiA¾è¼}?
fonctionne même pour 15, car nous remplaçons le tableau de sortie, vous pouvez alors lier le gagnant actuel> :).ë
.C (gcc) ,
7472 octetsEssayez-le en ligne!
la source
Python 2,
8070 octetsRenvoie une liste, puisque l'OP a dit que c'était acceptable.
Approche très différente de l' autre réponse Python 2 .
Essayez-le en ligne!
la source
CJam , 23 octets
Essayez-le en ligne!
La lecture de l'entrée en tant que
b a c
et la suppression du@
serait de 22 octets (je ne sais pas si c'est valide).la source
Python 2 ,
6563 octetsRenvoie une liste, puisque l'OP a dit que c'était acceptable.
Essayez-le en ligne!
Versions précédentes utilisées pendant le processus de création (travail en arrière):
84 octets
Renvoie une expression de générateur.
111 octets
Utilise un générateur pour l'alphabet et renvoie une liste.
la source
next
. Agréable.PHP , 79 octets
Remarque: Pas trop bon en PHP
Essayez-le en ligne!
PHP , 84 octets
C'est juste le même code ci-dessus juste au format de fonction (puisque vous vouliez une réponse PHP, c'est peut-être mieux pour vous)
Essayez-le en ligne!
la source
Excel VBA, 76 octets
Prend entrée
a
,b
etc
à partir de[A1]
,[B1]
et[C1]
respectivement délivre alors à la fenêtre immédiate VBE.la source
Python 2 , 83 octets
Essayez-le en ligne!
la source
Kotlin,
8079 octets-1 grâce à OOBalance !
Essayez-le en ligne!
Ma première fois jouer au golf (ou faire autre chose) à Kotlin! Peut probablement être amélioré.
Très similaire à cette réponse Java , j'ai réalisé après l'avoir écrite. Économisez sur
return
et perdez sur le ternaire pour presque le même score.la source
else
.Python3 -
111,101,98, 94 octetsProbablement pas le plus court, mais il y a place à amélioration
Essayez-le en ligne!
la source
next(q)if x%a==0else x for x in[y*b
Fusain , 22 octets
Essayez-le en ligne! Le lien est vers la version détaillée du code. Explication:
la source
Haskell ,
7169 octetsEssayez-le en ligne!
71 octets précédents:
Essayez-le en ligne!
Explication:
la source
CJam ,
6463 octets ( aïe )Essayez-le en ligne!
Explication
Cela pourrait certainement être amélioré, alors n'hésitez pas à nous rejoindre!
Changements
Helen a coupé un octet!
Ancien:
97:Y;riri:Bri\/1+,[{B*}*]{X\_@\%0={Yc\Y):Y'{i={97:Y;}&}{X\}?}fX;
Nouveau:
97:Y;riri:Bri\/),[{B*}*]{X\_@\%0={Yc\Y):Y'{i={97:Y;}&}{X\}?}fX;
En changeant
1+
en,)
nous pouvons couper un octet.la source
Gelée , 16 octets
Un programme complet prenant des arguments
c b a
qui imprime le résultat.Essayez-le en ligne!
la source
Clojure, 117 octets
Un tel impératif. : /
la source
C (gcc / clang),
8068 octetsPort de ma réponse Java . Essayez-le en ligne ici .
la source
printf(L"搥挥"+!(i%a),i%a?i:i/a%26+97)
place dei%a?printf("%d",i):putchar(i/a%26+97)
Gelée , 14 octets
Essayez-le en ligne!
la source
Python 2 et 3 -
123128 octetsVous devrez vous mettre
f=
devant lelambda
, puis l'appeler avec,f(a,b,c)
mais je suis presque sûr que c'est autorisé.la source
Rubis ,
59 5855 octetsEssayez-le en ligne!
Renvoie une liste
la source