» »

[Python] Permutacije

[Python] Permutacije

pbutan ::

Pozdravljeni!
V pythonu bi želel napisati program, ki mi pri dani številki n vrne vse permutacije števil od 1 do n brez fiksnih točk, z metodo sestopanja oz. backtracinga. Iskal sem že možne rešitve po internetu vendar nimam dovolj izkušenj, da bi znal iz jezikov kot so java, c++ popolnoma pravilno prevesti psevdokode v Python.
Zaenkrat se še lotevam zgolj izpisa vseh permutacij
def izpis(n):
    p=n*[0]
    return konstrukt(0,n,p)

def konstrukt(poz,n,p):
    for st in range(1,n+1):
        if st not in p:
            p[poz]=st
            if poz==n-1:
                print p
            else:
                konstrukt(poz+1,n,p)

To je dosedaj moja koda, vem da pride do problemov, ko izpiše prvo končno permutacijo, toda ne vem kako nastaviti klic, da bo koda pravilno delovala naprej.
Najlepša hvala za pomoč.

krneki0001 ::

Sicer je v ruby-ju, ampak je zelo podobno pythonu

###### '0123' ==> '1234'
def conv(base,s)
 s.split('').map {|c| (c.to_i(base)+1).to_s(base+1)}
end

def permutation(n)
  num=(n**n) - 1
  (0..num).to_a.map do|u| 
     sn  = u.to_s(n)        
     str =sn.rjust(n,'0')   
     conv(n,str) 
  end
end


permutation(ARGV[0].to_i).each { |i| p i }
Asrock X99 Extreme 4 | Intel E5-2683V4 ES | 64GB DDR4 2400MHz ECC |
Samsung 250GB M.2 | Asus 1070 TI | 850W Antec | LC Tank Buster


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

program, ki ti najde vse kombinacije črk oz. številk, ki mu jih podaš (strani: 1 2 )

Oddelek: Programiranje
7041957 (6649) XyNOBvxWVJ
»

Python - pomoč (strani: 1 2 3 )

Oddelek: Programiranje
10318151 (8899) black ice
»

[c++] naloge

Oddelek: Programiranje
476237 (4777) technolog
»

[Python] Domači nalogi

Oddelek: Programiranje
333082 (1972) ragezor
»

PHP ASP

Oddelek: Izdelava spletišč
353051 (2376) MrBrdo

Več podobnih tem