Преобразование списка чисел в q-арное представление в Sage - PullRequest
0 голосов
/ 17 сентября 2018
"(n,p^n)"
n=2
p=3
p.is_prime()
n in ZZ
list1=list(IntegerRange(0,(p^n)-1))
V1=vector(GF(3),list1)
print V1
list1.digits(base=p,padto=n)

Пытается получить вывод:

[(0, 0),(0, 1),(0, 2),(1, 0),(1, 1),(1, 2),(2, 0),(2, 1),(2, 2)]

Я не могу понять, как использовать список и преобразовать его в форму, в которой я могу использовать функцию .digits

1 Ответ

0 голосов
/ 18 сентября 2018

Проблема возникает из-за попытки применить метод digits к списку, а не к каждому элементу в списке.

Определив

sage: n = 2
sage: p = 3

и, напоминая, что range(a, b) и IntegerRange(a, b) оба включают a, но исключают b,

sage: list1 = list(IntegerRange(0, p^n))

тогда можно наблюдать list1

sage: list1
[0, 1, 2, 3, 4, 5, 6, 7, 8]

и применить метод digits к элементам list1

sage: [ZZ(x).digits(base=p, padto=n) for x in list1]
[[0, 0], [1, 0], [2, 0], [0, 1], [1, 1], [2, 1], [0, 2], [1, 2], [2, 2]]

возможно затем поменять местами эти цифры:

sage: [ZZ(x).digits(base=p, padto=n)[::-1] for x in list1]
[[0, 0], [0, 1], [0, 2], [1, 0], [1, 1], [1, 2], [2, 0], [2, 1], [2, 2]]
...