Urutan reverse-then-add (RTA) adalah urutan yang diperoleh dengan menambahkan nomor ke kebalikannya, dan mengulangi proses pada hasilnya. Untuk mis.,
Dengan demikian, urutan RTA 5 berisi 10, 11, 22, 44, 88, 176, dll.
The RTA akar dari sebuah nomor adalah jumlah terkecil yang baik sama dengan atau memberikan kenaikan gaji untuk dalam urutan RTA nya.
Misalnya, 44 ditemukan dalam urutan RTA 5, 10, 11, 13, 22, 31, dll. Dari jumlah tersebut, 5 adalah yang terkecil, dan karenanya RTAroot (44) = 5.
72 bukan bagian dari urutan RTA angka apa pun, dan karenanya dianggap sebagai akar RTA-nya sendiri.
Input adalah bilangan bulat positif dalam rentang yang bahasa Anda bisa tangani secara alami.
Output adalah akar RTA dari angka yang diberikan, sebagaimana didefinisikan di atas.
Uji kasus
Input
Output
44
5
72
72
132
3
143
49
1111
1
999
999
OEIS terkait: A067031 . Output akan berupa angka dari urutan ini.
Brachylog ,
2422 byte{{
dan}}
Penjelasan
maaf untuk penjelasan miring, ini adalah yang terbaik yang bisa saya buat
Cobalah online!
sumber
{|↰₁}
sana sederhana namun cemerlang. Kerja bagus!Haskell ,
5957 byte-2 bytes terima kasih kepada user1472751 (menggunakan detik
until
bukannya daftar-pemahaman &head
)!Cobalah online!
Penjelasan
Ini akan dievaluasi untuk
True
untuk setiap RTA-root:Istilah
(+)<*>read.reverse.show
ini adalah versi golf dariyang menambahkan angka ke dirinya sendiri terbalik.
Fungsi ini
until
berulang kali berlaku(+)<*>read.reverse.show
hingga melampaui target kami.Membungkus semua ini dengan
until
memulai lagi dengan1
dan menambahkan 1 dengan(+1)
akan menemukan RTA-root pertama.Jika tidak ada RTA-root yang tepat
n
, kita akhirnya sampai din
tempat yanguntil
tidak menerapkan fungsi itun<=n
.sumber
until
untuk loop luar juga: TIO05AB1E , 7 byte
Menggunakan versi baru 05AB1E (ditulis ulang dalam Elixir).
Kode
Cobalah online!
Penjelasan
sumber
j
punya makna khusus dalam lingkungan rekursif? Saya hanya tahu tentang₁
through₆
danλ
dirinya dalam lingkungan rekursif. Apakah ada lagi selain ituj
? EDIT: Ah, saya melihat sesuatu tentang£
juga dalam kode sumber . Di mana digunakan untuk?j
pada dasarnya memeriksa apakah nilai input dalam urutan.£
pastikan itu mengembalikan nilai n pertama dari urutan (sama sepertiλ<...>}¹£
).Jelly ,
1211 byteTerima kasih kepada @JonathanAllan untuk bermain golf 1 byte!
Cobalah online!
Bagaimana itu bekerja
sumber
Ruby,
6657 byteCobalah online!
Fungsi rekursif yang berulang kali "membatalkan" operasi RTA hingga tiba di nomor yang tidak dapat diproduksi olehnya, lalu mengembalikan minimum.
Alih-alih menggunakan
filter
, yang panjang, saya malah hanyamap
berkisar dari 1 hingga angka. Untuk setiap m dalam kisaran ini, jika m + rev (m) adalah angka, ia memanggil fungsi secara rekursif pada m ; jika tidak, ia mengembalikan n . Ini sama-sama menghilangkan kebutuhan untuk afilter
dan memberi kita kasus dasar dari f (n) = n gratis.Sorotan termasuk menyimpan satu byte dengan
Integer#digits
:Yang terakhir akan menjadi satu byte lebih pendek, tetapi sayangnya, Ruby mem-parsing angka dimulai dengan
0
sebagai oktal.sumber
Python 2 , 70 byte
Cobalah online!
sumber
Pyth , 12 byte
Lihatlah suite tes!
Sangat cepat dan efisien. Semua test case berjalan sekaligus membutuhkan waktu kurang dari 2 detik.
Bagaimana itu bekerja
sumber
05AB1E , 13 byte
Cobalah online!
Penjelasan
sumber
global_counter
..>.>JavaScript (ES6), 61 byte
Cobalah online!
Berkomentar
sumber
05AB1E ,
211615 byte-1 byte terima kasih kepada @Emigna .
Cobalah online.
Penjelasan:
sumber
Arang , 33 byte
Cobalah online! Tautan adalah untuk mengucapkan versi kode. Penjelasan:
Cetak panjang akhirkamu yang merupakan root yang diinginkan.
sumber
MATL , 17 byte
Cobalah online!
Penjelasan
sumber
:!`tG=~yV2&PU*+tG>~*tXzG=A~]f1)
Coba online!Java 8, 103 byte
Cobalah online.
Penjelasan:
Membalik bilangan secara aritmetika lebih panjang 1 byte ( 104 byte ):
Cobalah online.
sumber
C (gcc) ,
12010099 byteCobalah online!
Input yang diberikan
i
, memeriksa setiap integer darii
ke 0 untuk urutan yang mengandungi
.i
adalah nilai inputo
adalah nilai output (root minimum yang ditemukan sejauh ini)a
apakah integer saat ini sedang diperiksab
adalah elemena
urutan saat inic
dand
digunakan untuk menambahb
kebalikannyasumber
-DL=for
akan menghemat 2 byte.i=o;
jika Anda menggunakan-O0
, menghemat 5 byte.Japt ,
161511 byteCobalah
sumber
Physica , 57 byte
Kredit untuk metode ini jatuh ke Doorknob .
Cobalah online!
sumber
C (gcc) , 89 byte
Saya menjalankan setiap urutan dalam [1, n ) sampai saya mendapatkan kecocokan; nol berbahan khusus karena tidak berakhir.
Cobalah online!
sumber