Akční adventura State of Mind je na portále GOG.com zdarma, akce trvá do 10. září.
Na Kickstarteru běží kampaň na podporu malého robotický psa Petoi Quaddle. Postaven je na ESP32-S3. V několika variantách. S řadou senzorů. Programovat lze pomocí Pythonu, C++ nebo i vizuálních bloků. Zkoušet a trénovat lze v simulátoru.
Dětem začala škola a nedobrovolně se tak musí vzdělávat. Avšak pro dospělé, kteří se chtějí vzdělávat nebo naopak se o vědomosti podělit, je tu Virtuální Bastlírna - jako každý měsíc si můžete online a zdarma nezávazně popovídat o vědě a technice nejen s bastlíři, ale i s vývojáři, vědci nebo profesory. A čemu se strahováci budou věnovat? Blíží se KiCAD 11 s nespočtem novinek, z nichž zde musí zmínit alespoň možnost kótování a závislostí z
… více »Asahi Linux, tj. Linux pro Apple Silicon, oficiálně podporuje čipy M3 (M3, M3 Pro a M3 Max).
Společnost Acer oslavila 50 let. Na tiskové konferenci next@acer představila řadu novinek. Vypíchnout lze přenosný ePaper displej Acer EP130K, přenosné řešení se třemi displeji Acer PD163Q P3 nebo herní handheld a notebook v jednom DualPlay Mini.
Server SiFive BigSky SF-2U870 2U je založený na jádře SiFive P870-D, zatím je naintegrovaných 32 jader 256 GB RAM 2 GHz, škálovat lze do 256 jader na čip. O něco podrobnější popis serveru v článku SiFive BigSky Ships the First RISC-V Server. Is the GPU Head Node the Prize? na futurumgroup.com. Asi ani tento čip nebude na úrovni nejlepších 64-bit ARMů a AMD Zenů, ale splňuje RVA23 specifikaci a je podporovaný Ubuntu 26.04 LTS a RHEL 10. V článku je
… více »Na YouTube lze zhlédnout nový celovečerní dokumentární film The Story of VS Code | Official Documentary věnovaný Visual Studio Code.
Farid Abdelnour se v příspěvku na blogu rozepsal o novinkám v nejnovější verzi 26.08.0 editoru videa Kdenlive (Wikipedie). Ke stažení také na Flathubu.
Byla vydána nová stabilní verze 8.2 webového prohlížeče Vivaldi (Wikipedie). Postavena je na Chromiu 152. Přehled novinek i s náhledy v příspěvku na blogu.
def berlekamp_massey_algorithm(seq):
n = len(seq)
b, c = [0]*n, [0]*n
b[0], c[0] = 1, 1
L, m, i = 0, -1, 0
for j in range(n):
d = seq[j]
for k in range(1, L+1):
d ^= c[k] & seq[j-k]
if d == 1:
t = c.copy()
p = [0]*n
for k in range(n-j+m):
p[k] = b[k+j-m] ^ t[k]
if L <= j//2:
L = j + 1 - L
m = j
b, c = t, p
else:
for k in range(n-j+m):
c[k] = b[k+j-m] ^ p[k]
return L, b[:L+1], c[:L+1]
def generate_lfsr_output(poly, seq_len):
n = len(poly)
state = [0]*(n-1) + [1]
output = []
for i in range(seq_len):
out = state[-1]
for j in range(n-1):
if poly[j+1]:
out ^= state[j]
state = [out] + state[:-1]
output.append(out)
return output
def main():
seq = [0, 1, 1, 0, 1, 0, 0, 1]
L, b, c = berlekamp_massey_algorithm(seq)
print(f"Shortest LFSR length: {L}")
print("LFSR polynomial coefficients (backward):")
print(b[::-1])
generated_seq = generate_lfsr_output(b[::-1], len(seq))
print("Generated sequence:")
print(generated_seq)
print("Verification result:")
print(seq == generated_seq)
if __name__ == '__main__':
main()
Výstup vypadá takto
Shortest LFSR length: 4 Polynomial: x^4 + x^3 + x^1 LFSR polynomial coefficients (backward): [1, 1, 0, 1, 0] original sequence: [0, 1, 1, 0, 1, 0, 0, 1] Generated sequence: [1, 1, 0, 0, 1, 0, 0, 0] Verification result: False
def berlekamp_massey(sequence):
n = len(sequence)
s = list(map(int, sequence))
k = 0
for k in range(n):
if s[k] == 1:
break
f = {k + 1, 0}
l = k + 1
g = {0}
a = k
b = 0
for n in range(k + 1, n):
d = 0
for item in f:
d ^= s[item + n - l]
if d == 0:
b += 1
else:
if 2 * l > n:
f ^= set([a - b + item for item in g])
b += 1
else:
temp = f.copy()
f = set([b - a + item for item in f]) ^ g
l = n + 1 - l
g = temp
a = b
b = n - l + 1
degree = max(f)
c = [0] * (degree + 1)
for exp in f:
c[degree - exp] = 1
return f, c, l
def get_polynomial_string(f):
result = ''
lis = sorted(f, reverse=True)
for i in lis:
if i == 0:
result += '1'
else:
result += 'x^%s' % str(i)
if i != lis[-1]:
result += ' + '
return result
def generate_lfsr_output(poly, seq_len, seq):
n = len(poly)
state = seq[:n-1][::-1]
output = []
for i in range(seq_len):
out = state[0]
for j in range(1, n):
if poly[j]:
out ^= state[j-1]
state = [out] + state[:-1]
output.append(out)
return output[::-1]
def main():
seq = [0, 1, 1, 0, 1, 0, 0, 1]
seq2 = [1, 1, 1, 1, 1, 1, 1, 1]
f, c, L = berlekamp_massey(seq)
print("Shortest LFSR length: {}".format(L))
print("Polynomial: {}".format(get_polynomial_string(f)))
print("LFSR polynomial coefficients (backward): {}".format(c))
generated_seq = generate_lfsr_output(c[::-1], len(seq), seq2)
print("original sequence:")
print(seq)
print("Generated sequence:")
print(generated_seq)
print("Verification result:")
print(seq == generated_seq)
if __name__ == '__main__':
main()
berlekamp_massey je pravděpodobně dobře, myslím, že je problém v generování LFSR, počátečním stavu, nebo tvaru polynomu.
Tiskni
Sdílej: