pengantar
Anda seorang kriminal yang ditugaskan mencuri beberapa rencana rahasia dari startup teknologi baru Dejavu. Anda menyelinap masuk melalui dinding belakang, tetapi menemukan pintu yang membutuhkan pin untuk membukanya. Anda mengenali merek kunci dan tahu bahwa diperlukan pin 5 digit menggunakan semua angka dari 0 hingga 4. Setelah setiap digit dimasukkan, kunci memeriksa 5 digit terakhir yang dimasukkan dan terbuka jika kodenya benar. Anda harus melewati kunci ini, dan cepat.
Singkatnya Superpermutations
Permutasi adalah semua kombinasi yang mungkin dari satu set digit tertentu. misalnya, semua permutasi dari angka 0, 1, 2 adalah:
012, 021, 102, 120, 201, dan 210.
Jika kami menggabungkan semua permutasi ini bersama-sama, kami mendapatkan superpermutasi:
012021102120201210
superpermutasi ini berisi semua permutasi 0, 1, 2, tetapi dimungkinkan untuk membuatnya lebih pendek dari ini. Saya akan melewatkan sedikit di sini, tetapi superpermutasi terpendek dari angka-angka ini adalah:
012010210
Untuk maksud dan tujuan kami, ini pada dasarnya adalah string terpendek dari digit yang berisi semua kemungkinan permutasi dari digit tersebut, yaitu superpermutasi.
Tugas
Tugas Anda sedikit lebih sulit daripada contoh superpermutasi seperti yang ditunjukkan di atas, karena Anda memiliki dua digit lebih untuk dikhawatirkan. - Jika Anda belum membaca tentang superpermutasi, atau contoh saya di atas agak tidak jelas, saya sangat menyarankan Anda membaca artikel hebat ini oleh Patrick Honner pada subjek (tantangan ini sangat terinspirasi oleh artikelnya, jadi kudos kepadanya): https://www.quantamagazine.org/unscrambling-the-hidden-secrets-of-superpermutations-20190116/ . Tujuan Anda adalah menulis program sesingkat mungkin yang menghasilkan superpermutasi angka 0 hingga 4.
Mencetak gol
Program Anda tidak mengambil input apa pun, dan menghasilkan superpermutasi digit dari 0 hingga 4. Superpermutasi yang dihasilkan ini harus dicetak ke konsol atau ditampilkan secara jelas kepada pengguna sejauh yang disediakan oleh bahasa pilihan Anda. Ini tidak harus permutasi terpendek yang mungkin, hanya saja harus superpermutasi yang valid. Karena itu, tujuannya adalah untuk menulis program terpendek dengan superpermutasi terpendek, jadi Anda harus menghitung skor Anda seperti:
ukuran file (byte) * dihasilkan panjang superpermutasi (digit)
misalnya, jika saya memiliki program 40 byte, dan superpermutasi saya adalah 153 digit, skor saya akan:
40 * 153 = 6120
seperti biasa, tujuannya adalah untuk mendapatkan skor ini serendah mungkin.
Templat
Inilah cara Anda memposting jawaban Anda:
Bahasa | Skor
tautan ke kode di lingkungan kerja (jika mungkin)
code snippet
penjelasan kode, dll.
Finalitas
Ini adalah salah satu pertanyaan pertama saya di situs ini. Jadi tolong beri tahu saya jika saya kehilangan sesuatu atau sebagian dari tantangan saya tidak jelas. Terima kasih, dan bersenang-senang bermain golf!
sumber
Jawaban:
05AB1E , skor = 1673 (7 byte · 239)
Cobalah online!
Bagaimana itu bekerja
Pyth , skor = 1944 (9 byte · 216)
Cobalah online!
Bagaimana itu bekerja
sumber
vy3yJ
menghemat satu bytem+d
->+R
menyimpan satu byte.Brachylog , skor = 2907 (19 byte × 153)
Terlalu lambat untuk melihat apa-apa, tetapi jika Anda mengubah
4
oleh2
Anda dapat mengujinya: Cobalah secara online!Ini menemukan superpermutasi terpendek seperti:
sumber
JavaScript (ES6), 26975 (325 * 83 byte)
Dengan sistem penilaian ini, ada sedikit ruang untuk sesuatu antara 'hardcode the optimal supermutation' dan 'hanya menggunakan built-in singkat untuk menggabungkan semua permutasi' , setidaknya di non-esolang.
Bagaimanapun, ini adalah upaya.
Cobalah online!
Ini menghasilkan string 325 byte:
sumber
26975/153-153>23
)n
akhiran default yangconsole.log
dihasilkan)Python 2 , Skor:
24.32715.14712.85212.628 (154 * 82 byte)Cobalah online!
Juga:
Python 2 , 12628 (154 * 82 byte)
Cobalah online!
sumber
05AB1E , skor:
53552160 (216 * 10 byte )Port of @AndersKaseorg 's Pyth menjawab , jadi pastikan untuk membesarkan hatinya!
Cobalah online.
Penjelasan:
sumber
Oktaf , 27 x 442 = 11934
Cobalah online!
Jadi, ternyata, secara naif menghasilkan semua permutasi dan kemudian memotong ke substring terpendek yang masih superpermutasi yang valid lebih pendek daripada menghasilkan superpermutasi terpendek. Sayangnya, kali ini nilainya bukan palindrome.
Oktaf , 97 x 153 = 14841
Cobalah online!
Entri diperbarui untuk beberapa hal
a++
tidak diterapkan untuk nomor simbolis.contains()
tidak diterapkan dalam Oktaf. Diganti denganany(regexp())
.a
superpermutasi sepanjang 153-panjang. Ini memungkinkan solusi diverifikasi.sumber
CJam (6 * 240 = 1440)
Demo online , validasi (menampilkan indeks di mana setiap permutasi
0..4
dapat ditemukan; perlu meratakan output karena program asli memberikan output yang sesuai untuk stdout tetapi apa yang ditempatkan di stack tidak langsung dapat digunakan).Pendekatan yang dicuri dari Sanchises , meskipun urutan permutasi CJam berbeda, memberikan substring yang berbeda.
CJam (22 * 207 = 4554)
Demo online , validasi .
Pembedahan
Ini menggunakan konstruksi rekursif sederhana.
sumber
Jelly , 3000 (600 * 5 byte)
Cobalah online!
sumber
Arang , 29 byte, panjang keluaran 153, skor 4437
Cobalah online! Tautan adalah untuk mengucapkan versi kode. Penjelasan: Seperti @TFeld, saya hanya mencetak setengah dari superpermutasi dan mencerminkannya. Saya menghitung superpermutasi menggunakan kode berikut:
Ini diterjemahkan ke program 45-byte di Charcoal sehingga akan mencetak 6885.
sumber
MATL , 16 x 442 = 7072
Cobalah online!
Port MATL jawaban Octave saya. -442 terima kasih kepada Luis Mendo
sumber
Japt -P, 2376 (11 x 216)
Cobalah!
-1 byte terima kasih kepada @ Shaggy!
Port of Anders Kaseorg's Pyth menjawab .
sumber
q<space>
;)Perl 6 , 7191 (153 * 47 byte)
Cobalah online!
Menemukan nomor pertama yang berisi semua permutasi dari angka 0 hingga 4. Ini akan membutuhkan waktu lama untuk dieksekusi, tetapi Anda dapat mengujinya dengan dua permutasi pertama
0
dan0,1
sumber
Bahasa Wolfram (Mathematica) , 153 * 95 byte, 14535
Cobalah online!
sumber