Add exercises

haskell
Oystein Kristoffer Tveit 2020-09-14 18:40:56 +02:00
parent f451574fe9
commit 35b3ba9524
2 changed files with 107 additions and 0 deletions

View File

@ -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)])}')

View File

@ -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()