Diberikan bilangan bulat positif menghasilkan semua kekacauan dari objek.
Detail
- Gangguan adalah permutasi tanpa titik tetap. (Ini berarti di setiap nomor gangguan tidak bisa berada di entri ke- ).
- Outputnya harus terdiri dari derangemen angka (atau sebagai alternatif ).
- Anda juga dapat selalu mencetak derangements (atau masing-masing) tetapi Anda harus menentukannya.
- Keluaran harus bersifat deterministik, yaitu setiap kali program dipanggil dengan beberapa diberikan sebagai input, keluarannya harus sama (yang mencakup urutan deregemen harus tetap sama), dan keluaran lengkap harus dilakukan dalam jumlah waktu yang terbatas setiap kali (tidak cukup untuk melakukannya dengan probabilitas 1).
- Anda dapat mengasumsikan bahwa
- Untuk beberapa yang diberikan Anda dapat menghasilkan semua kekacauan atau sebagai alternatif Anda dapat mengambil bilangan bulat yang berfungsi sebagai indeks dan mencetak kekacauan ke- (dalam urutan yang Anda pilih).
Contohnya
Perhatikan bahwa urutan gangguan tidak harus sama dengan yang tercantum di sini:
n=2: (2,1)
n=3: (2,3,1),(3,1,2)
n=4: (2,1,4,3),(2,3,4,1),(2,4,1,3), (3,1,4,2),(3,4,1,2),(3,4,2,1), (4,1,2,3),(4,3,1,2),(4,3,2,1)
OEIS A000166 menghitung jumlah kekacauan.
Jawaban:
Jelly , 6 byte
Tautan monadik yang menerima bilangan bulat positif yang menghasilkan daftar daftar bilangan bulat.
Cobalah online!
Bagaimana?
sumber
Brachylog , 9 byte
Cobalah online!
Ini adalah generator yang menghasilkan satu gangguan yang
[0, …, n-1]
diberikann
.Jika kita membungkusnya dengan
ᶠ - findall
metapredicate, kita mendapatkan semua generasi yang mungkin dari kekacauan oleh generator.Penjelasan
sumber
JavaScript (V8) , 85 byte
Fungsi rekursif mencetak semua gangguan berbasis 0.
Cobalah online!
Berkomentar
sumber
Ruby , 55 byte
Cobalah online!
Menghasilkan semua gangguan berbasis 0
sumber
05AB1E , 9 byte
Cobalah online!
Penjelasan
sumber
Bahasa Wolfram (Mathematica) , 55 byte
Cobalah online!
sumber
Japt , 8 byte
Berbasis 0
Cobalah (Footer menambah semua elemen untuk perbandingan yang lebih mudah dengan test case)
sumber
Python 2 , 102 byte
Cobalah online!
Pengindeksan berbasis 0, daftar tupel.
itertools
Solusi non- berbasis:Python 2 , 107 byte
Cobalah online!
Pengindeksan berbasis 0, daftar baris, program lengkap.
Catatan: Solusi ini, meskipun tidak mengimpor
itertools
perpustakaan, tidak lebih lama dari yang lain yang mengimpornya, karena sebagian besar dari jumlah besar di sini adalah membangun permutasi. Pemeriksaan kekacauan benar-benar sekitar 7 byte tambahan! Alasannya adalah bahwa pemeriksaan dilakukan dengan cepat sebagai bagian dari pembangunan setiap permutasi. Ini tidak benar untuk solusi lain, di mana Anda harus memeriksa apakah setiap permutasi yang dikembalikan olehitertools.permutations
fungsi sebenarnya adalah kekacauan, dan, tentu saja, pemetaan itu sendiri membutuhkan banyak byte.sumber
MATL , 11 byte
Ini menghasilkan semua gangguan dalam urutan leksikografis.
Cobalah online!
Penjelasan dengan contoh
Pertimbangkan input
3
.sumber
Perl 5
-MList::Util=none -n
,10089 byteCobalah online!
sumber
Haskell , 58 byte
Cobalah online!
60 byte
Cobalah online!
sumber
Gaia , 10 byte
Cobalah online!
sumber
J , 26 byte
Cobalah online!
sumber
R ,
8180 byteCobalah online!
Mengembalikan yang( n2n) nilai yang mungkin sebagai
list
berisi semua gangguan. Sangat tidak efisien, seperti yang dihasilkannyan
kombinasi ukuran dari[1..n]
pengulangann
kali, kemudian filter untuk permutasi1:n%in%x
dan gangguan1:n-x
,.R + gtools , 62 byte
Cobalah online!
Jauh lebih efisien, mengembalikan di
matrix
mana setiap baris adalah kekacauan.sumber
Python 3.8 (pra-rilis) , 96 byte
Cobalah online!
sumber
C ++ (gcc) ,
207196 byte-5 bytes oleh ceilingcat -6 bytes oleh Roman Odaisky
Cobalah online!
sumber
std::copy
juga mempercayakan pemanggil dengan memberikan ruang yang memadai untuk output.C ++ (gcc) , 133 byte
Saya pikir ini telah tumbuh cukup berbeda dari pengajuan lainnya untuk mendapat jawaban yang terpisah. Akhirnya digunakan untuk
index[array]
sintaks luar-dalam!Cobalah online!
sumber
Haskell, 76 byte
sumber
Python 2 , 82 byte
Cobalah online!
88 byte sebagai program:
Cobalah online!
93 byte menggunakan itertools:
Cobalah online!
sumber
Perl 6 ,
4937 byteSunting: Setelah beberapa bolak-balik dengan Phil H, kami telah dipangkas menjadi hanya 37 byte:
Cobalah online!
Dengan menggunakan
Whatever
di awal, kita dapat menghindari tanda kurung (menyimpan 2 karakter). Selanjutnya gunakanZ
metaoperator-
yang mengambil setiap elemen permutasi (misalnya 2,3,1) dan mengurangi 0,1,2 secara berurutan. Jika salah satu dari mereka adalah 0 (salah) maka semua persimpangan gagal.Solusi asli tadinya ( Coba online! )
sumber
Arang ,
4428 bytedicoret 44 masih teratur 44
Cobalah online! Tautan adalah untuk mengucapkan versi kode. Secara longgar didasarkan pada jawaban non-itertools @ EricTheOutgolfer. Penjelasan:
sumber
C (gcc) ,
187180 byteCobalah online!
sumber
Pyth , 12 byte
Cobalah online!
Filter bekerja seperti ini: jika ada elemen di tempat aslinya, (elemen-indeks) akan menjadi 0 dan seluruh produk akan menjadi 0, dan dengan demikian falsey.
sumber