Gehen Sie n
wie folgt vor, um über mehrere Stellen zu "verschieben" :
- Entfernen Sie die letzten
n
Ziffern - Fügen Sie
n
am Anfang der Nummer Kopien der ersten Ziffer hinzu
Zum Beispiel können die Zahl zu verschieben 31415
drei Plätze, die letzten drei Ziffern nehmen zu erhalten 31
, und fügen Sie dann drei weitere Kopien der ersten Ziffer 3
, bis zum Ende, geben 33331
.
Wenn die Zahl negativ ist, sollten stattdessen Ziffern von links genommen und die erste Ziffer von rechts "ausgefüllt" werden. Zum Beispiel 31415
ergibt die um -3 Stellen verschobene Zeichenfolge 15555
.
Wenn die Zahl 0 ist, sollte keine Änderung vorgenommen werden.
Wenn die Verschiebung länger als die Länge des Programms ist, werden möglicherweise ausgefüllte Ziffern entfernt. Dies bedeutet, dass, wenn die angegebene Zahl größer als die Länge der Zeichenfolge ist, keine weiteren Änderungen vorgenommen werden, nachdem die gesamte Zeichenfolge eine einzelne Ziffer geworden ist.
Die Herausforderung
Bei zwei Zahlen n
und s
wird die Rückkehr n
um s
Orte verschoben .
Testfälle
n, s -> result
7243, 1 -> 7724
452, -1 -> 522
12, 1 -> 11
153, 4 -> 111
Dies ist Code-Golf , daher gewinnt die kürzeste gültige Übermittlung (gemessen in Bytes).
Antworten:
APL (Dyalog) , 32 Bytes
Anonyme Funktion, die das Sieben als linkes Argument und die Zahl (als Zeichenfolge) als rechtes Argument verwendet.
Probieren Sie es online aus!
{
anonyme Funktion, bei der ⍺ und ⍵ linke und rechte Argumente sind|⍺
der absolute Wert der Verschiebunga←
speichern in einem⋄
dann⌽⍵
die Zahl umkehren⊃
Wählen Sie die erste (dh letzte) Ziffera⍴
r es auf Länge umformen a⍵,
Stellen Sie die Nummer voran(
…),
Stellen Sie Folgendes voran:⊃⍵
die erste Ziffera⍴
r es auf Länge umformen a(
…)↓
Geben Sie die folgende Anzahl von Zeichen ein:a-⍺
a minus die Verschiebung(
…)↑
Nimm die folgende Anzahl von Zeichen:≢⍵
die Länge der ursprünglichen Nummerquelle
Python 2 , 50 Bytes
Probieren Sie es online aus!
quelle
Haskell, 69 Bytes
Nimmt die Nummer als Zeichenfolge. Probieren Sie es online aus!
Wie es funktioniert:
quelle
MATL , 12 Bytes
Eingaben sind: Zahl, die als Zeichenfolge verschoben werden soll; Verschiebungsbetrag als Zahl.
Probieren Sie es online aus! Oder überprüfen Sie alle Testfälle .
Consisder Eingänge
'452
und'-1'
.quelle
J, 37 Bytes
Dies war eine dieser Situationen in J, in denen ein explizites Verb wie die richtige (die einzige?) Wahl schien, aber ich würde gerne wissen, ob es eine stillschweigende Neufassung davon gibt:
Mit dem in J eingebauten Shift-Verb können Sie das Füllzeichen konfigurieren:
Die Logik zum Bestimmen, ob das erste oder das letzte Zeichen als Füllzeichen verwendet werden soll, ist unkompliziert
Probieren Sie es online aus!
quelle
J , 23 Bytes
Eingabe n und Ausgabe sind Zeichenfolgen, die die Zahlen enthalten.
Probieren Sie es online aus!
Erläuterung
quelle
Netzhaut , 61 Bytes
Probieren Sie es online aus!
quelle
05AB1E , 16 Bytes
Probieren Sie es online aus!
Erläuterung
quelle
Python 2 , 87 Bytes
Probieren Sie es online aus!
Nimmt die Zahl als Zeichenfolge und die Verschiebung als Ganzzahl. Gibt eine Zeichenfolge zurück.
Ich habe versucht, die Umkehrung in die Funktion einzubetten, anstatt einen rekursiven Aufruf zu tätigen, aber ich konnte es anscheinend nicht richtig machen.
quelle
Python 3 , 73 Bytes
Probieren Sie es online aus!
quelle
Haskell , 108 Bytes
Na ja, das ging schlimmer als ich dachte ..
Probieren Sie es online aus!
Ungolfed
quelle
Clojure, 121 Bytes
Autsch, böse, auch mit negativen Eingaben umzugehen.
quelle
Pyth, 28 Bytes
Probieren Sie es online aus oder testen Sie einige Eingaben
Erläuterung
quelle
05AB1E , 33 Bytes
Probieren Sie es online aus!
05AB1E ist nicht so heiß mit Bedingungen.
quelle
JavaScript, 80 Bytes
Übernimmt die Eingabe als Zeichenfolgendarstellung der Zahl und als numerischen "Verschiebungsbetrag". Gibt eine Zeichenfolge zurück.
Test-Snippet
quelle