punch.sage 528 B

12345678910111213141516171819202122232425262728293031323334
  1. from tabulate import tabulate
  2. q = 11
  3. k = 3
  4. d0 = q - k + 1
  5. s = 4
  6. assert s <= d0 - 1
  7. n = q - s
  8. d = n - k + 1
  9. K = GF(q)
  10. F.<z> = K[]
  11. V = VectorSpace(K, n)
  12. M = V.subspace([
  13. [1, 0, 0, 0, 0, 0, 0],
  14. [0, 1, 0, 0, 0, 0, 0],
  15. [0, 0, 1, 0, 0, 0, 0],
  16. ])
  17. table = []
  18. for m in M:
  19. f = m[0] + m[1]*z + m[2]*z^2
  20. c = vector(f(β) for β in list(K)[:n])
  21. assert len(c) == n
  22. if c.is_zero():
  23. continue
  24. table.append((c, c.hamming_weight()))
  25. assert d <= c.hamming_weight()
  26. print(tabulate(table))
  27. print(d)