Program Anda harus mengambil input ( n
untuk tujuan deskripsi) dan mengeluarkan semua permutasi dari angka yang n
panjang digit tanpa digit berulang, di mana masing-masing digit sebelum dan termasuk indeksnya dapat dibagi dengan tempat di nomor yang jatuh. .
Anda dapat membaca tentang angka ajaib di sini .
Aturan:
1 <= n <= 10
- Tidak ada digit yang dapat diulang
- 0 di depan harus ada (jika ada)
x
Digit ke -1 dari angka (dimulai dengan karakter pertama sebagai 1) harus dapat dibagi denganx
, yaitu dalam30685
,3
dapat dibagi dengan 1,30
dapat dibagi dengan 2,306
dapat dibagi dengan 3,3068
dapat dibagi dengan 4, dan dapat dibagi dengan 4, dan30685
dapat dibagi dengan 5 .- Program harus mengambil integer sebagai input (melalui baris perintah, sebagai argumen fungsi, dll.) Dan mencetak semua permutasi yang memenuhi aturan.
- Output harus dipisahkan oleh 1 atau lebih karakter spasi
- Permutasi dapat dimulai dan dengan nol (jadi itu bukan angka ajaib secara teknis ).
- Urutan output tidak masalah
- Anda tidak perlu menangani input yang tidak terduga
- Karakter paling tidak dalam bytes menang
Contohnya
Diberikan 1:
0
1
2
3
4
5
6
7
8
9
Diberikan 2:
02
04
06
08
10
12
14
16
18
20
24
26
28
30
32
34
36
38
40
42
46
48
50
52
54
56
58
60
62
64
68
70
72
74
76
78
80
82
84
86
90
92
94
96
98
Diberikan 10:
3816547290
Kredit ke Pizza Hut & John H. Conway untuk teka-teki asli (Opsi A). Terima kasih kepada @Mego dan @ sp3000 untuk tautan mereka .
code-golf
permutations
Davis Bung
sumber
sumber
Jawaban:
Jelly ,
201716 byteIni sangat lambat dan memori intensif ... Coba online!
Bagaimana itu bekerja
sumber
JavaScript (Firefox 30-57), 77 byte
Sunting: Disimpan 1 byte berkat @ edc65.
sumber
...of"012...
Pyth, 19 byte
Demonstrasi
Solusi brute force. Penjelasan untuk diikuti. Inspirasi terima kasih kepada FryAmTheEggman
22 byte
Demonstrasi
Angka dibangun dan disimpan sebagai string, dan hanya dikonversi ke int untuk memeriksa pembagian.
Penjelasan:
sumber
._
dan beberapa hal lain, tapi itu lebih lambat untuk input besar:jjLkf!s.e%ib10hk._T.PUT
MATL , 30 byte
Cobalah online!
Sangat lambat. Untuk
input 3
itu dibutuhkan beberapa detik dalam kompiler online. Untuk melihat angka yang muncul satu per satu, masukkan aD
di akhir kode .Penjelasan
sumber
3
saya dapat melihat Anda memiliki indikasi pasangan (misalnya 026). Juga penjelasan akan dihargaiRuby, 87 byte
Solusi rekursif dasar.
Jika Anda diizinkan untuk mengembalikan daftar permutasi alih-alih mencetak, 85 byte:
sumber
Python, 132 byte
Menjatuhkan 26 byte dengan menghilangkan
itertools
, terima kasih kepada Sp3000 untuk membuat saya sadar bahwa saya seharusnya tidak menggunakannya.Turun 2 byte dengan menggunakan pemahaman daftar daripada
filter
, terima kasih lagi untuk Sp3000 untuk tipnya.Cobalah online: Python 2 , Python 3
sumber