Votre tâche consiste à écrire un programme qui, à partir d’un nombre et d’une chaîne, divise la chaîne en morceaux de cette taille et les inverse.
Règles
Votre programme recevra un entier positif n
, ainsi qu'une chaîne s
d'au moins une longueur composée uniquement d'ASCII imprimable (sans les espaces). La chaîne doit ensuite être divisée en morceaux de longueur n
. Si la longueur de la chaîne n'est divisible par n
aucun reste à la fin, elle doit être considérée comme son propre morceau. Ensuite, inversez l’ordre des morceaux et remettez-les ensemble.
Cas de test
n s Output
2 abcdefgh ghefcdab
3 foobarbaz bazbarfoo
3 abcdefgh ghdefabc
2 a a
1 abcdefgh hgfedcba
2 aaaaaa aaaaaa
2 baaaab abaaba
50 abcdefgh abcdefgh
6 abcdefghi ghiabcdef
C'est du code-golf , vous devriez donc viser le moins d'octets possible.
Réponses:
Gelée , 2 octets
Un programme complet qui imprime le résultat.
Essayez-le en ligne!
Comment?
la source
Python 3 , 35 octets
Essayez-le en ligne!
la source
and
mot clé ici? @Dennis05AB1E ,
5 43 octets-1 grâce à Dennis
-1 grâce à carusocomputing
Essayez-le en ligne!
la source
¹
n'est pas nécessaire.JavaScript (ES6), 37 octets
Prend les entrées en currying: nombre d’abord, puis chaîne, comme
f(2)("abcdefgh")
.Afficher l'extrait de code
la source
Perl 6 ,
2820 octetsL'essayer
L'essayer
Étendu:
la source
Bash + coreutils, 22
Essayez-le en ligne .
la source
Haskell , 32 octets
Essayez-le en ligne!
la source
PHP, 53 octets
la source
Röda , 36 octets
Essayez-le en ligne!
C'est une fonction qui prend un argument. Les caractères de la chaîne doivent être dans le flux.
try
est utilisé pour supprimer les erreurs dans le cas où lahead
fonction ne peut pas liren-1
valeurs.Explication:
Pas aussi obscurci que d'habitude. Je pense que c'est assez beau. :)
la source
[[try head n]]
travaille pas au lieu de[[_]..[try head n-1]]
?_
boucle l'expression.[[try head n]]
prendrait n valeurs une fois , mais[[_]..[try head n-1]]
prend n valeurs tant qu'il reste des valeurs.CJam , 5 octets
L'entrée est un nombre et une chaîne entre guillemets, séparés par des espaces.
Essayez-le en ligne!Ou vérifiez tous les cas de test .
Explication
la source
Lot, 74 octets
Plutôt ennuyeux, cela finit par être récursif plutôt que final.
la source
V ,
13 à10 octetsEssayez-le en ligne!
En action:
se transforme en
qui devient
avant que toutes les nouvelles lignes soient supprimées
la source
brainfuck , 78 octets
Le premier octet de l'entrée est la taille du bloc, donnée par la valeur d'octet. Le reste des octets est considéré comme la chaîne.
Essayez-le en ligne!
Développé et commenté
la source
PowerShell,
56 à49 octets-7 octets grâce à mazzy
Essayez-le en ligne!
la source
.ps1
et essayez d'appeler ce script à la place de votre code. Si cela fonctionne, le test a réussi.Mathematica, 46 octets
Fonction anonyme. Prend un nombre et une chaîne en entrée et retourne une chaîne en sortie. Pas grand chose à voir ici.
la source
Javascript -
544746 octetsRefait:
Utilisé comme
Merci à @ETHproductions pour quelques quick Reg RegEx Merci à @Shaggy pour un octet supplémentaire dans l'eval!
Original:
la source
eval('/.{1,'+n+'}/g')
s=>n=> ...
eval("/.{1,${n}}/g")
, en utilisant des guillemets au lieu de guillemets.Pyth, 5 octets
Essayez-le en ligne .
Explication
la source
Retina , 38 octets
1 octet enregistré grâce à @LeakyNun
(Notez l'espace sur la deuxième ligne et l'espace de fin)
Ce programme prend en entrée unaire sur la première ligne et la chaîne sur la seconde.
Essayez-le en ligne!
Suite de tests! (légèrement modifié)
Explication
La première étape consiste à prévoir un espace (qui deviendra important par la suite).
Maintenant nous inversons. Ceci utilise les groupes d'équilibrage .NET. Il est important de noter que les groupes ici agissent comme des piles, de sorte que chaque match est essentiellement poussé sur la pile. Ici, nous capturons chaque chiffre du nombre unaire dans le groupe 2. Maintenant, chaque fois qu'un caractère de la chaîne est trouvé, une correspondance est extraite du groupe 2. Cela garantit que le nombre de caractères ne dépasse pas celui du nombre unaire.
Et enfin, supprimez le nombre unaire et la nouvelle ligne.
la source
\d
par.
pour sauvegarder un octet.^
est également redondante.\d
. Et merci d'avoir joué au golf :)Java,
147138 octetsString r(String s,int n){String r="";int l=s.length();for(int i=l/n*n;i>=0;i-=n)if(!(i>=l))r+=(i+n)>=l?s.substring(i):s.substring(i,i+n);return r;}
9 octets sauvés grâce à Kevin Cruijssen!
Sous forme développée:
C’est en fait mon premier essai de codegolf, alors tout commentaire est le bienvenu!
la source
int l=s.length();for(int i=l/n*n;
faireint l=s.length(),i=l/n*n;for(;
pour jouer au golf: peut-être que vous n’avez qu’uneint
fois. Etif(!(i>=l))
peut êtreif(l<i)
. Etr+=(i+n)>=l?
peut être sans la parenthèse:r+=i+n>=l?
. De plus, si vous ne l'avez pas encore vu, je vous conseillerais de consulter Conseils pour le golf en Java pour obtenir des conseils de golf très intéressants. :) Encore une fois, bienvenue.Perl 5 , 25 octets
Utilise les
-lnM5.010
drapeaux.Essayez-le en ligne!
Shoutout to Grinnz pour m'avoir parlé de
=~ m/.{1,$n}/g
-M5.010
active l'utilisation de lasay
fonction qui, pour nous, est une impression avec un nom plus court.-n
met la première ligne d'entrée dans$_
, et-l
écrase la nouvelle ligne.Nous obtenons ensuite la deuxième ligne d’entrée en utilisant
<>
, et nous l’appliquons à la regex.{1,$_}
: n’importe quel caractère, compris entre 1 et $ _ (la première entrée) fois. Comme cela est gourmand par défaut, il essaie de toujours faire correspondre les caractères $ _. Le1,
est nécessaire pour le reste de morceau possible à la fin.Le
/g
modificateur nous donne chaque correspondance de cette expression rationnelle dans la chaîne d'entrée sous forme de liste, qui est ensuite inversée et imprimée. En Perl, passer une liste à lasay
joindre sans aucun délimiteur par défaut.la source
Dyalog APL Extended ,
16 à15 octetsEssayez-le en ligne!
la source
f←
,/
→∊
∊∘⌽⊢⊂⍨≢⍤⊢⍴1↑⍨⊣
Python, 62 octets
Essayez-le en ligne!
la source
f=lambda n,s:s and f(n,s[n:])+s[:n]
Empilés , 9 octets
Essayez-le en ligne!
#<
morceaux,rev
inverse et se''#`
joint par chaîne vide. Assez facile.la source
QBIC , 24 octets
Cela fait un excellent usage de la nouvelle fonction de sous-chaîne que j'ai récemment ajoutée à QBIC:
la source
Pyth, 4 octets
Takes input as
"s",n
: Try it for yourself!la source
Convex, 2 bytes
Try it online!
la source
C, 69 bytes
Result is printed out to the standard output.
la source
Scala,
5755 bytesThanks Jacob! Try it here.
Note: By using the symbol form of foldLeft ("/:"), I was able to take off a couple more bytes.
la source
mkString
instead ofreduceLeft
, and shave off 7 bytes:(n:Int,s:String)=>s.grouped(n).toSeq.reverse.mkString("")
Ohm, 5 bytes
Try it online!
Explanation
la source
R,
6960 bytesTry it online!
Thanks to Kirill L. for the suggestion to remove
seq
.la source
:
and some manipulation lets us get rid of the trailing-1
.