Add exercises
This commit is contained in:
parent
f451574fe9
commit
35b3ba9524
|
@ -0,0 +1,45 @@
|
|||
from math import sqrt
|
||||
|
||||
|
||||
# O(√n)
|
||||
def isPrime(n):
|
||||
if n < 2: return False
|
||||
if n == 2 or n == 3 or n == 5: return True
|
||||
limit = int(sqrt(n))
|
||||
numberToCheck = 5
|
||||
while numberToCheck <= limit:
|
||||
if n % numberToCheck == 0: return False
|
||||
numberToCheck += 2 # Skip all even numbers
|
||||
return True
|
||||
|
||||
|
||||
# Would be O(log₂(n)), but isPrime(n) is used,
|
||||
# thus it's O(√n)
|
||||
def findAllFactors(n):
|
||||
factors = []
|
||||
while not isPrime(n):
|
||||
for i in range(2, int(n)):
|
||||
if n % i == 0:
|
||||
factors.append(i)
|
||||
n = n / i
|
||||
break
|
||||
factors.append(int(n))
|
||||
return factors
|
||||
|
||||
|
||||
def factorize(n):
|
||||
factors = []
|
||||
if isPrime(n):
|
||||
factors.append(n)
|
||||
else:
|
||||
factors = findAllFactors(n)
|
||||
return factors
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
n = int(input('Skriv inn et positivt heltall: '))
|
||||
factors = factorize(n)
|
||||
if len(factors) == 1:
|
||||
print(f'{n} er et primtall')
|
||||
else:
|
||||
print(f'{n} = {" * ".join([str(tall) for tall in factorize(n)])}')
|
|
@ -0,0 +1,62 @@
|
|||
from random import randint
|
||||
|
||||
|
||||
class multiplicationGame:
|
||||
def __init__(self, min, max, tries):
|
||||
self.min = min
|
||||
self.max = max
|
||||
self.tries = tries
|
||||
self.updateProblem()
|
||||
|
||||
def generateNewMultiplicationProblem(self) -> (int, int):
|
||||
number = lambda: randint(self.min, self.max)
|
||||
self.currentProblem = (number(), number())
|
||||
|
||||
def updateProblem(self):
|
||||
self.generateNewMultiplicationProblem()
|
||||
self.currentTries = self.tries
|
||||
|
||||
def userWantsNewQuestion(self) -> bool:
|
||||
while True:
|
||||
answer = input(
|
||||
'Er det ønskelig med flere spørsmål? Skriv 1 for ja og 0 for nei: ')
|
||||
if answer in ['1', '0']:
|
||||
return bool(int(answer))
|
||||
else:
|
||||
print('Skriv 1 for ja og 0 for nei')
|
||||
|
||||
def checkIfUserWantsNewQuestion(self):
|
||||
if not self.userWantsNewQuestion():
|
||||
exit(0)
|
||||
|
||||
def wrongAnswer(self):
|
||||
self.currentTries -= 1
|
||||
if self.currentTries == 0:
|
||||
print(
|
||||
'Dessverre klarte du ikke dette regnestykket, men vent så får du et nytt et:)'
|
||||
)
|
||||
self.checkIfUserWantsNewQuestion()
|
||||
self.updateProblem()
|
||||
else:
|
||||
print(f'Dessverre ikke riktig. Du har {self.currentTries} forsøk igjen.')
|
||||
|
||||
def correctAnswer(self):
|
||||
print('Gratulerer, det er helt riktig!')
|
||||
self.checkIfUserWantsNewQuestion()
|
||||
self.updateProblem()
|
||||
|
||||
def update(self):
|
||||
answer = int(input(f'Hva blir {self.currentProblem[0]} * {self.currentProblem[1]}? '))
|
||||
if answer == self.currentProblem[0] * self.currentProblem[1]:
|
||||
self.correctAnswer()
|
||||
else:
|
||||
self.wrongAnswer()
|
||||
|
||||
def loop(self):
|
||||
while True:
|
||||
self.update()
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
game = multiplicationGame(min=0, max=10, tries=3)
|
||||
game.loop()
|
Loading…
Reference in New Issue