Setiap bilangan bulat positif dapat dinyatakan sebagai jumlah dari paling banyak tiga bilangan bulat palindromik positif di setiap basis b ≥5. Cilleruelo et al., 2017
Bilangan bulat positif adalah palindromik pada basis yang diberikan jika representasinya pada basis itu, tanpa nol di depan, membaca yang sama ke belakang. Berikut ini, hanya basis b = 10 yang akan dipertimbangkan.
Dekomposisi sebagai jumlah bilangan palindrom tidak unik . Misalnya, 5
dapat dinyatakan secara langsung sebagai 5
, atau sebagai jumlah 2, 3
. Demikian pula, 132
dapat diuraikan sebagai 44, 44, 44
atau sebagai 121, 11
.
Tantangan
Dengan bilangan bulat positif, hasilkan jumlah dekomposisi menjadi tiga atau lebih sedikit bilangan bulat positif yang palindromik pada basis 10.
Aturan tambahan
Algoritma yang digunakan harus bekerja untuk input besar yang sewenang-wenang. Namun, dapat diterima jika program dibatasi oleh memori, waktu atau batasan tipe data.
Input dan output dapat diambil dengan cara apa pun yang wajar . Format input dan output fleksibel seperti biasa.
Anda dapat memilih untuk menghasilkan satu atau beberapa dekomposisi yang valid untuk setiap input, selama format output tidak ambigu.
Program atau fungsi diizinkan, dalam bahasa pemrograman apa pun . Celah standar dilarang.
Kode terpendek dalam byte menang.
Contohnya
Karena input dapat memiliki banyak dekomposisi, ini adalah contoh daripada kasus uji. Setiap dekomposisi ditampilkan pada garis yang berbeda.
Input -> Output
5 -> 5
2, 3
15 -> 1, 3, 11
9, 6
21 -> 11, 9, 1
7, 7, 7
42 -> 22, 11, 9
2, 7, 33
132 -> 44, 44, 44
121, 11
345 -> 202, 44, 99
2, 343
1022 -> 989, 33
999, 22, 1
9265 -> 9229, 33, 3
8338, 828, 99
sumber
k=1
dank=3
.)k=1
(seperti dalam angka asli sudah merupakan palindrome), itu berarti Anda mengasumsikan 2 angka lainnya sama-sama 0. Jadi, jika 0 dapat diterima sebagai salah satu angka, angka apa pun yang harus dilakukan dengank=2
juga akan bekerjak=3
jika salah satu dari tiga angka adalah 0.Jawaban:
Brachylog , 7 byte
Cobalah online!
Anehnya tidak begitu lambat.
Penjelasan
sumber
.
dalam penjelasannya, dan(.)
? Tidak benar-benar mengenal Brachylog..
adalah variabel output.~+
,,ℕᵐ
dan↔ᵐ
merupakan predikat yang memiliki variabel kiri dan kanan. Duplikasi dari mereka.
hanya menunjukkan bahwa output terlibat langsung dalam masing-masing dari 3 panggilan predikat. Final(.)
ada di sini untuk menampilkan bahwa variabel output secara implisit adalah variabel terakhir dari program. Oleh karena itu, hubungan menyatakan terakhir adalah benar-benar.↔ᵐ.
yang berarti "pemetaan terbalik pada hasil output dalam output" .Python 2 ,
8279 byteCobalah online!
sumber
Jelly ,
121098 byteCobalah online!
Bagaimana itu bekerja
sumber
Python 2 , 117 byte
Cobalah online!
Mencetak daftar daftar, yang masing-masing merupakan solusi. Batang disimpan 9 byte.
sumber
c
dengan pengurangan dan gunakanfilter
filter(None
pukul aku juga saat aku sedang makan malam, haha.c → n-a-b
itu keren :)JavaScript (ES6),
115...8483 byteSelalu mengembalikan array tiga elemen, di mana entri yang tidak digunakan diisi dengan nol.
Uji kasus
Tampilkan cuplikan kode
sumber
R, 126 byte
145 byteTerima kasih kepada Giuseppe untuk bermain golf 19 byte
Cobalah online!
Penjelasan
R tidak memiliki cara asli untuk membalikkan string dan banyak operasi string default tidak berfungsi pada angka. Jadi pertama-tama kita mengonversi rangkaian bilangan bulat positif (ditambah 0) ke karakter.
Selanjutnya kita menghasilkan vektor 0 dan semua palindrom. Pembalikan string membutuhkan pemisahan setiap angka dengan karakter, membalik urutan vektor dan menempelkannya kembali bersama tanpa celah.
Selanjutnya saya ingin memeriksa semua kelompok tiga (di sinilah 0s penting), untungnya R memiliki fungsi kombinasi built in yang mengembalikan matriks, setiap kolom dalam kombinasi.
Saya menerapkan
colSums
fungsi ke matriks dan hanya menyimpan elemen yang sama dengan target yang disediakan.Akhirnya, karena ada dua 0s, setiap himpunan dua bilangan bulat positif akan digandakan jadi saya menggunakan fungsi unik pada kolom.
Outputnya adalah matriks di mana setiap kolom adalah himpunan bilangan bulat pallindromic positif yang dijumlahkan ke nilai target. Itu malas dan mengembalikan 0 ketika kurang dari 3 elemen digunakan.
sumber
Map
untuk menghasilkan palindrom!Jelly , 14 byte
Cobalah online!
Sangat, sangat tidak efisien.
sumber
Jelly , 17 byte
Cobalah online!
-6 byte berkat HyperNeutrino.
Keluaran semua cara. Namun output terdiri dari beberapa duplikat.
sumber
is palindrome
lolRŒḂÐfṗ3R¤YS⁼¥Ðf
Ohm v2 ,
131210 byteCobalah online!
sumber
Mathematica, 49 byte
Cobalah online!
mengembalikan semua solusi
-2 ~ MartinEnder ~ byte
sumber
#~IntegerPartitions~3~Select~AllTrue@PalindromeQ&
, Kupikir?Haskell ,
908679 byte-7 byte terima kasih kepada Laikoni!
Cobalah online!
Mengembalikan daftar semua solusi dengan duplikasi.
sumber
mapM
dan menyatakanf=filter
: Cobalah secara online!Java (OpenJDK 8) , 185 byte
Cobalah online!
Hapus 1 byte dari TIO untuk mendapatkan jumlah yang benar karena pengiriman tidak mengandung
;
after lambda.sumber
i++<--j
alih-alih++i<=--j
Proton , 117 byte
Cobalah online!
Menghasilkan solusi
sumber
Pyth ,
16 1210 byteCoba di sini!
Bagaimana itu bekerja
sumber
05AB1E , 17 byte
Cobalah online!
Keluarkan hasilnya dalam tiga daftar sebagai berikut:
Daftar palindromik dengan panjang 1 (angka asli IFF adalah palindromik).
Daftar panjang palindrom 2.
Daftar panjang palindrom 3.
sumber
Aksioma, 900 byte
kode uji
Jika kode ini harus mendekomposisi angka X dalam 1,2,3 palindrome, apa yang dilakukan kode ini, ia coba di dekat palindrom N <X dan mendekomposisi XN dalam 2 palindrom; jika dekomposisi XN ini berhasil mengembalikan 3 palindrome yang ditemukan; jika gagal, cobalah palindrome G <N <X sebelumnya dan coba dekomposisi XG dalam 2 palindrom dll. Hapus kode kode (tetapi ada kemungkinan bug)
hasil:
sumber
Java (OpenJDK 8) , 605 byte
Mencetak dupes tetapi tidak diblokir afaik
Cobalah online!
sumber
APL (Dyalog) , 51 byte
Cobalah online!
sumber
05AB1E , 8 byte
Cobalah online!
Penjelasan:
sumber
Perl 6 , 51 byte
Cobalah online!
grep { $_ eq .flip }, 1 .. $_
menghasilkan daftar semua nomor palindromic dari 1 ke nomor input.3 Rxx
mengulangi daftar itu tiga kali.[X]
mengurangi daftar-daftar-itu dengan operator produk-silangX
, menghasilkan daftar semua 3-tupel nomor palindrominc dari 1 hingga nomor input.first *.sum == $_
menemukan 3-tuple pertama yang jumlah ke nomor input.sumber
xx 3
.Python 3 , 106 byte
Cobalah online!
Dalam tautan TIO saya menggunakan versi yang lebih cepat (tetapi versi 1 byte lebih lama) yang mengambil hasil valid pertama sebagai generator, daripada membangun seluruh daftar kombinasi yang mungkin dan mengambil yang pertama.
sumber
Ruby , 84 byte
Buat daftar semua kemungkinan kombinasi 3 palindrom dari 0 hingga n, temukan yang pertama yang jumlahnya cocok, lalu pangkas nol.
Cobalah online!
sumber
Tambahkan ++ , 62 byte
Cobalah online!
~ 50 byte golf saat menulis penjelasan. Menentukan fungsi lambda yang mengembalikan daftar daftar yang berisi solusi.
Bagaimana itu bekerja
g
RÞg
g
Bagian selanjutnya dapat dibagi menjadi tiga bagian lebih lanjut:
[1 2 3 4 ...]
[[1] [2] [3] [4] ... ]
k
Fungsi ini pada dasarnya tidak melakukan apa pun. Ia menerima dua argumen dan membungkusnya dalam sebuah array. Namun, tabel cepat,
‽
adalah trik sulap di sini. Dibutuhkan dua daftar dan menghasilkan setiap pasangan elemen di antara kedua daftar itu. Jadi[1 2 3]
dan[4 5 6]
hasilkan[[1 4] [1 5] [1 6] [2 4] [2 5] [2 6] [3 4] [3 5] [3 6]]
. Kemudian mengambil argumen fungsionalnya (dalam hal inik
) dan menjalankan fungsi tersebut di atas setiap pasangan, yang, dalam hal ini, hanya mengembalikan pasangan apa adanya.€bF
l
sumber