Eine Zahl drehen
n
Drehen Sie bei einer positiven Zahl die Basis-10-Stellen nach m
rechts. Das heißt, Sie geben das Ergebnis der m
Schritte zum Verschieben der letzten Ziffer zum Start aus. Die Rotationszahl m
ist eine nicht negative ganze Zahl.
Sie sollten führende Nullen im Endergebnis entfernen, jedoch nicht in einem der Zwischenschritte. Zum Beispiel 100,2 => 1
drehen wir für den Testfall zuerst zu 010
, dann zu 001
und lassen dann schließlich die führenden Nullen fallen, um zu erhalten 1
.
Tests
n,m => Output
123,1 => 312
123,2 => 231
123,3 => 123
123,4 => 312
1,637 => 1
10,1 => 1
100,2 => 1
10,2 => 10
110,2 => 101
123,0 => 123
9998,2 => 9899
Antworten
Japt -N , 2 Bytes
Nimmt m
als Zeichenfolge und V=n
als Ganzzahl oder Zeichenfolge eine Ganzzahl aus. Anfügen s
oder ì
für ein Byte , wenn wir haben beide als ganze Zahlen in Anspruch nehmen.
éV
Versuch es
R , 51 Bytes
function(n,m,p=10^nchar(n))sum(n*p^(0:m))%/%10^m%%p
Probieren Sie es online aus!
Numerische Lösung (die bei Kombinationen von n & m fehlschlägt, die dazu führen, dass der numerische Bereich von R überschritten wird): Verkettet die Ziffern von n, m mal (also: 123
=> 123123123123
für m = 4) und berechnet dann DIV 10 ^ m (so: 12312312
für m = 4) MOD 10 ^ Ziffern (n) (also :) 312
.
R , 61 53 Bytes
Edit: -8 Bytes dank Giuseppe
function(n,m,N=nchar(n),M=10^(m%%N))n%%M*10^N/M+n%/%M
Probieren Sie es online aus!
Textbasierte Funktion, die sich dreht, indem die beiden Teile der Zahl miteinander kombiniert werden, um den numerischen Bereich nicht zu verlassen: Setzt die letzten (m MOD-Ziffern (n)) Ziffern von n an die erste Stelle, gefolgt von den anderen Ziffern von n.
Python 3 , 61 57 Bytes
i=input
n=i()
k=int(i())%len(n)
print(int(n[-k:]+n[:-k]))
Probieren Sie es online aus!
Verwendet das Schneiden von Zeichenfolgen, um die letzten k Ziffern am Anfang zu verschieben, und konvertiert sie in eine Ganzzahl, um die führenden Nullen zu entfernen.
-4 Bytes dank Lyxal
05AB1E , 4 Bytes
(._ï
Probieren Sie es online aus!
Erläuterung
(._ï
( : get negative of m
._ : rotate n left negative m times
ï : remove leading zeros
MATL , 3 Bytes
YSU
Probieren Sie es online aus!
Nimmt n
als Zeichenfolge und m
als Ganzzahl.
Erläuterung
YS % Shift first input second input number of times
U % Convert to integer to remove leading 0s
MATL , 5 Bytes
ViYSU
Probieren Sie es online aus!
Diese Antwort nimmt beide Eingaben als ganze Zahlen.
Holzkohle , 9 Bytes
II⭆θ§θ⁻κη
Probieren Sie es online aus! Der Link führt zur ausführlichen Version des Codes. Erläuterung:
θ Input `n` as a string
⭆ Map over characters and join
κ Current index
⁻ Subtract
η Input `m`
§ Cyclically indexed into
θ Input `n` as a string
I Cast to integer
I Cast to string
Implicitly print
Wenn Sie versuchen, eine Ganzzahl und eine Zeichenfolge zu subtrahieren, wird die Zeichenfolge in eine Ganzzahl umgewandelt.
Perl 5 + -pl
, 26 Bytes
eval'$_=chop.$_;'x<>;$_|=0
Probieren Sie es online aus!
APL + WIN, 8 7 Bytes
Fordert n als Ganzzahl und m als Zeichenfolge auf:
⍎(-⎕)⌽⎕
Probieren Sie es online aus! Mit freundlicher Genehmigung von Dyalog Classic
JavaScript (ES6), 36 Byte
Erwartet (m)(n)
, wo n
eine Zeichenfolge und m
entweder eine Zeichenfolge oder eine Ganzzahl ist.
m=>g=n=>m--?g(n%10+n.slice(0,-1)):+n
Probieren Sie es online aus!
C (gcc)-lm
, 65 \$\cdots\$ 56 55 Bytes
Dank Deckenkatze ein Byte gespart !!!
e;f(n,m){for(e=log10(n);m--;)n=n%10*exp10(e)+n/10;m=n;}
Probieren Sie es online aus!
Eingaben Ganzzahlen \$n\$und \$m\$.
Base-10 dreht sich digital \$n\$richtig \$m\$-times und gibt es zurück.
Pyth , 4 Bytes
v.>z
Probieren Sie es online aus!
Erläuterung
v.>zQ
Q : first line of input evaluated
z : second line of input as string
.> : cyclically rotate second line right by number in first line
v : evaluate to remove leading 0s
Python 3 , 39 Bytes
lambda n,m:int(((n*m)[-m:]+n)[:len(n)])
Probieren Sie es online aus! Oder sehen Sie sich die Testsuite an .
Wie?
Das Drehen nach n
rechts um entspricht m
dem Drehen nach n
rechts um die m
Modulo-Länge n
( m%len(n)
), dh die Verkettung der letzten m%len(n)
Ziffern mit den ersten len(n)-m%len(n)
Ziffern.
Ein einfaches Stück würde uns geben
lambda n,m:int(n[-m%len(n):]+n[:-m%len(n)])
für 43 Bytes. Um die Notwendigkeit des Wiederholten zu beseitigen, -m%
können wir stattdessen die letzten m%len(n)
Ziffern mit allen Ziffern von verketten n
und dann die ersten len(n)
Ziffern nehmen. Das ist
lambda n,m:int((n[-m%len(n):]+n)[:len(n)])
für 42 Bytes. Das n[-m%len(n):]
kann dann ersetzt werden, indem die am weitesten rechts stehenden m
Ziffern von m
n
s verkettet werden, (n*m)[-m:]
wodurch wir die 39-Byte-Lösung erhalten.
Keg , -hr
11 Bytes
÷(¿|")⑷⅍⑸⅀ℤ
Probieren Sie es online aus!
Erklärt
÷(¿|")⑷⅍⑸⅀ℤ
÷ # Split m into individual numbers
(¿|") # n times, shift the stack right
⑷⅍⑸ # turn each character into a string
⅀ℤ # sum stack and convert to integer. `-hr` prints it as integer
Python 3 , 47 Bytes
f=lambda n,m:m and f(n[-1]+n[:-1],m-1)or int(n)
Probieren Sie es online aus!
Eingänge \$n\$als String und \$m\$als ganze Zahl.
Rückgabe gedreht \$n\$ als ganze Zahl.
Java (JDK) , 66 Byte
(n,x)->new Long((""+n+n).substring(x=(n=(""+n).length())-x%n,x+n))
Probieren Sie es online aus!
J , 11 Bytes
(".@|.":)~-
Probieren Sie es online aus!
Wie es funktioniert
Verwendet @ Bubblers stillschweigenden Trick für (F x) G (H y) = (G~F)~H
.
(".@|.":)~-
- negate y to shift right
( )~ flip arguments, so ((-y) ".@|. (":x))
": convert x to string
|. shift that by negated y
".@ and convert back to number
Io , 89 Bytes
Verwendet einen reduce
Trick, um Variablen verschiedene Zeilen von STDIN zuzuweisen.
File standardInput readLines reduce(a,b,a splitAt(-b asNumber)reverse join)asNumber print
Probieren Sie es online aus!
Io , 56 Bytes
method(a,b,doString(a splitAt(-b asNumber)reverse join))
Probieren Sie es online aus!
Ruby -nl
, 34 Bytes
->m{($_*-~m*2)[~~/$/*m,~/$/].to_i}
Probieren Sie es online aus!
Nimmt \ $ n \ $ von STDIN und \ $ m \ $ als Argument. Verkettet \ $ n \ $ \ $ 2 (m + 1) \ $ mal und nimmt dann aus dieser Zeichenfolge die Teilzeichenfolge der Länge \ $ d \ $ (wobei \ $ d \ $ die Anzahl der Stellen in \ $ n \ $ ist ). das beginnt \ $ m (d + 1) \ $ Zeichen am Ende. Im Code $_
ist \$n\$und ~/$/
gibt \ $ d \ $ .
Beispiel
Für \ $ n = 123 \ $ gilt \ $ m = 2 \ $ :
- Verketten Sie \ $ n \ $ \ $ 2 (m + 1) = 6 \ $ mal:
123123123123123123
- Vom Ende zurückzählen \ $ m (d + 1) = 8 \ $ Zeichen:
123123123123123123
- Nehmen Sie einen Teilstring der Länge \ $ d = 3 \ $ :
123123123123123123
Python 3.8 (Vorabversion) , 42 40 Byte
lambda x,r:int(x[(a:=-r%len(x)):]+x[:a])
Probieren Sie es online aus!
Gelee , (4?) 5 Bytes
4 wenn wir eine Liste von Ziffern akzeptieren dürfen (entfernen Sie die führende D
).
DṙN}Ḍ
Probieren Sie es online aus!
Wie?
DṙN}Ḍ - Link: integer, n; integer, m
D - convert to base ten
} - use m as the input of:
N - negate
ṙ - rotate (n) left by (-m)
Ḍ - convert from base ten
CJam ,
10
7
6 Bytes
Sparte 3 Bytes, indem Sie sich daran erinnern, dass Sie die meisten Array-Operationen für Zeichenfolgen ausführen können.
-1 Byte von @my Pronomen ist eine monicareinstate Notiz, m>
die Argumente in jeder Reihenfolge akzeptiert .
rr~m>~
Probieren Sie es online aus
Erläuterung:
rr Read two string inputs
~ Parse m to number
m> Rotate n string right m times
~ Parse n to number to remove leading zeros
(implicit) output
Alte Version, 7 Bytes:
q~\sm>~
Probieren Sie es online aus
Erläuterung:
q~ Take input as a string, evaluate to two numbers
\ Swap order
s Convert n to string
m> Rotate n string right m times
~ Parse n to number to remove leading zeros
(implicit) output
Taxi , 1698 Bytes
Go to Post Office:w 1 l 1 r 1 l.Pickup a passenger going to Chop Suey.Pickup a passenger going to The Babelfishery.Go to The Babelfishery:s 1 l 1 r.Pickup a passenger going to Addition Alley.1 is waiting at Starchild Numerology.Go to Starchild Numerology:n 1 l 1 l 1 l 2 l. Pickup a passenger going to Addition Alley.Go to Addition Alley:w 1 r 3 r 1 r 1 r.Pickup a passenger going to The Underground.Go to Chop Suey:n 1 r 2 r.[1]Switch to plan "2" if no one is waiting.Pickup a passenger going to Narrow Path Park.Go to Narrow Path Park:n 1 l 1 r 1 l.Go to Chop Suey:e 1 r 1 l 1 r.Switch to plan "1".[2]Go to Narrow Path Park:n 1 l 1 r 1 l.Switch to plan "3" if no one is waiting.Pickup a passenger going to Chop Suey.Go to Chop Suey:e 1 r 1 l 1 r.Switch to plan "2".[3]Go to Chop Suey:e 1 r 1 l 1 r.[a]Go to The Underground:s 1 r 1 l.Switch to plan "b" if no one is waiting.Pickup a passenger going to The Underground.Go to Fueler Up:s.Go to Chop Suey:n 3 r 1 l.Pickup a passenger going to Chop Suey.Switch to plan "a".[b]Go to Chop Suey:n 2 r 1 l.[4]Switch to plan "5" if no one is waiting.Pickup a passenger going to Narrow Path Park.Go to Narrow Path Park:n 1 l 1 r 1 l.Go to Chop Suey:e 1 r 1 l 1 r.Switch to plan "4".[5]Go to Narrow Path Park:n 1 l 1 r 1 l.[c]Switch to plan "d" if no one is waiting.Pickup a passenger going to KonKat's.Go to KonKat's:e 1 r.Pickup a passenger going to KonKat's.Go to Narrow Path Park:n 2 l.Switch to plan "c".[d]Go to KonKat's:e 1 r.Pickup a passenger going to The Babelfishery.Go to The Babelfishery:s.Pickup a passenger going to The Babelfishery.Go to KonKat's:n.Go to The Babelfishery:s.Pickup a passenger going to Post Office.Go to Post Office:n 1 l 1 r.
Probieren Sie es online aus!
Ich entschied mich dafür, gefeuert zu werden, anstatt die Bytes zu opfern, die erforderlich sind, um am Ende in die Garage zurückzukehren. Ich habe sowohl sehr lange Eingänge als auch sehr lange Umdrehungen überprüft und der Nettogewinn ist positiv, damit Ihnen nie das Benzin ausgeht.
Für Lesbarkeit und mit Kommentaren formatiert:
[ Pick up the inputs, add 1 to the second, and chop the first into pieces. ]
Go to Post Office:w 1 l 1 r 1 l.
Pickup a passenger going to Chop Suey.
Pickup a passenger going to The Babelfishery.
Go to The Babelfishery:s 1 l 1 r.
Pickup a passenger going to Addition Alley.
1 is waiting at Starchild Numerology.
Go to Starchild Numerology:n 1 l 1 l 1 l 2 l.
Pickup a passenger going to Addition Alley.
Go to Addition Alley:w 1 r 3 r 1 r 1 r.
Pickup a passenger going to The Underground.
Go to Chop Suey:n 1 r 2 r.
[ Reverse the order the charaters are stored in so we can right-shift instead of left-shift. ]
[1]
Switch to plan "2" if no one is waiting.
Pickup a passenger going to Narrow Path Park.
Go to Narrow Path Park:n 1 l 1 r 1 l.
Go to Chop Suey:e 1 r 1 l 1 r.
Switch to plan "1".
[2]
Go to Narrow Path Park:n 1 l 1 r 1 l.
Switch to plan "3" if no one is waiting.
Pickup a passenger going to Chop Suey.
Go to Chop Suey:e 1 r 1 l 1 r.
Switch to plan "2".
[3]
Go to Chop Suey:e 1 r 1 l 1 r.
[ Loop the required times, rotating the passengers at Chop Suey each time. ]
[a]
Go to The Underground:s 1 r 1 l.
Switch to plan "b" if no one is waiting.
Pickup a passenger going to The Underground.
Go to Fueler Up:s.
Go to Chop Suey:n 3 r 1 l.
Pickup a passenger going to Chop Suey.
Switch to plan "a".
[b]
Go to Chop Suey:n 2 r 1 l.
[ Reverse the character order again. ]
[4]
Switch to plan "5" if no one is waiting.
Pickup a passenger going to Narrow Path Park.
Go to Narrow Path Park:n 1 l 1 r 1 l.
Go to Chop Suey:e 1 r 1 l 1 r.
Switch to plan "4".
[5]
Go to Narrow Path Park:n 1 l 1 r 1 l.
[ Concatenate the passengers at Narrow Path Park. ]
[c]
Switch to plan "d" if no one is waiting.
Pickup a passenger going to KonKat's.
Go to KonKat's:e 1 r.
Pickup a passenger going to KonKat's.
Go to Narrow Path Park:n 2 l.
Switch to plan "c".
[ Convert to a number to remove leading zeros and then back to a string so the Post Office can handle it. ]
[d]
Go to KonKat's:e 1 r.
Pickup a passenger going to The Babelfishery.
Go to The Babelfishery:s.
Pickup a passenger going to The Babelfishery.
Go to KonKat's:n.
Go to The Babelfishery:s.
Pickup a passenger going to Post Office.
Go to Post Office:n 1 l 1 r.
Probieren Sie es online aus!
APL (Dyalog Extended) , 4 Bytes ( SBCS )
Anonyme stillschweigende Infix-Funktion. Nimmt die Zeichenfolge n
als rechtes Argument und die Zahl m
als linkes Argument.
⍎-⍛⌽
Probieren Sie es online aus!
⍎
Führen Sie das Ergebnis von aus
-⍛
das linke Argument negieren und dann dazu verwenden
⌽
zyklisch das richtige Argument drehen
Wolfram Language (Mathematica) , 43 Bytes
FromDigits@RotateRight[IntegerDigits@#,#2]&
Probieren Sie es online aus!
Ruby , 44 40 Bytes
->a,b{a.to_s.chars.rotate(-b).join.to_i}
-4 von Dingus.
Probieren Sie es online aus!
Retina 0,8,2 , 29 Bytes
,.+
$*_ +`(.*)(\d)_ $2$1
^0+
Probieren Sie es online aus! Link enthält Testfälle. Nimmt Eingabe als n,m
. Erläuterung:
,.+
$*_
In unary konvertieren m
.
+`(.*)(\d)_
$2$1
n
m
Zeiten drehen . Dies ist O (m³), da der Regex versucht, eine zweite Übereinstimmung zu finden. Übereinstimmung von rechts nach links, Verankerung der Übereinstimmung zu Beginn oder Umschreiben des Codes zur Eingabe m,n
, um die Zeitkomplexität zu verringern (natürlich auf Kosten eines Bytes).
^0+
Führende Nullen löschen.
Scala, 61 Bytes
(n,m)=>{val s=n+""size;val(a,b)=n+""splitAt s-m%s;b++a toInt}
Probieren Sie es in Scastie
PHP ,
45
43 Bytes
2 Bytes gespeichert, erkannt, dass wir die Variablennamen verkürzen können.
<?=(int)(substr($s,-$n).substr($s,0,-$n))?>
Probieren Sie es online aus
Erläuterung:
<?= ?> Shorthand for <?php echo ;?>
(int) Typecast string to int, removes 0s from prefix
substr() substr(string,start,[length]), returns part of string,
if range go out of bounds, starts again from the opposite end.
Basically returns part of from a 'circular' string.
JavaScript (V8) , 47 Byte
(n,m,k=(e=n+'').length)=>+(e+e).substr(k-m%k,k)
Probieren Sie es online aus!
V (vim) , 11 Bytes
Àñ$x0Pñó^0«
Probieren Sie es online aus!
Àñ ñ # (M-@)rg number of times
$ # end of line
x # delete character (cut)
0 # beginning of line
P # paste character
ó # (M-s)ubsitute
^0« # ^0\+
# (implicitly) with nothing