Baru-baru ini, saya telah menemukan pemetaan bijective f dari bilangan bulat positif ke urutan terbatas, bersarang. Tujuan dari tantangan ini adalah untuk mengimplementasikannya dalam bahasa pilihan Anda.
Pemetaan
Mempertimbangkan sejumlah n dengan faktor-faktor mana . Kemudian:
Sebagai contoh:
Aturan
- Anda dapat menulis program lengkap atau fungsi untuk melakukan tugas ini.
- Output dapat dalam format apa pun yang dikenali sebagai urutan.
- Dibangun untuk faktorisasi prima, pengujian primality, dll . Diizinkan .
- Celah standar tidak diijinkan.
- Program Anda harus menyelesaikan test case terakhir dalam waktu kurang dari 10 menit pada mesin saya.
- Ini adalah kode-golf, jadi kode terpendek menang!
Uji Kasus
10
:{{},{{}},{}}
21
:{{{}},{},{{}}}
42
:{{{}},{},{{}},{}}
30030
:{{{}},{{}},{{}},{{}},{{}},{}}
44100
:{{{{}}},{{{}}},{{{}}},{},{}}
16777215
:{{{{}}},{{}},{{}},{},{{}},{{}},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{{}}}
16777213
: pastebin
Jawaban:
Pyth, 29 byte
Demonstrasi
Ini mendefinisikan fungsi
'
,, yang melakukan pemetaan yang diinginkan.Fungsi pembantu
y
,, melakukan pemetaan secara rekursif dengan dekomposisi utama. Kasing dasar dan dekomposisi utama dilakukan pada'
.sumber
CJam,
514844424139343331 byteCobalah online di juru bahasa CJam .
Terima kasih kepada @ MartinBüttner untuk bermain golf 3 byte!
Terima kasih kepada @PeterTaylor untuk bermain golf 3 byte dan membuka jalan untuk 1 lagi!
Setidaknya di komputer saya, mengunduh file membutuhkan waktu lebih lama daripada menjalankan program ...
I / O
Ini adalah fungsi bernama yang muncul dan integer dari STDIN dan mendorong array sebagai balasannya.
Karena CJam tidak membedakan antara array kosong dan string kosong - string hanyalah daftar yang hanya berisi karakter -, representasi string akan terlihat seperti ini:
merujuk pada array bersarang berikut ini
Verifikasi
Bagaimana itu bekerja
sumber
mf e=
jauh lebih baik daripada apa yang saya temukan ketika saya mengetuk tes kewarasan sementara pertanyaannya di kotak pasir, tapi satu perbaikan yang saya temukan yang belum Anda gunakan adalah melakukan pemetaan untuk keduanya sebagai(0a*+
- yaituri{}sa2*{mf_W=){mp},\fe=(0a*+0j\{)j}%*}j
. Dan ada peningkatan yang jauh lebih besar juga yang akan saya beri Anda beberapa jam headstart on ...{mf_W=)1|{mp},\fe=(0a*+{)J}%}:J
1|
. Terima kasih lagi!Mathematica, 88 byte
sumber