Eine Zahl drehen

Aug 15 2020

nDrehen Sie bei einer positiven Zahl die Basis-10-Stellen nach mrechts. Das heißt, Sie geben das Ergebnis der mSchritte zum Verschieben der letzten Ziffer zum Start aus. Die Rotationszahl mist eine nicht negative ganze Zahl.

Sie sollten führende Nullen im Endergebnis entfernen, jedoch nicht in einem der Zwischenschritte. Zum Beispiel 100,2 => 1drehen wir für den Testfall zuerst zu 010, dann zu 001und 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

13 Shaggy Aug 15 2020 at 15:16

Japt -N , 2 Bytes

Nimmt mals Zeichenfolge und V=nals Ganzzahl oder Zeichenfolge eine Ganzzahl aus. Anfügen soder ìfür ein Byte , wenn wir haben beide als ganze Zahlen in Anspruch nehmen.

éV

Versuch es

9 DominicvanEssen Aug 15 2020 at 19:10

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=> 123123123123für m = 4) und berechnet dann DIV 10 ^ m (so: 12312312fü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.

5 ManishKundu Aug 15 2020 at 13:47

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

5 Mukundan314 Aug 15 2020 at 17:40

05AB1E , 4 Bytes

(._ï

Probieren Sie es online aus!

Erläuterung

(._ï
(     : get negative of m
 ._   : rotate n left negative m times
   ï  : remove leading zeros
4 Mukundan314 Aug 15 2020 at 17:18

MATL , 3 Bytes

YSU

Probieren Sie es online aus!

Nimmt nals Zeichenfolge und mals 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.

4 Neil Aug 15 2020 at 17:55

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.

4 DomHastings Aug 15 2020 at 16:44

Perl 5 + -pl, 26 Bytes

eval'$_=chop.$_;'x<>;$_|=0

Probieren Sie es online aus!

4 Graham Aug 15 2020 at 14:35

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

4 Arnauld Aug 15 2020 at 14:48

JavaScript (ES6), 36 Byte

Erwartet (m)(n), wo neine Zeichenfolge und mentweder eine Zeichenfolge oder eine Ganzzahl ist.

m=>g=n=>m--?g(n%10+n.slice(0,-1)):+n

Probieren Sie es online aus!

4 Noodle9 Aug 15 2020 at 18:31

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.

4 Mukundan314 Aug 15 2020 at 17:01

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
4 JonathanAllan Aug 16 2020 at 03:19

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 nrechts um entspricht mdem Drehen nach nrechts um die mModulo-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 nund 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 mZiffern von m ns verkettet werden, (n*m)[-m:]wodurch wir die 39-Byte-Lösung erhalten.

3 Lyxal Aug 15 2020 at 11:22

Keg , -hr11 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
3 Noodle9 Aug 15 2020 at 21:25

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.

3 OlivierGrégoire Aug 15 2020 at 22:21

Java (JDK) , 66 Byte

(n,x)->new Long((""+n+n).substring(x=(n=(""+n).length())-x%n,x+n))

Probieren Sie es online aus!

2 xash Aug 15 2020 at 14:12

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
2 Noname Aug 15 2020 at 14:26

Io , 89 Bytes

Verwendet einen reduceTrick, 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!

2 Dingus Aug 16 2020 at 07:44

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 \ $ :

  1. Verketten Sie \ $ n \ $ \ $ 2 (m + 1) = 6 \ $ mal:123123123123123123
  2. Vom Ende zurückzählen \ $ m (d + 1) = 8 \ $ Zeichen:123123123123123123
  3. Nehmen Sie einen Teilstring der Länge \ $ d = 3 \ $ :123123123123123123
2 DanielH. Aug 16 2020 at 07:42

Python 3.8 (Vorabversion) , 42 40 Byte

lambda x,r:int(x[(a:=-r%len(x)):]+x[:a])

Probieren Sie es online aus!

2 JonathanAllan Aug 16 2020 at 04:49

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
2 EthanChapman Aug 16 2020 at 10:53

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
2 EngineerToast Aug 17 2020 at 22:45

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!

2 Adám Aug 18 2020 at 01:34

APL (Dyalog Extended) , 4 Bytes ( SBCS )

Anonyme stillschweigende Infix-Funktion. Nimmt die Zeichenfolge nals rechtes Argument und die Zahl mals 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

1 J42161217 Aug 15 2020 at 14:42

Wolfram Language (Mathematica) , 43 Bytes

FromDigits@RotateRight[IntegerDigits@#,#2]&

Probieren Sie es online aus!

1 Razetime Aug 15 2020 at 15:46

Ruby , 44 40 Bytes

->a,b{a.to_s.chars.rotate(-b).join.to_i}

-4 von Dingus.

Probieren Sie es online aus!

1 Neil Aug 15 2020 at 17:33

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 mZeiten 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.

1 user Aug 15 2020 at 22:07

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

1 Hackinet Aug 16 2020 at 15:37

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.    
  
1 YaroslavGaponov Aug 17 2020 at 20:00

JavaScript (V8) , 47 Byte

(n,m,k=(e=n+'').length)=>+(e+e).substr(k-m%k,k)

Probieren Sie es online aus!

1 nmjcman101 Aug 17 2020 at 23:22

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