?
, .
, , :
.
, .
, 1.. 7 - .
[ 1 1 1 4 4 6 7 ]
^ first occurrence at pos 1 of 1 in l_1 / 2 in l_2
^ first occurrence at pos 4
l_1 l_2, l_3
[ 1 1 1 4 4 6 6 ]
, :
l_4 = [ A B 0 D 0 B A ]
[ 1 2 3 4 3 2 1 ]
"A" 1, "B" 2 ..
, , - //f1 , (a, b) , a b .
: , , .
, ( python):
def canonical_form(li):
""" Note, this implementation overwrites li """
first = dict()
for i in range(len(li)):
v = first.get(li[i])
if v is None:
first[li[i]] = i
v = i
li[i] = v
return li
print canonical_form([ 1, 1, 1, 0, 0, 2, 6 ])
print canonical_form([ 2, 2, 2, 9, 9, 3, 1 ])
print canonical_form([ 2, 2, 2, 9, 9, 3, 3 ])
print canonical_form(['A','B',0,'D',0,'B','A'])
print canonical_form([1,1,1,0,0,2,6]) == canonical_form([2,2,2,9,9,3,1])
print canonical_form([1,1,1,0,0,2,6]) == canonical_form([2,2,2,9,9,3,3])