Tulis fungsi (atau subprogram setara) untuk menerima argumen bernilai integer tunggal dan mengembalikan nilai (yang diketik serupa) yang ditemukan dengan membalikkan urutan angka dasar-10 argumen.
Misalnya diberikan 76543 pengembalian 34567
Tulis fungsi (atau subprogram setara) untuk menerima argumen bernilai integer tunggal dan mengembalikan nilai (yang diketik serupa) yang ditemukan dengan membalikkan urutan angka dasar-10 argumen.
Misalnya diberikan 76543 pengembalian 34567
Jawaban:
‮n
ganti n
dengan nomor Anda
Your search -
- tidak cocok dengan dokumen apa pun.
data:text/html,&%238238;egnahcxEkcatS olleH
Python
int(str(76543)[::-1])
EDIT:
Solusi yang lebih pendek seperti yang disarankan oleh @gnibbler:
int(`76543`[::-1])
atau, jika di atas tidak jelas:
x=76543
int(`x`[::-1])
s[::-1]
jauh lebih cepat daripada''.join(reversed(s))
Universal (bahasa agnostik / mandiri )
Jika Anda hanya ingin menggunakan angka (hindari mengubah angka menjadi string) dan tidak ingin menggunakan perpustakaan tertentu (menjadi universal untuk bahasa apa pun):
x = 76543 # or whatever is your number
y = 0
while x > 0:
y *= 10
y += ( x %10 )
x /= 10 # int division
Ini adalah python, tetapi bisa dilakukan dalam bahasa apa pun, karena itu hanya metode matematika.
mod
dengan %
, itu valid Python;)
y=y*10+x%10
....
".|.":y
Di mana y adalah nilai Anda.
|.&.":
"reverse under do" yang merupakan terjemahan tugas yang cukup banyak.
Program runnable lengkap:
N.@
Di mana N
nomor Anda. Aturan mengatakan "terima argumen bernilai integer tunggal "; Di Befunge Anda hanya dapat memasukkan bilangan bulat dari 0 hingga 9.
Terinspirasi oleh jawaban Kiril Kirov di atas. Saya ingin tahu tentang sifat-sifat matematika membalik angka, jadi saya memutuskan untuk menyelidiki sedikit.
Ternyata jika Anda merencanakan perbedaan n - rev(n)
untuk bilangan asli n
di beberapa basis r
, Anda mendapatkan pola seperti ini ( (n - rev(n)) / (r - 1)
, untuk r=10
, dibungkus r
kolom, merah menunjukkan angka negatif):
Urutan ini dapat dihasilkan seperti itu (pseudocode):
for i=1 to r:
output 0
for m=0, 1, …
for k=1 to (r-1):
for d=1 to r^m:
for i=0 to (r-1):
output (r-1) * (r+1)^m * (k - i)
Jika Anda menyimpan nilai-nilai ini dalam daftar / array, maka Anda n - arr[n]
akan mendapatkan bentuk terbalik dari n
. Sekarang, untuk "golf matematis" ini, kita idealnya menginginkan ekspresi bentuk tertutup yang memberi kita nilai n: urutannya, sehingga kita bisa memiliki ekspresi bentuk tertutup untuk menyelesaikan seluruh tugas. Sayangnya, saya belum dapat menemukan ekspresi seperti itu ... tetapi kelihatannya itu mungkin. :(
Jadi ya, bukan kode-golf sebagai keingintahuan matematis, tetapi jika ada ekspresi bentuk tertutup dari urutan di atas mungkin sebenarnya berguna dalam pengiriman golf PL yang tepat.
f=read.reverse.show.(+0)
f=read.reverse.show.(+0)
?
(+0)
: Manusia yang sah! Meskipun secara teknis Anda tidak memerlukannya .(+0)
sama sekali, karena f
akan lebih polimorfik daripada yang dibutuhkan oleh masalah (diizinkan untuk mengembalikan output yang 'diketik dengan cara yang sama'). Saya akan mencukur 5 karakter tersebut.
:se ri<CR>C<C-R>"
x = 13456
x.to_s.reverse
.to_s.reverse.to_i
mematuhi spesifikasi.
Dimungkinkan untuk mengubah angka menjadi string, kemudian membalikkan string dan kemudian mengubah string itu kembali ke angka. Fitur semacam ini mungkin tersedia dalam semua bahasa. Jika Anda mencari metode yang lebih matematis maka ini mungkin membantu:
int n = 76543;
int r = 0;
while (n > 0) {
r *= 10;
r += n % 10;
n /= 10;
}
1111111119
r=lambda i:int(str(i)[::-1])
print(input()[::-1])
Saya menganggap beberapa contoh Python lain sebagai curang, atau setidaknya murah, karena menggunakan input hardcoded dan / atau tidak sepenuhnya memenuhi persyaratan.
`-1%~
Ini mengambil argumen pada stack dan meninggalkan hasilnya di stack. Saya mengeksploitasi opsi "subprogram" di spec: jika Anda bersikeras pada suatu fungsi, itu empat karakter lebih meninggalkannya di stack:
{`-1%~}:r
`-1%~
daripada `-1$~
(dan saya telah mengambil kebebasan mengedit jawaban Anda untuk mengatakan demikian).
Dalam skrip shell:
echo "your number"|rev
Semoga ini bermanfaat :)
rev<<<yournumber
, misalnya rev<<<132
(untuk bash / zsh, bukan per POSIX meskipun)
rev
cukup, pertanyaan tidak mengatakan itu memiliki menjadi fungsi. Anda dapat membandingkan rev
dengan fungsi bawaan, meskipun bukan satu.
Agak terlambat tapi
⍎⌽⍞
Jika Anda bersikeras pada fungsi
⍎∘⌽∘⍕
IntegerReverse
Ini tidak bersaing, karena fungsi ini hanya ditambahkan pada rilis 10.3 minggu lalu, tetapi untuk kelengkapan saya pikir saya akan menambahkan satu-satunya (saya pikir?) Built-in untuk tugas ini.
Anda dapat melakukan hal berikut di Jawa. Perhatikan bahwa ini dikonversi ke String dan kembali dan bukan solusi matematika.
public class test {
public static int reverseInt(int i) {
return Integer.valueOf((new StringBuffer(String.valueOf(i))).reverse().toString());
}
public static void main(String[] args) {
int i = 1234;
System.out.println("reverse("+i+") -> " + reverseInt(i));
}
}
43 karakter. num sebagai parameter ke fungsi:
num.toString().split('').reverse().join('')
(first(list(parse-integer(reverse(write-to-string '4279)))))
akan membuat Anda 9724.
(first(list
? parse-integer
sudah mengembalikan nomornya.
#
+#(.*)(.)/\2#\1
#/
Secara teknis, ini tidak masuk hitungan (rs dibuat awal tahun ini), tapi saya tidak melihat jawaban berbasis regex lain, dan saya pikir ini rapi.
#
Masukkan karakter pon di awal string. Ini digunakan sebagai penanda.
+#(.*)(.)/\2#\1
Terus tambahkan karakter terakhir dari string utama ke area sebelum marker hingga tidak ada karakter yang tersisa.
#/
Hapus penanda.