Ruota un numero

Aug 15 2020

Dato un numero positivo n, ruota le sue posizioni in base 10 cifre mverso destra. Cioè, mostra il risultato dei mpassaggi di spostamento dell'ultima cifra all'inizio. Il conteggio delle rotazioni msarà un numero intero non negativo.

È necessario rimuovere gli zeri iniziali nel risultato finale, ma non in nessuno dei passaggi intermedi. Ad esempio, per il caso di test 100,2 => 1, prima ruotiamo su 010, poi su 001, quindi infine rilasciamo gli zeri iniziali per ottenere 1.

Test

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

Risposte

13 Shaggy Aug 15 2020 at 15:16

Japt -N , 2 byte

Prende mcome stringa e V=ncome numero intero o stringa, restituisce un numero intero. Anteporre so ìper 1 byte, se ci devono prendere sia come numeri interi.

éV

Provalo

9 DominicvanEssen Aug 15 2020 at 19:10

R , 51 byte

function(n,m,p=10^nchar(n))sum(n*p^(0:m))%/%10^m%%p

Provalo online!

Soluzione numerica (che fallisce per le combinazioni di n & m che causano il superamento dell'intervallo numerico di R): concatena le cifre di n, m volte (quindi: 123=> 123123123123per m = 4) e quindi calcola DIV 10 ^ m (quindi: 12312312per m = 4) MOD 10 ^ cifre (n) (quindi:) 312.


R , 61 53 byte

Modifica: -8 byte grazie a Giuseppe

function(n,m,N=nchar(n),M=10^(m%%N))n%%M*10^N/M+n%/%M

Provalo online!

Funzione basata su testo che ruota combinando le due parti del numero insieme, quindi non esce dall'intervallo numerico: inserisce prima le ultime (m MOD cifre (n)) cifre di n, seguite dalle altre cifre di n.

5 ManishKundu Aug 15 2020 at 13:47

Python 3 , 61 57 byte

i=input
n=i()
k=int(i())%len(n)
print(int(n[-k:]+n[:-k]))

Provalo online!

Utilizza il sezionamento della stringa per spostare le ultime k cifre all'inizio e lo converte in un numero intero per rimuovere gli zeri iniziali.

-4 byte grazie a Lyxal

5 Mukundan314 Aug 15 2020 at 17:40

05AB1E , 4 byte

(._ï

Provalo online!

Spiegazione

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

MATL , 3 byte

YSU

Provalo online!

Accetta ncome stringa e mcome numero intero.

Spiegazione

YS   % Shift first input second input number of times
  U  % Convert to integer to remove leading 0s

MATL , 5 byte

ViYSU

Provalo online!

Questa risposta prende entrambi gli input come numeri interi.

4 Neil Aug 15 2020 at 17:55

Carboncino , 9 byte

II⭆θ§θ⁻κη

Provalo online! Il collegamento è alla versione dettagliata del codice. Spiegazione:

   θ        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

Convenientemente se provi a sottrarre un numero intero e una stringa, la stringa viene convertita in numero intero.

4 DomHastings Aug 15 2020 at 16:44

Perl 5+ -pl, 26 byte

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

Provalo online!

4 Graham Aug 15 2020 at 14:35

APL + WIN, 8 7 byte

Richiede n come numero intero em come stringa:

⍎(-⎕)⌽⎕

Provalo online! Per gentile concessione di Dyalog Classic

4 Arnauld Aug 15 2020 at 14:48

JavaScript (ES6), 36 byte

Prevede (m)(n), dove nè una stringa ed mè una stringa o un numero intero.

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

Provalo online!

4 Noodle9 Aug 15 2020 at 18:31

C (gcc)-lm , 65 \$\cdots\$ 56 55 byte

Ho salvato un byte grazie a Ceilingcat !!!

e;f(n,m){for(e=log10(n);m--;)n=n%10*exp10(e)+n/10;m=n;}

Provalo online!

Ingressi interi \$n\$e \$m\$.
Base-10 ruota digitalmente \$n\$a destra \$m\$-time e lo restituisce.

4 Mukundan314 Aug 15 2020 at 17:01

Pyth , 4 byte

v.>z

Provalo online!

Spiegazione

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 byte

lambda n,m:int(((n*m)[-m:]+n)[:len(n)])

Provalo online! Oppure guarda la suite di test .

Come?

Ruotare a ndestra di mè uguale a ruotare a ndestra di mlunghezza modulo n( m%len(n)), che è la concatenazione delle ultime m%len(n)cifre con le prime len(n)-m%len(n)cifre.

Una semplice fetta ci darebbe

lambda n,m:int(n[-m%len(n):]+n[:-m%len(n)])

per 43 byte. Per eliminare la necessità del ripetuto -m%possiamo invece concatenare le ultime m%len(n)cifre con tutte le cifre di ne poi prendere le prime len(n)cifre. Questo è

lambda n,m:int((n[-m%len(n):]+n)[:len(n)])

per 42 byte. Il n[-m%len(n):]possono poi essere sostituiti con l'assunzione di più a destra mcifre del m ns concatenati insieme, (n*m)[-m:]dandoci la soluzione 39 byte.

3 Lyxal Aug 15 2020 at 11:22

Barilotto , -hr, 11 byte

÷(¿|")⑷⅍⑸⅀ℤ

Provalo online!

Ha spiegato

÷(¿|")⑷⅍⑸⅀ℤ
÷               # 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 byte

f=lambda n,m:m and f(n[-1]+n[:-1],m-1)or int(n)

Provalo online!

Ingressi \$n\$come una stringa e \$m\$come numero intero.
Restituisce ruotato \$n\$ come numero intero.

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))

Provalo online!

2 xash Aug 15 2020 at 14:12

J , 11 byte

(".@|.":)~-

Provalo online!

Come funziona

Utilizza il trucco tacito di @ Bubbler per (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 byte

Utilizza un reducetrucco per assegnare diverse righe di STDIN alle variabili.

File standardInput readLines reduce(a,b,a splitAt(-b asNumber)reverse join)asNumber print

Provalo online!

Io , 56 byte

method(a,b,doString(a splitAt(-b asNumber)reverse join))

Provalo online!

2 Dingus Aug 16 2020 at 07:44

Ruby -nl , 34 byte

->m{($_*-~m*2)[~~/$/*m,~/$/].to_i}

Provalo online!

Accetta \ $ n \ $ da STDIN e \ $ m \ $ come argomento. Concatena \ $ n \ $ \ $ 2 (m + 1) \ $ volte, quindi da questa stringa prende la sottostringa di lunghezza \ $ d \ $ (dove \ $ d \ $ è il numero di cifre in \ $ n \ $ ) che inizia \ $ m (d + 1) \ $ caratteri dalla fine. Nel codice $_è \$n\$e ~/$/restituisce \ $ d \ $ .

Esempio

Per \ $ n = 123 \ $ , \ $ m = 2 \ $ :

  1. Concatena \ $ n \ $ \ $ 2 (m + 1) = 6 \ $ volte:123123123123123123
  2. Conta alla rovescia dalla fine \ $ m (d + 1) = 8 \ $ caratteri:123123123123123123
  3. Prendi una sottostringa di lunghezza \ $ d = 3 \ $ :123123123123123123
2 DanielH. Aug 16 2020 at 07:42

Python 3.8 (pre-rilascio) , 42 40 byte

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

Provalo online!

2 JonathanAllan Aug 16 2020 at 04:49

Gelatina , (4?) 5 byte

4 se possiamo accettare un elenco di cifre (rimuovere l'interlinea D).

DṙN}Ḍ

Provalo online!

Come?

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 byte

Salvati 3 byte ricordando che è possibile eseguire la maggior parte delle operazioni sugli array sulle stringhe.

-1 byte da @my pronome è monicareinstate notando che m>accetta argomenti in entrambi gli ordini.

rr~m>~

Provalo online

Spiegazione:

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

Vecchia versione, 7 byte:

q~\sm>~

Provalo online

Spiegazione:

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 byte

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.

Provalo online!

Ho scelto di essere licenziato piuttosto che sacrificare i byte necessari per tornare al garage alla fine. Ho controllato sia ingressi molto lunghi che rotazioni molto lunghe e il guadagno netto è positivo in modo da non rimanere mai senza benzina.


Formattato per la leggibilità e con commenti:

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

Provalo online!

2 Adám Aug 18 2020 at 01:34

APL (Dyalog Extended) , 4 byte ( SBCS )

Funzione di infisso tacito anonimo. Accetta la stringa ncome argomento destro e il numero mcome argomento sinistro.

⍎-⍛⌽

Provalo online!

 eseguire il risultato di

-⍛ negando l'argomento a sinistra, quindi usandolo per

 ruotare ciclicamente l'argomento destro

1 J42161217 Aug 15 2020 at 14:42

Wolfram Language (Mathematica) , 43 byte

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

Provalo online!

1 Razetime Aug 15 2020 at 15:46

Ruby , 44 40 byte

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

-4 da Dingus.

Provalo online!

1 Neil Aug 15 2020 at 17:33

Retina 0.8.2 , 29 byte

,.+
$*_ +`(.*)(\d)_ $2$1
^0+

Provalo online! Il collegamento include casi di test. Accetta input come n,m. Spiegazione:

,.+
$*_

Converti min unario.

+`(.*)(\d)_
$2$1

Ruota i n mtempi. Questo è O (m³) a causa del modo in cui la regex torna indietro cercando di trovare una seconda corrispondenza. Corrispondenza da destra a sinistra, ancoraggio della corrispondenza all'inizio o riscrittura del codice per ricevere input in modo da m,nridurre la complessità del tempo (al costo di un byte ovviamente).

^0+

Elimina gli zeri iniziali.

1 user Aug 15 2020 at 22:07

Scala, 61 byte

(n,m)=>{val s=n+""size;val(a,b)=n+""splitAt s-m%s;b++a toInt}

Provalo in Scastie

1 Hackinet Aug 16 2020 at 15:37

PHP , 45 43 byte

Salvati 2 byte, ci siamo resi conto che possiamo abbreviare i nomi delle variabili.

<?=(int)(substr($s,-$n).substr($s,0,-$n))?>

Provalo online

Spiegazione:

<?= ?>       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)

Provalo online!

1 nmjcman101 Aug 17 2020 at 23:22

V (vim) , 11 byte

Àñ$x0Pñó^0«

Provalo online!

Àñ    ñ       # (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