Witam, jako iż nie znam Pythona, a muszę lekko zmodyfikować jego kod to prosiłbym o wytłumaczenie mi, bo gdy wpisuje w programie linie
seq = (0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 0) , następnie program pracuje na tej danej używając jej w ten sposób s = sequence[:] . Moja prośba polega na wytłumaczeniu jak moge ustawić seq jako input, ponieważ gdy wpisuje seq=input() to, później program zachowuje się jakby były to inne dane. Próbowałem jeszcze
s = input()
numbers = list(map(int, s.split()))
ale efekt był taki sam.
- Rejestracja:ponad 6 lat
- Ostatnio:około 4 lata
- Postów:13

- Rejestracja:ponad 6 lat
- Ostatnio:ponad 5 lat
- Postów:9
-
seq = (0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 0)
Jest to typtuple
- zwykla lista tylko ze jak juz ja zainicjalizujesz to nie mozesz juz nic dodac ani usunac. -
seq = tuple(input('Add sequence of data, separated by comma: ').split(','))
mowi chyba samo za siebie
- Rejestracja:ponad 6 lat
- Ostatnio:około 4 lata
- Postów:13
y2evp5in napisał(a):
seq = (0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 0)
Jest to typtuple
- zwykla lista tylko ze jak juz ja zainicjalizujesz to nie mozesz juz nic dodac ani usunac.
seq = tuple(input('Add sequence of data, separated by comma: ').split(','))
mowi chyba samo za siebie
Niestety coś też nie działa, to jest kod i chodzi o to zeby tam gdzie jest seq(...) było inputowanie, z podanym tam ciągiem wynik powinien wychodzić x^4+x^3+1, a jak wpisuje to co podałeś wychodzi inaczej
#!/usr/bin/env python
def Berlekamp_Massey_algorithm(sequence):
N = len(sequence)
s = sequence[:]
for k in range(N):
if s[k] == 1:
break
f = set([k + 1, 0]) # use a set to denote polynomial
l = k + 1
g = set([0])
a = k
b = 0
for n in range(k + 1, N):
d = 0
for ele in f:
d ^= s[ele + n - l]
if d == 0:
b += 1
else:
if 2 * l > n:
f ^= set([a - b + ele for ele in g])
b += 1
else:
temp = f.copy()
f = set([b - a + ele for ele in f]) ^ g
l = n + 1 - l
g = temp
a = b
b = n - l + 1
# output the polynomial
def print_poly(polynomial):
result = ''
lis = sorted(polynomial, reverse=True)
for i in lis:
if i == 0:
result += '1'
else:
result += 'x^%s' % str(i)
if i != lis[-1]:
result += ' + '
return result
return (print_poly(f), l)
if __name__ == '__main__':
seq = (0, 1, 1, 0, 0, 1, 0, 0, 0, 1, 1, 1, 1, 0, 1)
(poly, span) = Berlekamp_Massey_algorithm(seq)
print ('The input sequence is %s.' % str(seq))
print ('Its characteristic polynomial is (%s),' % poly,)
print ('and linear span is %d.' % span)

- Rejestracja:ponad 6 lat
- Ostatnio:ponad 5 lat
- Postów:9
@lion137: Tak, tak inny typ po prostu chcialem wytlumaczyc po latwemu :P
Blad polega na tym ze po wczytaniu jest to tuple
z elementami string
wiec przejedz po elementach listy ktora otrzymasz z seq = input('Add sequence of data, separated by comma: ').split(',')
i zamien je na int
a pozniej ta liste zamien na tuple