Putar nomor

Aug 15 2020

Diberikan angka positif n, putar posisi basis 10 digitnya ke mkanan. Yaitu, output hasil mlangkah pemindahan digit terakhir ke awal. Hitungan rotasi makan menjadi bilangan bulat non-negatif.

Anda harus menghilangkan nol di awal hasil akhir, tetapi tidak di langkah menengah mana pun. Misalnya, untuk kasus pengujian 100,2 => 1, pertama-tama kita memutar ke 010, lalu ke 001, lalu akhirnya menghilangkan angka nol di depannya untuk mendapatkan 1.

Tes

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

Jawaban

13 Shaggy Aug 15 2020 at 15:16

Japt -N , 2 byte

Mengambil msebagai string dan V=nsebagai integer atau string, menghasilkan integer. Tambahkan satau ìuntuk +1 byte jika kita harus mengambil keduanya sebagai bilangan bulat.

éV

Cobalah

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

Cobalah secara online!

Solusi numerik (yang gagal untuk kombinasi n & m yang menyebabkannya melebihi rentang numerik R): rantai digit n, m kali (jadi: 123=> 123123123123untuk m = 4) dan kemudian menghitung DIV 10 ^ m (jadi: 12312312untuk m = 4) MOD 10 ^ digit (n) (jadi :) 312.


R , 61 53 byte

Edit: -8 byte berkat Giuseppe

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

Cobalah secara online!

Fungsi berbasis teks yang Berputar dengan menggabungkan dua bagian angka bersama-sama, sehingga tidak keluar dari rentang numerik: letakkan digit terakhir (m MOD digit (n)) n terlebih dahulu, diikuti digit n lainnya.

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

Cobalah secara online!

Menggunakan pemotongan string untuk memindahkan angka k terakhir di awal dan mengubahnya menjadi bilangan bulat untuk menghilangkan angka nol di depannya.

-4 byte berkat Lyxal

5 Mukundan314 Aug 15 2020 at 17:40

05AB1E , 4 byte

(._ï

Cobalah secara online!

Penjelasan

(._ï
(     : 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

Cobalah secara online!

Diambil nsebagai string dan msebagai integer.

Penjelasan

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

MATL , 5 byte

ViYSU

Cobalah secara online!

Jawaban ini mengambil kedua masukan sebagai bilangan bulat.

4 Neil Aug 15 2020 at 17:55

Arang , 9 byte

II⭆θ§θ⁻κη

Cobalah secara online! Tautan adalah untuk verbose versi kode. Penjelasan:

   θ        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

Mudah jika Anda mencoba Mengurangi integer dan string maka string tersebut akan dilemparkan ke integer.

4 DomHastings Aug 15 2020 at 16:44

Perl 5 + -pl, 26 byte

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

Cobalah secara online!

4 Graham Aug 15 2020 at 14:35

APL + WIN, 8 7 byte

Perintah untuk n sebagai integer dan m sebagai string:

⍎(-⎕)⌽⎕

Cobalah secara online! Atas kebaikan Dyalog Classic

4 Arnauld Aug 15 2020 at 14:48

JavaScript (ES6), 36 byte

Harapkan (m)(n), di mana nadalah string dan mmerupakan string atau integer.

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

Cobalah secara online!

4 Noodle9 Aug 15 2020 at 18:31

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

Menyelamatkan satu byte berkat ceilingcat !!!

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

Cobalah secara online!

Memasukkan bilangan bulat \$n\$dan \$m\$.
Basis-10 berputar secara digital \$n\$benar \$m\$-kali dan mengembalikannya.

4 Mukundan314 Aug 15 2020 at 17:01

Pyth , 4 byte

v.>z

Cobalah secara online!

Penjelasan

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

Cobalah secara online! Atau lihat rangkaian pengujian .

Bagaimana?

Memutar ke nkanan msama dengan memutar ke nkanan dengan mpanjang modulo n( m%len(n)), yang merupakan rangkaian dari m%len(n)digit terakhir dengan len(n)-m%len(n)digit pertama .

Sepotong sederhana akan memberi kita

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

untuk 43 byte. Untuk menghilangkan kebutuhan akan pengulangan, -m%kita dapat menggabungkan m%len(n)digit terakhir dengan semua digit ndan kemudian mengambil len(n)digit pertama . Ini adalah

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

untuk 42 byte. The n[-m%len(n):]kemudian dapat diganti dengan mengambil paling kanan mdigit m ns concatenated bersama-sama, (n*m)[-m:]memberikan kita solusi 39 byte.

3 Lyxal Aug 15 2020 at 11:22

Tong , -hr, 11 bytes

÷(¿|")⑷⅍⑸⅀ℤ

Cobalah secara online!

Dijelaskan

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

Cobalah secara online!

Masukan \$n\$sebagai string dan \$m\$sebagai integer.
Pengembalian dirotasi \$n\$ sebagai integer.

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

Cobalah secara online!

2 xash Aug 15 2020 at 14:12

J , 11 byte

(".@|.":)~-

Cobalah secara online!

Bagaimana itu bekerja

Menggunakan trik diam-diam @ Bubbler untuk (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

Menggunakan reducetrik untuk menetapkan baris STDIN yang berbeda ke variabel.

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

Cobalah secara online!

Io , 56 byte

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

Cobalah secara online!

2 Dingus Aug 16 2020 at 07:44

Ruby -nl , 34 byte

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

Cobalah secara online!

Membutuhkan \ $ n \ $ dari STDIN dan \ $ m \ $ sebagai argumen. Rangkaian \ $ n \ $ \ $ 2 (m + 1) \ $ kali, lalu dari string ini diambil substring dengan panjang \ $ d \ $ (di mana \ $ d \ $ adalah jumlah digit dalam \ $ n \ $ ) yang dimulai \ $ m (d + 1) \ $ karakter dari akhir. Dalam kode tersebut, $_adalah \$n\$dan ~/$/memberikan \ $ d \ $ .

Contoh

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

  1. Gabungan \ $ n \ $ \ $ 2 (m + 1) = 6 \ $ kali:123123123123123123
  2. Hitung mundur dari akhir \ $ m (d + 1) = 8 \ $ karakter:123123123123123123
  3. Ambil substring dengan panjang \ $ d = 3 \ $ :123123123123123123
2 DanielH. Aug 16 2020 at 07:42

Python 3.8 (pra-rilis) , 42 40 byte

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

Cobalah secara online!

2 JonathanAllan Aug 16 2020 at 04:49

Jelly , (4?) 5 byte

4 jika kami dapat menerima daftar digit (hapus yang terdepan D).

DṙN}Ḍ

Cobalah secara online!

Bagaimana?

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

Menyimpan 3 byte dengan mengingat bahwa Anda dapat membentuk sebagian besar operasi array pada string.

-1 byte dari @my pronoun adalah catatan monicareinstate yang m>mengambil argumen dalam urutan mana pun.

rr~m>~

Cobalah secara online

Penjelasan:

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

Versi lama, 7 byte:

q~\sm>~

Cobalah secara online

Penjelasan:

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

Taksi , 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.

Cobalah secara online!

Saya memilih untuk dipecat daripada mengorbankan byte yang dibutuhkan untuk kembali ke garasi pada akhirnya. Saya telah memeriksa input yang sangat panjang dan rotasi yang sangat panjang dan perolehan bersihnya positif sehingga Anda tidak pernah kehabisan bensin.


Diformat agar terbaca dan dengan komentar:

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

Cobalah secara online!

2 Adám Aug 18 2020 at 01:34

APL (Dyalog Extended) , 4 byte ( SBCS )

Fungsi infix diam-diam anonim. Mengambil string nsebagai argumen kanan dan angka msebagai argumen kiri.

⍎-⍛⌽

Cobalah secara online!

 mengeksekusi hasil

-⍛ meniadakan argumen kiri, lalu menggunakannya untuk

 memutar argumen yang benar secara siklis

1 J42161217 Aug 15 2020 at 14:42

Wolfram Language (Mathematica) , 43 byte

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

Cobalah secara 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 dari Dingus.

Cobalah secara online!

1 Neil Aug 15 2020 at 17:33

Retina 0.8.2 , 29 byte

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

Cobalah secara online! Tautan termasuk kasus uji. Mengambil masukan sebagai n,m. Penjelasan:

,.+
$*_

Ubah mmenjadi unary.

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

Putar n mwaktu. Ini adalah O (m³) karena cara regex backtrack mencoba menemukan kecocokan kedua. Pencocokan kanan-ke-kiri, menjangkarkan pertandingan di awal, atau menulis ulang kode untuk mengambil masukan karena m,nakan mengurangi kerumitan waktu (dengan biaya satu byte tentunya).

^0+

Hapus angka nol di depan.

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}

Cobalah di Scastie

1 Hackinet Aug 16 2020 at 15:37

PHP , 45 43 byte

Menyimpan 2 byte, sadar kita dapat mempersingkat nama variabel.

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

Cobalah secara online

Penjelasan:

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

Cobalah secara online!

1 nmjcman101 Aug 17 2020 at 23:22

V (vim) , 11 byte

Àñ$x0Pñó^0«

Cobalah secara 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