J'ai pensé à une nouvelle façon de générer mes mots de passe, et même si ce n'est probablement pas très intelligent à long terme, cela pourrait quand même faire un code-golf amusant.
En prenant une chaîne de mots, le mot de passe est généré ainsi:
- Choisissez le nième caractère du nième mot
- Si n est plus grand que le mot, continuez à compter à rebours
Exemple:
This is a fun task!
T s a u !
T est le premier caractère
s est le deuxième
a est le premier, mais dans les deux sens c'est aussi le troisième
u est le deuxième mais à cause du comptage à rebours c'est aussi le quatrième
'!' est le cinquième personnage de 'tâche!' et sera donc inclus dans le mot de passe final,Tsau!
Règles
- L'entrée sera une chaîne
- Séparez la chaîne sur les espaces, tous les autres caractères doivent être inclus
- Les lettres majuscules doivent rester en majuscules, idem pour les minuscules
- Vous faites n étapes dans chaque mot, où n est le nombre de mots qui ont précédé plus un
- Si n est plus grand que le mot, vous devez reculer dans le mot, si vous appuyez sur le début, vous avancez de nouveau jusqu'à ce que vous ayez fait un pas n fois
- Le premier et le dernier caractère ne sont intensifiés qu'une seule fois, donc 'fun' à la septième position comme exemple va 'funufun' et se termine sur n, pas 'funnuff' et se termine sur f
- La sortie doit être une chaîne
Exemples:
Input Output
Once Upon A Time OpAe
There was a man Taaa
Who made a task Waak
That was neat! Taa
This is a long string to display how the generator is supposed to work Tsagnoyotoipto
Le code le plus court en octets gagne!
to
est le 12ème mot (indexé 0) dans la longue chaîne, et donc la lettre de code devrait êtret
, nono
.Tsau!
est chinois pourFuck!
Réponses:
Python 2 , 72 octets
Essayez-le en ligne!
la source
05AB1E , 11 octets
Essayez-le en ligne!
Explication
la source
Gelée , 12 octets
Essayez-le en ligne!
la source
Java 10,
148117114 114110 octets-31 octets grâce à @SamYonnou en créant un portage de la réponse JavaScript de @ user71546 .
-4 octets grâce à @SamYonnou à nouveau, optimisant l'algorithme pour Java.
Essayez-le en ligne.
Explication:
la source
s->{int i=-1,j;for(var a:s.split(" ")){System.out.print(a.charAt(++i>(j=a.length()-1)?j>0?i/j%2==0?i%j:j-i%j:0:i));}}
==0
pour<1
.++i>(j=a.length()-1)
condition puisque les mathématiques fonctionnent de la même manière quel que soit le résultat de cette condition:s->{int i=-1,j;for(var a:s.split(" "))System.out.print(a.charAt(0<(j=a.length()+i-++i)?i/j%2<1?i%j:j-i%j:0));}
0<(j=a.length()+i-++i)?
en(j=a.length()-1)>0*i++?
afin que l'explication soit un peu plus facile à taper (aucun octet enregistré ne le fait cependant).Fusain , 16 octets
Essayez-le en ligne! Le lien est vers la version détaillée du code. Explication:
Je n'ai pas souvent l'occasion d'utiliser le dernier paramètre de Slice.
la source
JavaScript (Node.js) ,
78706968 octets-1 octet @Arnauld
Essayez-le en ligne!
Explication
la source
Rouge , 135 octets
Essayez-le en ligne!
Lisible:
la source
Perl 5 , 76 octets
Essayez-le en ligne!
la source
k ,
313028 octetsEssayez-le en ligne!
la source
|-1_
->1_|
Pyth , 12 octets
Essayez-le en ligne
la source
Japt``
-P
11 octetsEssayez-le
Essayez-le
Explications
la source
C (gcc) , 148 octets (version chaîne), 114 octets (version imprimée)
Si je dois retourner une chaîne (version longue):
Essayez-le en ligne!
Sinon, j'imprime et je ne m'inquiète pas d'un tampon (version courte):
Essayez-le en ligne!
la source
-(j>1)-1
peut être remplacé par+~(j>1)
1 octet de moins je pense.putchar( t[ j=strlen(t)-1, k = i++ % (j ? j*2 : 1), k<j ? k : j+j-k ]);
Essayez-le en ligne!*u++
parc[i]
et enlever u.AWK, 79 octets
Surtout parce que je suis curieux de voir de meilleures solutions awk ou bash!
Essayez-le en ligne!
la source
C # (.NET Core) , 111 octets
Essayez-le en ligne!
la source
Haskell,
656261 octetsEssayez-le en ligne!
Il nécessite la dernière version
Prelude
dont dispose la<>
fonction.Edit: -3 octets grâce à @ user28667, -1 octet grâce à @B. Mehta
la source
zipWith(\i w->(cycle$id<>reverse.drop 1.init$w)!!i)[0..].words
marche aussi.\i->(!!i).cycle.(id<>reverse.drop 1.init)
éliminer law
mention explicite (TIO)Stax , 9 octets
Exécuter et déboguer
Déballé, non golfé et commenté, il ressemble à ceci.
Exécutez celui-ci
la source
PHP , 77 octets
Essayez-le en ligne!
la source
foreach(...){$c=...;echo$c[...];}
pourforeach(...)echo($c=...)[...];
. Essayez-le en ligne: 87 octets.=
enregistrer deux octets:while(ord($w=$argv[++$i]))echo($w.=strrev(substr($w,1,-1)))[~-$i%strlen($w)];
essayez-le en lignePowershell
208186170 octetsNon golfé:
Testez les cas ci-dessous ou essayez-le en ligne
la source
""|%{
par$args|%{
, mais je pense que vous pouvez aussi leJ, 43 octets
non golfé
<;._1 ' '&,
diviser sur les espaces(, }.@}:)&.>
pour chaque mot, tuez le premier et le dernier orme et ajoutez-le au mot#@> | i.@#
prendre le reste de la longueur de chaque mot divisé en son index> {~"_1
prendre ce résultat et l'arracher à chaque mot.Essayez-le en ligne!
la source