Python provides direct methods to find permutations and combinations of a sequence. These methods are present in itertools package. Show
Table of Contents
PermutationFirst import
itertools package to implement the permutations method in python. This method takes a list as an input and returns an object list of tuples that contain all permutations in a list form. Python3
Output: (1, 2, 3) (1, 3, 2) (2, 1, 3) (2, 3, 1) (3, 1, 2) (3, 2, 1) It generates n! permutations
if the length of the input sequence is n. Python3
Output: (1, 2) (1, 3) (2, 1) (2, 3) (3, 1) (3, 2) It generates nCr * r! permutations if the length of the input sequence is n and the input parameter is r. CombinationThis method takes a list and an input r as an input and return an object list of tuples which contain all possible combination of length r in a list form. Python3
Output: (1, 2) (1, 3) (2, 3) 1. Combinations are emitted in lexicographic sort order of input. So, if the input list is sorted, the combination tuples will be produced in sorted order. Python3
Output: (1, 2) (1, 3) (2, 3) 2. Elements are treated as
unique based on their position, not on their value. So if the input elements are unique, there will be no repeat values in each combination. Python3
Output: (2, 1) (2, 3) (1, 3) 3. If we want to make a combination of the same element to
the same element then we use combinations_with_replacement. Python3
Output: (1, 1) (1, 2) (1, 3) (2, 2) (2, 3) (3, 3) Tulis fungsi yang mengambil sebagai input satu set bilangan bulat (bisa berupa daftar, larik atau wadah lain dengan angka yang berbeda), dan menampilkan daftar semua permutasi. Python (95 karakter) :
Akan menyenangkan bisa dikalahkan dalam bahasa yang sama, tetapi implementasi dalam bahasa lain lebih dari diterima! Jawaban: Python - 76 karakterLebih panjang dari gnibbler, tetapi mengimplementasikan sesuatu dari awal.
J, 11 karakter
Pemakaian:
Penjelasan:
Python - 55 karakter
Haskell, 44 43
Pada dasarnya sama dengan solusi ugoren, tetapi Haskell lebih baik dalam hal pemahaman daftar! Tentu saja bisa juga 30
Pendekatan yang lebih efisien, yang tidak memerlukan perbandingan kesetaraan: 92
Sebagai akibatnya, yang ini juga berfungsi ketika ada elemen duplikat dalam daftar. dalam Q (48)
Penggunaan sampel:
Ruby - 23 karakter
misalnya tetapi menggunakan Ruby - 59 karakter
diuji dengan
Python - 58 karakter Sedikit lebih pendek dari ugoren, dengan mengambil set sebagai input:
C, 270 243 239 karakter
Fungsi P (n, a) mengembalikan pointer ke n! permutasi dari, dikemas satu demi satu dalam satu susunan raksasa. K, 30 byte
Tidak ada builtin! JS - 154 146 karakter
Tes: RKarena kita berbicara tentang permutasi, izinkan saya menunjukkan setidaknya satu solusi di R:
Perl 188Tidak ada rutinitas perpustakaan, tidak ada rekursi
Scala 30:
Scala 195, quick'n'dirty, tanpa permutasi dari perpustakaan:
Scala 293, dewasa, jenis iterator aman:
Python - 50 karakter
Pyth, 4 byte
Ya, Pyth dibuat setelah tantangan ini diposting dan semuanya. Ini masih sangat keren. : D Demo langsung. Membaca dari stdin lebih pendek satu byte:
JavaScript 143 136 134 123
Python, 53 byte
K (oK) , 3 byteLarutan
Cobalah online! Penjelasan: Ini adalah 3 byte built-in pintas ke berikut built-in 47 fungsi byte:
... yang dapat disingkat menjadi 23 byte jika kita tahu kita mendapatkan daftar int sebagai input:
Aksioma, 160 byte
ungolfed
Semua ini memanggil satu fungsi perpustakaan yang memberikan permutasi pada indeks (hanya integer sebagai permutasi sebagai permutasi pada [1], permutasi pada [1,2], permutasi pada [1,2,3] dll). Jadi cukup dapatkan set ini indeks dan membangun daftar; Kita harus mencatat bahwa ini tampaknya dikompilasi dengan baik untuk setiap Daftar tipe X
Japt , 1 byte
Japt penerjemah Ini terbentur dan tidak memiliki jawaban Japt, jadi saya pikir saya akan melanjutkan dan menambahkan satu. APL (NARS), 39 karakter, 78 byte
uji:
05AB1E - 2 1 byte s
Input harus berupa array / daftar. Penjelasan:
Menyimpan satu byte berkat Erik the Outgolfer |