Berdasarkan pesan obrolan
Tantangan
Diberikan nomor input n > 9
, buat kebalikannya, abaikan angka nol di depan. Kemudian, membangun daftar semua faktor utama yang jumlah dan yang terbalik tidak memiliki kesamaan. Lipat gandakan faktor-faktor tersebut bersama-sama untuk membuat Angka Faktor Tidak Biasa dari input.
Atau, dengan kata lain: jika rev(n)
menunjukkan pembalikan desimal bilangan bulat n
, hitung produk n
dan rev(n)
dibagi dengan kuadrat gcd(n, rev(n))
.
Keluarkan nomor itu.
Contoh yang berhasil
Misalnya, kembali 2244
ke 4422
. Faktor utama yang pertama adalah [2, 2, 3, 11, 17]
dan faktor utama kebalikannya [2, 3, 11, 67]
. Angka-angka yang tidak dalam multiplisitas umum adalah [2, 17, 67]
, demikian 2278
juga output.
Untuk contoh lain, 1234
balik ke 4321
. Produk ini 5332114
dan GCD adalah 1
, sehingga output 5332114
.
Klarifikasi lebih lanjut
Jelas bilangan palindromik akan memiliki semua faktor yang sama dengan kebalikannya, sehingga dalam kasus seperti itu outputnya adalah 1
( n*n/n^2
). Jelas, itu juga mungkin untuk output menjadi perkalian semua faktor (yaitu, gcd adalah 1 - input dan kebalikannya adalah co-prime), seperti dalam kasus 1234
contoh.
Aturan
- Input dan output dapat dianggap sesuai dengan tipe integer asli bahasa Anda.
- Input dan output dapat diberikan dalam format apa pun yang nyaman .
- Program lengkap atau fungsi dapat diterima. Jika suatu fungsi, Anda dapat mengembalikan output daripada mencetaknya.
- Jika memungkinkan, harap sertakan tautan ke lingkungan pengujian online agar orang lain dapat mencoba kode Anda!
- Celah standar dilarang.
- Ini adalah kode-golf sehingga semua aturan golf biasa berlaku, dan kode terpendek (dalam byte) menang.
Contohnya
in
out
17
1207
208
41704
315
1995
23876
101222302
sumber
1995
(saya percaya)Jawaban:
05AB1E , 6 byte
Kode
Menggunakan penyandian 05AB1E . Cobalah online!
Penjelasan
sumber
J, 18 byte
Cobalah online!
Atau (kredit ke pendekatan @ Adnan untuk yang kedua),
J, 15 byte (solusi @ miles)
Penjelasan
Ini hanyalah implementasi langsung dari algoritma yang diberikan oleh OP.
Penjelasan, solusi @ miles
Sangat pintar.
sumber
*/@(,%+.)|.&.":
Mathematica, 33 byte
Cobalah online!
sumber
Jelly , 8 byte
Cobalah online!
sumber
DU
bukannyaṚ
)Ṛ
pada integer membalikkan angka tetapi tidak mengkonversi kembali ke integer.JavaScript (ES7),
6764 byteBegitu banyak byte hanya untuk membalikkan nomor :(
Mengambil input sebagai string.
Cobalah
sumber
Haskell, 44 byte
Cobalah online!
sumber
R,
10889 bytes-19 bytes thanks to plannapus for his gcd algorithm
This will attempt to allocate at least one vector of size
4*n
bytes (and I think as many as 4), so this will throw a memory error for sufficiently largen
.Try it online!
sumber
Python 3,
7368 bytes-5 bytes thanks to Mr. Xcoder.
Try it online!
sumber
MATL,
131211 bytesTry it online! Or verify all test cases.
Explanation
sumber
Neim, 11 bytes
Try it online!
No GCD built-in. ;-;
sumber
Husk, 10 bytes
Try it online!
-1 terima kasih kepada H.PWiz .
-1 berkat Zgarb .
sumber
Japt ,
131211 byteCobalah
Penjelasan
Input bilangan bulat implisit
U
. Baris kosong di awal, mencegah baris berikut dari menimpaU
Konversi
U
ke string (s
), balikkan (w
), konversikan kembali ke integer dan tetapkan ke variabelV
.Kalikan
U
denganV
.Membagi.
GCD dari
V
danU
.Kuadrat. Output implisit bilangan bulat yang dihasilkan.
Alternatif, 13 byte
Hanya karena saya suka bisa menggunakan
N
.Cobalah
sumber
Pyth, 13 bytes
Try it here!
Pyth, 15 bytes
This uses Adnan's approach and takes input as a String.
Try it here
sumber
Kode Mesin x86, 39 byte
Fungsi di atas menghitung "nomor faktor tidak biasa" dari parameter input yang ditentukan. Mengikuti konvensi panggilan panggil __fastcall berbasis , parameter dilewatkan dalam
ECX
register. Hasilnya dikembalikan dalamEAX
register, seperti semua konvensi pemanggilan x86.Cobalah online!
Ini membutuhkan waktu yang sangat lama untuk menulis dalam bentuk yang begitu kompak, tetapi itu adalah latihan yang menyenangkan. Banyak contortions untuk mendapatkan penjadwalan register seoptimal mungkin, dalam batasan
DIV
operan implisit instruksi x86 dan mencoba menggunakan penyandian singkatMUL
danXCHG
instruksi kapan pun memungkinkan. Saya akan sangat ingin tahu apakah seseorang dapat memikirkan cara lain untuk mempersingkat lebih lanjut. Otak saya cukup digoreng pada akhirnya. Berterimakasihlah kepada seorang kompiler saat Anda melihatnya nanti! (Meskipun ini adalah kode yang jauh lebih baik daripada yang dihasilkan oleh kompiler ... Terutama jika Anda mengubah sedikit tanpa batasan ukuran, menghapus hal-hal sepertiXCHG
.)sumber
Perl 5 , 72 byte
71 byte kode + 1 bendera (
-p
)Cobalah online!
sumber
Pyke , 8 byte
Coba di sini!
Mengambil input sebagai string.
sumber
Python 2 , 70 byte
Terima kasih kepada saya cri everytim .
Cobalah online!
Python 2 , 77 byte
Perhatikan bahwa dalam Python 2, Anda tidak dapat menggunakan
math.gcd()
metode ini, dan Anda harus melakukannya "dengan tangan".Cobalah online!
sumber
gcd
sebagaifractions.gcd
.math.gcd
.Ohm , 9 byte
Cobalah online!
sumber
Java 8,
158150148138125123116107+ 19byteCobalah online!
sumber
t!=0
byt>0
, since t will never be negative.f*r/(i*i)
is the same asf/i*r/i
. You can dropf=t;
andr=i;
if you chain the assignment ofi
andt
.while(t>0)t=i%(i=t);
(-11 bytes).