[(3,1,8,5), (4,2,8,6), (6,1,10,7)]
Je $n$ prvočíslo?
def je_prvocislo(n):
for delitel in range(2, n):
if n % delitel == 0: #zvysok po deleni
return False
return True
je_prvocislo(12456789)
False
je_prvocislo(103)
True
je_prvocislo(2**17-1)
True
2**17-1
131071
%%time
je_prvocislo(2**45-1)
CPU times: total: 0 ns Wall time: 0 ns
False
knihy = [12345, 23456, 34567, 45678]
knihy[1:3] #od indexu 1 az pred index 3 (1 ano, 3 uz nie) slice
[23456, 34567]
knihy[-1]
45678
knihy[:-2] #okrem poslednych dvoch
[12345, 23456]
list(reversed(knihy))
[45678, 34567, 23456, 12345]
knihy[1::2]
[23456, 45678]
knihy[::-1]
[45678, 34567, 23456, 12345]
knihy[-3:] #posledne tri knihy
[23456, 34567, 45678]
knihy[-1:-4:-1] #posledne tri obratene
[45678, 34567, 23456]
list(reversed(knihy[-3:]))
[45678, 34567, 23456]
knihy[:-3]+knihy[-1:-4:-1] #posledne tri otoc
[12345, 45678, 34567, 23456]
knihy.append(98765) #pridanie knihy
knihy = knihy[:-1] #odstranenie poslednej
poschodie = [1, 1, 0, 0, 1, 1]
for i in range(len(poschodie)-1):
print(f'#{i:02d}: {poschodie[i]}, {poschodie[i+1]}')
#00: 1, 1 #01: 1, 0 #02: 0, 0 #03: 0, 1 #04: 1, 1
dalsie = [1]
for i in range(len(poschodie)-1):
if poschodie[i] == poschodie[i+1]:
hodnota = 0
else:
hodnota = 1
dalsie.append(hodnota)
dalsie.append(1)
print(*dalsie)
1 0 1 0 1 0 1
list(zip(poschodie, poschodie[1:]))
[(1, 1), (1, 0), (0, 0), (0, 1), (1, 1)]
poschodie = [1] + [0 if a==b else 1 for a, b in zip(poschodie, poschodie[1:])] + [1] #One Liner
poschodie
[1, 0, 1, 0, 1, 0, 1]
poschodie = [1] + [0 if a==b else 1 for a, b in zip(poschodie, poschodie[1:])] + [1]
poschodie
[1, 1, 1, 1, 1, 1, 1, 1]
list(zip([4, -2, 3, 1], [-1, 2, 1, 6]))
[(4, -1), (-2, 2), (3, 1), (1, 6)]
sum(a*b for a, b in zip([4, -2, 3, 1], [-1, 2, 1, 6]))
1
from operator import mul
list(map(mul, [4, -2, 3, 1], [-1, 2, 1, 6]))
[-4, -4, 3, 6]
sum(map(mul, [4, -2, 3, 1], [-1, 2, 1, 6]))
1
import numpy as np
np.dot([4, -2, 3, 1], [-1, 2, 1, 6]) #skalarny sucin vektorov (dot product)
1
0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, ...
def tabulkovy_pocitac(stav, nasobice, n=10):
for iteracia in range(n):
print(f'#{iteracia:02d}: {stav[0]:5d}')
stav = [sum(a*b for a, b in zip(stav, nasobic)) for nasobic in nasobice]
tabulkovy_pocitac( (0, 1), [(0, 1), (1, 1)] )
#00: 0 #01: 1 #02: 1 #03: 2 #04: 3 #05: 5 #06: 8 #07: 13 #08: 21 #09: 34
tabulkovy_pocitac( (4, -2, 3, 1), [(0, 1, 0, 0), (0, 0, 1, 0), (-7, 2, 1, 6), (0, 0, 0, 1)])
#00: 4 #01: -2 #02: 3 #03: -23 #04: 3 #05: -58 #06: 115 #07: -16 #08: 626 #09: -205
tabulkovy_pocitac( (4, -2, 3, 6), [(0, 1, 0, 0), (0, 0, 1, 0), (-7, 2, 1, 1), (0, 0, 0, 1)])
#00: 4 #01: -2 #02: 3 #03: -23 #04: 3 #05: -58 #06: 115 #07: -16 #08: 626 #09: -205
# 1, 3, 4, 7, 11, 18,
tabulkovy_pocitac( (1, 3), [(0, 1), (1, 1)] ) #kod na sucet je rovnaky ako pri fibonacciho postupnosti
#00: 1 #01: 3 #02: 4 #03: 7 #04: 11 #05: 18 #06: 29 #07: 47 #08: 76 #09: 123
n = 10
a, b = 0, 1
for i in range(n-1):
a, b = b, a+b #Sucet dvoch predchadzajucich
print(a)
34