Tantangan ini merupakan penghargaan bagi pengguna PPCG, Dennis, karena memenangkan bagian perampok dari The Programming Language Quiz .
Melihat halaman profil PPCG Dennis, kita dapat melihat beberapa hal yang cukup mengesankan:
Dia saat ini memiliki lebih dari enam puluh delapan ribu reputasi, menjadikannya nomor dua di seluruh rep , melampaui tempat ketiga dengan hampir tiga puluh ribu. Dia baru-baru ini memenangkan pemilihan kami untuk moderator baru dan mendapatkan berlian baru yang mengilap di sebelah namanya. Tapi saya pribadi berpikir bagian paling menarik tentang Dennis adalah nomor ID pengguna PPCG-nya: 12012.
Pada pandangan pertama 12012
hampir terlihat seperti palindrom , angka yang membaca sama ketika dibalik, tetapi sedikit batal. Itu bisa menjadi palindrome 21012
jika kita menukar posisi yang pertama 1
dan 2
, dan itu bisa menjadi palindrom 12021
jika kita menukar yang terakhir 1
dan yang lain 2
. Juga, mengikuti konvensi bahwa angka nol terdepan dalam angka tidak ditulis, bertukar angka pertama 1
dan 0
hasilnya 02112
atau lebih tepatnya 2112
yang merupakan palindrom lain.
Mari kita mendefinisikan bilangan Dennis sebagai bilangan bulat positif yang bukan palindromik itu sendiri tetapi dapat dibuat menjadi palindrom dengan menukar posisi setidaknya satu pasangan dari dua digit. The rangka dari sejumlah Dennis adalah jumlah pasangan yang berbeda dari angka yang dapat ditukarkan untuk membuat (tidak selalu berbeda) palindrom.
Jadi urutan 12012
adalah 3 sejak 3 pasang yang berbeda dari digit ( 12012
, , ) dapat ditukarkan sekitar untuk menghasilkan palindrom. kebetulan menjadi urutan terkecil 3 nomor Dennis.12012
12012
12012
10
adalah nomor Dennis terkecil dan memiliki urutan 1 karena beralih di sekitar 1
dan 0
memberi 01
alias 1
yang merupakan palindrome.
Nol terkemuka imajiner nomor tidak dihitung sebagai digit yang dapat diganti. Misalnya, mengubah 8908
ke 08908
dan menukar dua digit pertama untuk mendapatkan palindrom yang 80908
tidak valid. 8908
bukan nomor Dennis.
Angka-angka non-Dennis dapat dikatakan memiliki pesanan 0.
Tantangan
Tulis program atau fungsi yang mengambil dalam bilangan bulat positif N dan mencetak atau mengembalikan angka Dennis terkecil ke-N beserta urutannya dalam beberapa format yang masuk akal seperti 12012 3
atau (12012, 3)
.
Sebagai contoh, 12012
adalah angka Dennis ke-774 jadi jika 774
input untuk program Anda, hasilnya harus seperti 12012 3
. (Anehnya, 774 adalah nomor Dennis lain.)
Kode terpendek dalam byte menang.
Berikut adalah 20 nomor Dennis pertama dan pesanan mereka untuk referensi:
N Dennis Order
1 10 1
2 20 1
3 30 1
4 40 1
5 50 1
6 60 1
7 70 1
8 80 1
9 90 1
10 100 1
11 110 2
12 112 1
13 113 1
14 114 1
15 115 1
16 116 1
17 117 1
18 118 1
19 119 1
20 122 1