У меня есть эти две функции:элементов Python Сравнение последовательностей
def comparison(a, b):
return [-1, 0, 1].index(cmp(b, a))
def base_3(seq):
return [comparison(a, b) for a, b in itertools.combinations(seq, 2)]
Сравнение функция возвращает число сравнения, основанный на этом:
- 0, если а> Ь
- 1, если а = Ь
- 2, если б <
Функция base_3 возвращает сравнение между всеми объединенными элементами.
Например:
x = [0, 1, 2]
y = [1, 2, 0]
z = [0, 1, 0]
>>> base_3(x)
[2, 2, 2]
>>> base_3(y)
[2, 0, 0]
>>> base_3(z)
[2, 1, 0]
Мне нужна функция, которая возвращает последовательность из заданного base_3, когда это возможно:
>>> base_3_to_seq([2, 2, 2])
[0, 1, 2]
>>> base_3_to_seq([2, 1, 0])
[0, 1, 0]
>>> base_3_to_seq([0, 2, 1])
"Impossible"
Как я могу написать эту функцию base_3_to_seq?
Наблюдение за исходным кодом: '[-1, 0, 1] .index (cmp (b, a))' эквивалентно 'cmp (b, a) + 1'. –