pengantar
Xenodrome di basis n adalah bilangan bulat di mana semua digit di basis n berbeda. Berikut adalah beberapa urutan xenodrom OEIS.
Sebagai contoh, dalam basis 16, FACE
, 42
dan FEDCBA9876543210
beberapa xenodromes (mana yang 64206
, 66
dan 18364758544493064720
dalam basis 10), tetapi 11
dan DEFACED
tidak.
Tantangan
Dengan basis input, n , mengeluarkan semua xenodrom untuk basis itu di basis 10 .
Outputnya harus dalam urutan paling sedikit hingga terbesar. Harus jelas di mana istilah dalam urutan berakhir dan yang baru dimulai (misalnya [0, 1, 2]
jelas di mana 012
tidak.)
n akan menjadi bilangan bulat lebih besar dari 0.
Klarifikasi
Tantangan ini tidak IO khusus dalam basis 10 untuk menghindari penanganan bilangan bulat dan basis mereka sebagai string. Tantangannya adalah secara abstrak menangani basis apa pun. Karena itu, saya menambahkan aturan tambahan ini:
Integer tidak dapat disimpan sebagai string dalam basis selain basis 10.
Program Anda harus dapat secara teoritis menangani cukup tinggi n jika tidak ada waktu, memori, presisi atau batasan teknis lainnya dalam pelaksanaan bahasa.
Ini adalah kode-golf , jadi program terpendek, dalam byte, menang.
Contoh Input dan Output
1 # Input
0 # Output
2
0, 1, 2
3
0, 1, 2, 3, 5, 6, 7, 11, 15, 19, 21
4
0, 1, 2, 3, 4, 6, 7, 8, 9, 11, 12, 13, 14, 18, 19, 24, 27, 28, 30, 33, 35, 36, 39, 44, 45, 49, 50, 52, 54, 56, 57, 75, 78, 99, 108, 114, 120, 135, 141, 147, 156, 177, 180, 198, 201, 210, 216, 225, 228
ssize_t
. Apakah melanggar dengan cara ini dapat diterima?Jawaban:
Pyth , 8 byte
Memfilter angka dalam [0, n ^ n - 1] karena tidak memiliki elemen duplikat di pangkalan n . Konversi basis di Pyth akan bekerja dengan basis apa pun, tetapi karena ini terlihat pada daftar angka yang meningkat sangat cepat, akhirnya tidak akan dapat menyimpan nilai dalam memori.
Cobalah online!
Penjelasan:
sumber
Python 2, 87 byte
Mencetak garis kosong ekstra untuk non-xenodromes:
sumber
Jelly ,
98 byteTerima kasih kepada @JonathanAllan untuk bermain golf 1 byte!
Cobalah online! atau verifikasi semua kasus uji .
Bagaimana itu bekerja
sumber
Jelly , 12 byte
TryItOnline!
Akan bekerja untuk apa saja
n
, mengingat memori yang cukup, konversi basis Jelly tidak membatasi.Bagaimana?
sumber
JavaScript (ES7), 86 byte
sumber
1
(Haruskah keluaran[0]
, tetapi RangeErrors.)37
jika presisi tidak menjadi masalah, yang saya pikir membuatnya tidak valid ...n
dari1
ke13
sebelum floating-point presisi membunuh itu.Perl 6 , 47 byte
Mengembalikan Seq . ( Seq adalah pembungkus Iterable dasar untuk Iterator s)
Dengan input
16
dibutuhkan 20 detik untuk menghitung elemen 53905 dari Seq (87887
).Diperluas:
sumber
Batch,
204200 byteTidak akan berfungsi untuk n> 9 karena Batch hanya memiliki aritmatika 32-bit. Mudah, Batch mengevaluasi
f &= b ^= f = 1 << j % n
sebagaif = 1 << j % n, b = b ^ f, f = f & b
bukanf = f & (b = b ^ (f = 1 << j % n))
.sumber
Mathematica,
5948 byteBerisi karakter U + F4A1 "Penggunaan Pribadi"
Penjelasan
Hasilkan
{1, 2, ..., n^n}
. Kurangi 1. (hasil{0, 1, ..., n^n - 1}
)Fungsi Boolean:
True
jika setiap digit muncul paling banyak satu kali di basisn
.Dari daftar
{0, 1, ..., n^n - 1}
, pilih yang memberiTrue
ketika fungsi Boolean di atas diterapkan.Versi 59 byte
sumber
Mathematica,
4855 byte(Ruang triple antara
x
s perlu diganti dengan karakter 3-byte \ uF4A1 untuk membuat kode berfungsi.)Fungsi argumen tunggal yang tidak disebutkan namanya. Alih-alih menguji bilangan bulat untuk xenodromicity, ia hanya menghasilkan semua permutasi yang mungkin dari himpunan bagian dari angka yang diizinkan (yang secara otomatis menghindari pengulangan) dan mengubah bilangan bulat yang sesuai ke basis 10. Setiap xenodrome dihasilkan dua kali, baik dengan dan tanpa 0 yang memimpin;
Union
menghapus duplikat dan mengurutkan daftar untuk boot.sumber
2
. Fungsi memberi{0, 1}
. Saya percaya Anda perlu,Permutations[Range@#-1, #]
bukanSubsets[Range@#-1]
.