60 lines
1.7 KiB
Python
60 lines
1.7 KiB
Python
|
from random import sample
|
||
|
import threading
|
||
|
|
||
|
|
||
|
def guessInput(amount):
|
||
|
while True:
|
||
|
try:
|
||
|
answer = input(f'Gjett {amount} tall\n').split(' ')
|
||
|
assert len(answer) == amount
|
||
|
return [int(num) for num in answer]
|
||
|
except:
|
||
|
print(f'Er du sikker på at du har skrevet inn {amount} tall? Prøv igjen.')
|
||
|
|
||
|
drawNumber = lambda numList, amount: sample(numList, amount)
|
||
|
compList = lambda list1, list2: len([1 for elem in list1 if elem in list2])
|
||
|
|
||
|
def Winnings(rightNums, rightExtraNums):
|
||
|
isBiggerThan = lambda rn, ren: rightNums >= rn and rightExtraNums >= ren
|
||
|
if isBiggerThan(7,0): return 2749455
|
||
|
elif isBiggerThan(6,1): return 102110
|
||
|
elif isBiggerThan(6,0): return 3385
|
||
|
elif isBiggerThan(5,0): return 95
|
||
|
elif isBiggerThan(4,1): return 45
|
||
|
else: return 0
|
||
|
|
||
|
numbers = list(range(1,35))
|
||
|
calculateRightNumbers = lambda list: compList(list, drawNumber(numbers, len(list)))
|
||
|
combinedRightNumbers = lambda list1, list2: Winnings(calculateRightNumbers(list1), calculateRightNumbers(list2))
|
||
|
|
||
|
def main():
|
||
|
myGuess = guessInput(7)
|
||
|
print('Nå skal du gjette ekstra-tall')
|
||
|
myExtraGuess = guessInput(3)
|
||
|
|
||
|
print('Du vant {} kroner'.format(combinedRightNumbers(myGuess, myExtraGuess) - 5))
|
||
|
|
||
|
# g)
|
||
|
|
||
|
def calculateMillionSum(threadNum):
|
||
|
timesPerTread = int(1000000/threadNum)
|
||
|
results = []
|
||
|
|
||
|
def threadTarget():
|
||
|
partialSum = sum([combinedRightNumbers(sample(numbers, 7), sample(numbers, 3)) - 5 for _ in range(timesPerTread)])
|
||
|
results.append(partialSum)
|
||
|
|
||
|
threads = [threading.Thread(target=threadTarget) for _ in range(threadNum)]
|
||
|
|
||
|
for thread in threads:
|
||
|
thread.start()
|
||
|
for thread in threads:
|
||
|
thread.join()
|
||
|
|
||
|
return sum(results)
|
||
|
|
||
|
|
||
|
if __name__ == "__main__":
|
||
|
# main()
|
||
|
result = calculateMillionSum(64)
|
||
|
print(result)
|