Pour "décaler" sur plusieurs n
emplacements, procédez comme suit:
- Supprimer les derniers
n
chiffres - Ajoutez des
n
copies du premier chiffre au début du numéro
Par exemple, pour déplacer le nombre de 31415
trois, retirez les trois derniers chiffres pour obtenir 31
, puis ajoutez trois autres copies du premier chiffre,, 3
à la fin, en donnant 33331
.
Si le nombre est négatif, les chiffres doivent être pris à gauche à la place et le premier chiffre doit être "rempli" à partir de la droite. Par exemple, la chaîne 31415
décalée de -3 places donne 15555
.
Si le nombre est 0, aucune modification ne doit être effectuée.
Si le décalage est supérieur à la durée du programme, alors les chiffres qui ont été remplis peuvent commencer à être supprimés. Cela signifie que si le nombre donné est supérieur à la longueur de la chaîne, aucune autre modification ne sera apportée après que la chaîne entière deviendra un seul chiffre.
Le défi
Étant donné deux nombres, n
et s
, le retour a n
changé de s
place.
Cas de test
n, s -> result
7243, 1 -> 7724
452, -1 -> 522
12, 1 -> 11
153, 4 -> 111
Il s'agit de code-golf , donc la soumission valide la plus courte (mesurée en octets) l'emporte.
Réponses:
APL (Dyalog) , 32 octets
Fonction anonyme qui prend le crible comme argument de gauche et le nombre (comme chaîne) comme argument de droite.
Essayez-le en ligne!
{
fonction anonyme où ⍺ et ⍵ sont des arguments gauche et droit|⍺
la valeur absolue du décalagea←
stocker dans un⋄
puis⌽⍵
inverser le nombre⊃
choisir le premier (c'est-à-dire le dernier) chiffrea⍴
r Eshape à la longueur d' un⍵,
ajouter le numéro(
…),
Ajoutez ce qui suit:⊃⍵
le premier chiffrea⍴
r Eshape à la longueur d' un(
…)↓
Supprimez le nombre de caractères suivant:a-⍺
un moins le décalage(
…)↑
Prenez le nombre de caractères suivant:≢⍵
la longueur du numéro d'originela source
Python 2 , 50 octets
Essayez-le en ligne!
la source
Haskell, 69 octets
Prend le nombre sous forme de chaîne. Essayez-le en ligne!
Comment ça fonctionne:
la source
MATL , 12 octets
Les entrées sont les suivantes: nombre à décaler sous forme de chaîne; quantité de décalage en nombre.
Essayez-le en ligne! Ou vérifiez tous les cas de test .
Entrées Consisder
'452
et'-1'
.la source
J, 37 octets
C'était l'une de ces situations en J où un verbe explicite semblait être le bon (le seul?) Choix, mais j'aimerais savoir s'il y a une réécriture tacite de ceci:
Le verbe shift intégré de J vous permet de configurer le caractère "fill":
La logique pour déterminer s'il faut utiliser le premier ou le dernier caractère comme caractère de remplissage est simple
Essayez-le en ligne!
la source
J , 23 octets
L'entrée n et la sortie sont des chaînes contenant les nombres.
Essayez-le en ligne!
Explication
la source
Rétine , 61 octets
Essayez-le en ligne!
la source
05AB1E , 16 octets
Essayez-le en ligne!
Explication
la source
Python 2 , 87 octets
Essayez-le en ligne!
Prend le nombre comme une chaîne et le décalage comme un entier. Renvoie une chaîne.
J'ai essayé d'incorporer l'inversion à l'intérieur de la fonction plutôt que de faire un appel récursif, mais je n'arrivais pas à faire les choses correctement.
la source
Python 3 , 73 octets
Essayez-le en ligne!
la source
Haskell , 108 octets
Eh bien, cela a empiré ce que je pensais ..
Essayez-le en ligne!
Non golfé
la source
Clojure, 121 octets
Aïe, méchant pour faire face aux entrées négatives aussi.
la source
Pyth, 28 octets
Essayez-le en ligne ou testez certaines entrées
Explication
la source
05AB1E , 33 octets
Essayez-le en ligne!
05AB1E n'est pas si chaud avec des conditions.
la source
JavaScript, 80 octets
Prend l'entrée comme une représentation sous forme de chaîne du nombre et d'une valeur numérique de «décalage». Renvoie une chaîne.
Extrait de test
la source