-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy path02_permutace.py
65 lines (53 loc) · 2.13 KB
/
02_permutace.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
# Zadání:
#########
#
# Pokud pole o délce N, obsahuje všechna čísla od 0..N-1 právě jednou, pak toto
# pole kóduje permutaci tak, že první prvek se zobrazí na místo, kde se v poli
# nachází 0, druhý prvek na místo, kde se v poli nachází 1,…
#
# Pole [0, 1, 2, 3], kóduje identickou tzv. jednotkovou permutaci o čtyřech
# prvcích, pole [3, 2, 1, 0] kóduje otočení prvků v poli.
#
# Napište program, který načtěte z jednoho řádku standardního vstupu vektor
# reprezentující permutaci a najde a vytiskne inverzní permutaci, tj.
# permutaci, která převede zadanou permutaci na jednotkovou.
#
# Inverzní permutace k permutaci [2, 0, 1], je permutace [1, 2, 0], neboť první
# permutace zobrazí 0→2 a druhá permutace 2→0, obdobně 1→0, druhá permutace
# 0→1; první 2→1 a druhá 1→2.
###############################################################################
# Pole čísel je zadáno jako uživatelský vstup. Jednotlivá čísla odděluje
# mezera.
array = list(map(int, input().split(" ")))
def permutate( array ):
"""
Najde permutaci k zadanému poli. Požadavkem je, aby pole o délce N
obsahovalo všechny čísla od 0 do N-1.
Parametry:
---------
array: list
Pole čísel splňující požadavky popsané výše.
Vrací:
------
list
Permutace předaného pole.
False
Pole nevyhovuje požadavkům nebo nebo má nulovou délku.
"""
if len( array ) == 0:
return False
# Vytvoří pole nul o stejné délce jako má array
temp = [0]*( len( array ) )
# Projde všechny prvky v poli array
for i, item in enumerate( array ):
# V poli musí existovat prvek, jehož hodnota je stejná jako index
# aktuálního
if i in array:
# Do temp uloží aktuální prvek na místo, kde se v array nachází
# prvek stejné hodnoty jako index aktuálního čísla.
temp[ array.index(i) ] = item
else:
return False
return temp
print(permutate( array ) )
#print(permutate( [2, 0, 1, 4] ) ) # -> False