Forum » Programiranje » [Python] Kako iz seznama narediti možne kombinacije le-teh?
[Python] Kako iz seznama narediti možne kombinacije le-teh?
HotBurek ::
Pozdravljeni.
Zanima me, če mi lahko kdo pomaga pri programskem problemu, ki je dokaj preprost. V osnovi ne vem, kako se temu problemu reče, da bi iskal rešite. Zagotovo pa so bili primeri takšnih nalog že rešeni, po možnosti v kakšnem tro vrstičnem for loop-u.
Vhodni podatek je seznam, ki je lahko poljubno dolg (dolžine od 1 pa do max 10).
Za output pa bi želel imeti vse kombinacije elementov, v različnih zaporedjih, ter z po min 1 element in max 3 elemenit, pri čemer se isti element ne sme ponoviti. Se pravi "aa" ni ok.
Če je pa v output-u med vhodnimi elementi še presledek, je pa to že špica.
To je to.
Zanima me, če mi lahko kdo pomaga pri programskem problemu, ki je dokaj preprost. V osnovi ne vem, kako se temu problemu reče, da bi iskal rešite. Zagotovo pa so bili primeri takšnih nalog že rešeni, po možnosti v kakšnem tro vrstičnem for loop-u.
Vhodni podatek je seznam, ki je lahko poljubno dolg (dolžine od 1 pa do max 10).
input1 = ["a", "b"]; input2 = ["a", "b", "c", "d", "e", "f", "g", "h", "i", "j"];
Za output pa bi želel imeti vse kombinacije elementov, v različnih zaporedjih, ter z po min 1 element in max 3 elemenit, pri čemer se isti element ne sme ponoviti. Se pravi "aa" ni ok.
Če je pa v output-u med vhodnimi elementi še presledek, je pa to že špica.
output1 = ["a", "b", "a b", "b a"]; output2 = ["a", "a b", "b a", "d c b", "i h j", "a j b", "e f", "g f e", itn...];
To je to.
root@debian:/# iptraf-ng
fatal: This program requires a screen size of at least 80 columns by 24 lines
Please resize your window
fatal: This program requires a screen size of at least 80 columns by 24 lines
Please resize your window
- spremenilo: HotBurek ()
Zimonem ::
Zadeva je rešljiva z eno iteracijo, vsaj kakor je opisana. Veselje z rešitvijo prepuščamo, bralcem.
HotBurek ::
Trenutno imam spodnji sample, ampak program ne izpiše kombinaije "brokoli juha". Pa verjetno še katere ne.
import itertools; input = ["juha", "brokoli", "200g", "NOVO"]; output = []; for i in range(0, len(input) + 1): for j in itertools.combinations(input, i): print(j); if len(j) in (1, 2, 3): element = ""; for k in range(0, len(j)): element = element + j[k] + " "; element = element.strip(); output.append(element); for i in range(0, len(output)): print(">>>" + str(output[i]) + "<<<"); if output[i] == "juha brokoli": print("BINGO 1 BINGO 1 ******************************************************"); if output[i] == "brokoli juha": print("BINGO 2 BINGO 1 ******************************************************");
root@debian:/# iptraf-ng
fatal: This program requires a screen size of at least 80 columns by 24 lines
Please resize your window
fatal: This program requires a screen size of at least 80 columns by 24 lines
Please resize your window
Zimonem ::
Tega ne delaš s strings ampak preprostimi enimi oz diskretiziranimi vrednostmi. Oz je cela karta že narejena.
Zimonem ::
Sploh pa ne more biti brokoli, brokoli 300g kombinacija.
Lahko je brokoli župa , ali brokoli svež 300g. Odloćit se moraš.
Lahko je brokoli župa , ali brokoli svež 300g. Odloćit se moraš.
garamond ::
import itertools input = ["juha", "brokoli", "200g", "NOVO"] output = [ [" ".join(i) for i in itertools.permutations(input, j)] for j in range(1,4) ] [print(3*("\n"+54*"*") + "\nBINGO" +3*("\n"+54*"*")) for p in output if "brokoli juha" in p]
A parody of extremism is impossible to differentiate from sincere extremism.
WizzardOfOZ ::
a python pozna product?
tko rešiš v rubyju
tko rešiš v rubyju
a = [1,2] b = [3,4,5,6] (a.product b).collect {|x, y| f(x, y)}
Milčinski je napisal butalce kot prispodobo in ne kot priročnik!!!
Svuda u svijetu ima budala ali je izgleda kod nas centrala!!!
Svuda u svijetu ima budala ali je izgleda kod nas centrala!!!
Zgodovina sprememb…
- spremenilo: WizzardOfOZ ()
mr_chai ::
WizzardOfOZ je izjavil:
a python pozna product?
tko rešiš v rubyju
a = [1,2]
b = [3,4,5,6]
(a.product b).collect {|x, y| f(x, y)}
če tole dela kartezijski produkt, potem to ni to kar OP želi.
HotBurek ::
Zaporedje, ki sem ga našel v tem kontekstu, je: 1,4,15,64,325,1956
Ampak imam (ob predpostavki, da ne izvajam limit max 3 vhodni elementi):
- za 1 vhodni element output 1
- za 2 vhodna elementa output 4
- za 3 vhodne elemente output 15
- za 4 vhodne elemente output 48 in ne 64
- za 5 vhodnih elementov output 135 in ne 325
- za 6 vhodnih elementov output 348 in ne 1956
Resda je to na neki prototip kodi, ampak za igračkanje ki ga izvajam, bo to ok.
Ampak imam (ob predpostavki, da ne izvajam limit max 3 vhodni elementi):
- za 1 vhodni element output 1
- za 2 vhodna elementa output 4
- za 3 vhodne elemente output 15
- za 4 vhodne elemente output 48 in ne 64
- za 5 vhodnih elementov output 135 in ne 325
- za 6 vhodnih elementov output 348 in ne 1956
Resda je to na neki prototip kodi, ampak za igračkanje ki ga izvajam, bo to ok.
root@debian:/# iptraf-ng
fatal: This program requires a screen size of at least 80 columns by 24 lines
Please resize your window
fatal: This program requires a screen size of at least 80 columns by 24 lines
Please resize your window
WizzardOfOZ ::
WizzardOfOZ je izjavil:
a python pozna product?
tko rešiš v rubyju
a = [1,2]
b = [3,4,5,6]
(a.product b).collect {|x, y| f(x, y)}
če tole dela kartezijski produkt, potem to ni to kar OP želi.
Res je. Sem malo preveč kode dodal. Pravilna koda bo ta:
a = [1,2] b = [3,4,5,6] puts a.product(b)
To naj bi bil rezultat:
[[1, 3], [1, 4], [1, 5], [1, 6], [2, 3], [2, 4], [2, 5], [2, 6]]
Oziroma, če iz enega polja (samo a) potem a.product(a), pa izločiš tiste, ki imajo x in y enak.
Milčinski je napisal butalce kot prispodobo in ne kot priročnik!!!
Svuda u svijetu ima budala ali je izgleda kod nas centrala!!!
Svuda u svijetu ima budala ali je izgleda kod nas centrala!!!
Zgodovina sprememb…
- spremenilo: WizzardOfOZ ()
HotBurek ::
To naj bi bil rezultat:
[[1, 3], [1, 4], [1, 5], [1, 6], [2, 3], [2, 4], [2, 5], [2, 6]]
To niso vse opcije.
Že v štartu manjkajo vrednosti navzdol: [3, 1], [6, 2, 1].
Pa vse druge mix mešanice: [6, 2, 3], [1, 4, 2].
[[1, 3], [1, 4], [1, 5], [1, 6], [2, 3], [2, 4], [2, 5], [2, 6]]
To niso vse opcije.
Že v štartu manjkajo vrednosti navzdol: [3, 1], [6, 2, 1].
Pa vse druge mix mešanice: [6, 2, 3], [1, 4, 2].
root@debian:/# iptraf-ng
fatal: This program requires a screen size of at least 80 columns by 24 lines
Please resize your window
fatal: This program requires a screen size of at least 80 columns by 24 lines
Please resize your window
Zgodovina sprememb…
- spremenilo: HotBurek ()
WizzardOfOZ ::
A to hoče on vse možne kombinacije, brez ponavljajočih?
Milčinski je napisal butalce kot prispodobo in ne kot priročnik!!!
Svuda u svijetu ima budala ali je izgleda kod nas centrala!!!
Svuda u svijetu ima budala ali je izgleda kod nas centrala!!!
HotBurek ::
Mislim, da imam rešitev, ki dela.
Za input = ["a", "b", "c", "d"], je output length 48.
Za input = ["a", "b", "c", "d"], je output length 48.
a b c d a b a c a d b c b d c d a b c a b d a c d b c d a b c d d a d b d c d a b d a c d b c d a b c c a c b c d a c d b c a b c d a b b a b c a b d a b c d a d c b d c a d b a c b a d c b a a d c a d b a c b a d c b b a d b a c b d c b a d c c b d c a d c b a d
root@debian:/# iptraf-ng
fatal: This program requires a screen size of at least 80 columns by 24 lines
Please resize your window
fatal: This program requires a screen size of at least 80 columns by 24 lines
Please resize your window
WizzardOfOZ ::
a = [1 , 2 , 3 , 4 , 5 , 6]
To je za vse možne kombinacije (recimo tudi [6 , 6 , 6])
To je pa z izločenimi (recimo brez [6 , 5 , 6])
[[1], [2], [3], [4], [5], [6], [1, 2], [1, 3], [1, 4], [1, 5], [1, 6], [2, 1], [2, 3], [2, 4], [2, 5], [2, 6], [3, 1], [3, 2], [3, 4], [3, 5], [3, 6], [4, 1], [4, 2], [4, 3], [4, 5], [4, 6], [5, 1], [5, 2], [5, 3], [5, 4], [5, 6], [6, 1], [6, 2], [6, 3], [6, 4], [6, 5], [1, 2, 3], [1, 2, 4], [1, 2, 5], [1, 2, 6], [1, 3, 2], [1, 3, 4], [1, 3, 5], [1, 3, 6], [1, 4, 2], [1, 4, 3], [1, 4, 5], [1, 4, 6], [1, 5, 2], [1, 5, 3], [1, 5, 4], [1, 5, 6], [1, 6, 2], [1, 6, 3], [1, 6, 4], [1, 6, 5], [2, 1, 3], [2, 1, 4], [2, 1, 5], [2, 1, 6], [2, 3, 1], [2, 3, 4], [2, 3, 5], [2, 3, 6], [2, 4, 1], [2, 4, 3], [2, 4, 5], [2, 4, 6], [2, 5, 1], [2, 5, 3], [2, 5, 4], [2, 5, 6], [2, 6, 1], [2, 6, 3], [2, 6, 4], [2, 6, 5], [3, 1, 2], [3, 1, 4], [3, 1, 5], [3, 1, 6], [3, 2, 1], [3, 2, 4], [3, 2, 5], [3, 2, 6], [3, 4, 1], [3, 4, 2], [3, 4, 5], [3, 4, 6], [3, 5, 1], [3, 5, 2], [3, 5, 4], [3, 5, 6], [3, 6, 1], [3, 6, 2], [3, 6, 4], [3, 6, 5], [4, 1, 2], [4, 1, 3], [4, 1, 5], [4, 1, 6], [4, 2, 1], [4, 2, 3], [4, 2, 5], [4, 2, 6], [4, 3, 1], [4, 3, 2], [4, 3, 5], [4, 3, 6], [4, 5, 1], [4, 5, 2], [4, 5, 3], [4, 5, 6], [4, 6, 1], [4, 6, 2], [4, 6, 3], [4, 6, 5], [5, 1, 2], [5, 1, 3], [5, 1, 4], [5, 1, 6], [5, 2, 1], [5, 2, 3], [5, 2, 4], [5, 2, 6], [5, 3, 1], [5, 3, 2], [5, 3, 4], [5, 3, 6], [5, 4, 1], [5, 4, 2], [5, 4, 3], [5, 4, 6], [5, 6, 1], [5, 6, 2], [5, 6, 3], [5, 6, 4], [6, 1, 2], [6, 1, 3], [6, 1, 4], [6, 1, 5], [6, 2, 1], [6, 2, 3], [6, 2, 4], [6, 2, 5], [6, 3, 1], [6, 3, 2], [6, 3, 4], [6, 3, 5], [6, 4, 1], [6, 4, 2], [6, 4, 3], [6, 4, 5], [6, 5, 1], [6, 5, 2], [6, 5, 3], [6, 5, 4]]
@HotBurek pa še za tvoj primer a = ["a" , "b" , "c" , "d"]
[["a"], ["b"], ["c"], ["d"], ["a", "b"], ["a", "c"], ["a", "d"], ["b", "a"], ["b", "c"], ["b", "d"], ["c", "a"], ["c", "b"], ["c", "d"], ["d", "a"], ["d", "b"], ["d", "c"], ["a", "b", "c"], ["a", "b", "d"], ["a", "c", "b"], ["a", "c", "d"], ["a", "d", "b"], ["a", "d", "c"], ["b", "a", "c"], ["b", "a", "d"], ["b", "c", "a"], ["b", "c", "d"], ["b", "d", "a"], ["b", "d", "c"], ["c", "a", "b"], ["c", "a", "d"], ["c", "b", "a"], ["c", "b", "d"], ["c", "d", "a"], ["c", "d", "b"], ["d", "a", "b"], ["d", "a", "c"], ["d", "b", "a"], ["d", "b", "c"], ["d", "c", "a"], ["d", "c", "b"]]
To je za vse možne kombinacije (recimo tudi [6 , 6 , 6])
(1..3).flat_map{|size| a.repeated_permutation(size).to_a }
To je pa z izločenimi (recimo brez [6 , 5 , 6])
(1..3).flat_map{|size| a.permutation(size).to_a }
[[1], [2], [3], [4], [5], [6], [1, 2], [1, 3], [1, 4], [1, 5], [1, 6], [2, 1], [2, 3], [2, 4], [2, 5], [2, 6], [3, 1], [3, 2], [3, 4], [3, 5], [3, 6], [4, 1], [4, 2], [4, 3], [4, 5], [4, 6], [5, 1], [5, 2], [5, 3], [5, 4], [5, 6], [6, 1], [6, 2], [6, 3], [6, 4], [6, 5], [1, 2, 3], [1, 2, 4], [1, 2, 5], [1, 2, 6], [1, 3, 2], [1, 3, 4], [1, 3, 5], [1, 3, 6], [1, 4, 2], [1, 4, 3], [1, 4, 5], [1, 4, 6], [1, 5, 2], [1, 5, 3], [1, 5, 4], [1, 5, 6], [1, 6, 2], [1, 6, 3], [1, 6, 4], [1, 6, 5], [2, 1, 3], [2, 1, 4], [2, 1, 5], [2, 1, 6], [2, 3, 1], [2, 3, 4], [2, 3, 5], [2, 3, 6], [2, 4, 1], [2, 4, 3], [2, 4, 5], [2, 4, 6], [2, 5, 1], [2, 5, 3], [2, 5, 4], [2, 5, 6], [2, 6, 1], [2, 6, 3], [2, 6, 4], [2, 6, 5], [3, 1, 2], [3, 1, 4], [3, 1, 5], [3, 1, 6], [3, 2, 1], [3, 2, 4], [3, 2, 5], [3, 2, 6], [3, 4, 1], [3, 4, 2], [3, 4, 5], [3, 4, 6], [3, 5, 1], [3, 5, 2], [3, 5, 4], [3, 5, 6], [3, 6, 1], [3, 6, 2], [3, 6, 4], [3, 6, 5], [4, 1, 2], [4, 1, 3], [4, 1, 5], [4, 1, 6], [4, 2, 1], [4, 2, 3], [4, 2, 5], [4, 2, 6], [4, 3, 1], [4, 3, 2], [4, 3, 5], [4, 3, 6], [4, 5, 1], [4, 5, 2], [4, 5, 3], [4, 5, 6], [4, 6, 1], [4, 6, 2], [4, 6, 3], [4, 6, 5], [5, 1, 2], [5, 1, 3], [5, 1, 4], [5, 1, 6], [5, 2, 1], [5, 2, 3], [5, 2, 4], [5, 2, 6], [5, 3, 1], [5, 3, 2], [5, 3, 4], [5, 3, 6], [5, 4, 1], [5, 4, 2], [5, 4, 3], [5, 4, 6], [5, 6, 1], [5, 6, 2], [5, 6, 3], [5, 6, 4], [6, 1, 2], [6, 1, 3], [6, 1, 4], [6, 1, 5], [6, 2, 1], [6, 2, 3], [6, 2, 4], [6, 2, 5], [6, 3, 1], [6, 3, 2], [6, 3, 4], [6, 3, 5], [6, 4, 1], [6, 4, 2], [6, 4, 3], [6, 4, 5], [6, 5, 1], [6, 5, 2], [6, 5, 3], [6, 5, 4]]
@HotBurek pa še za tvoj primer a = ["a" , "b" , "c" , "d"]
[["a"], ["b"], ["c"], ["d"], ["a", "b"], ["a", "c"], ["a", "d"], ["b", "a"], ["b", "c"], ["b", "d"], ["c", "a"], ["c", "b"], ["c", "d"], ["d", "a"], ["d", "b"], ["d", "c"], ["a", "b", "c"], ["a", "b", "d"], ["a", "c", "b"], ["a", "c", "d"], ["a", "d", "b"], ["a", "d", "c"], ["b", "a", "c"], ["b", "a", "d"], ["b", "c", "a"], ["b", "c", "d"], ["b", "d", "a"], ["b", "d", "c"], ["c", "a", "b"], ["c", "a", "d"], ["c", "b", "a"], ["c", "b", "d"], ["c", "d", "a"], ["c", "d", "b"], ["d", "a", "b"], ["d", "a", "c"], ["d", "b", "a"], ["d", "b", "c"], ["d", "c", "a"], ["d", "c", "b"]]
a = ["a" , "b" , "c" , "d"] d = Array.new d = (1..3).flat_map{|size| a.permutation(size).to_a } puts "#{d}\n\n"
Milčinski je napisal butalce kot prispodobo in ne kot priročnik!!!
Svuda u svijetu ima budala ali je izgleda kod nas centrala!!!
Svuda u svijetu ima budala ali je izgleda kod nas centrala!!!
Zgodovina sprememb…
- spremenilo: WizzardOfOZ ()
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | CSV fileOddelek: Programiranje | 1790 (994) | kunigunda |
» | MojeDelo.com praznični maratonski IT hekatonOddelek: Loža | 3803 (1473) | Pimoz |
» | python regex splitOddelek: Programiranje | 552 (457) | HotBurek |
⊘ | python pomočOddelek: Programiranje | 3407 (2328) | Mavrik |
» | [Python] učenjeOddelek: Programiranje | 2669 (1966) | Isotropic |