Putar nomor
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
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
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.
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
05AB1E , 4 byte
(._ï
Cobalah secara online!
Penjelasan
(._ï
( : get negative of m
._ : rotate n left negative m times
ï : remove leading zeros
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.
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.
Perl 5 + -pl, 26 byte
eval'$_=chop.$_;'x<>;$_|=0
Cobalah secara online!
APL + WIN, 8 7 byte
Perintah untuk n sebagai integer dan m sebagai string:
⍎(-⎕)⌽⎕
Cobalah secara online! Atas kebaikan Dyalog Classic
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!
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.
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
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.
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
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.
Java (JDK) , 66 byte
(n,x)->new Long((""+n+n).substring(x=(n=(""+n).length())-x%n,x+n))
Cobalah secara online!
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
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!
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 \ $ :
- Gabungan \ $ n \ $ \ $ 2 (m + 1) = 6 \ $ kali:
123123123123123123 - Hitung mundur dari akhir \ $ m (d + 1) = 8 \ $ karakter:
123123123123123123 - Ambil substring dengan panjang \ $ d = 3 \ $ :
123123123123123123
Python 3.8 (pra-rilis) , 42 40 byte
lambda x,r:int(x[(a:=-r%len(x)):]+x[:a])
Cobalah secara online!
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
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
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!
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
Wolfram Language (Mathematica) , 43 byte
FromDigits@RotateRight[IntegerDigits@#,#2]&
Cobalah secara online!
Ruby , 44 40 byte
->a,b{a.to_s.chars.rotate(-b).join.to_i}
-4 dari Dingus.
Cobalah secara online!
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.
Scala, 61 byte
(n,m)=>{val s=n+""size;val(a,b)=n+""splitAt s-m%s;b++a toInt}
Cobalah di Scastie
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.
JavaScript (V8) , 47 byte
(n,m,k=(e=n+'').length)=>+(e+e).substr(k-m%k,k)
Cobalah secara online!
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