Vekked the sort of vekk sort

This commit is contained in:
2018-12-11 21:08:47 +01:00
parent 0c7b1b60ac
commit e90edcc55d
4 changed files with 1000053 additions and 1 deletions

27
luke_01/README.md Normal file
View File

@@ -0,0 +1,27 @@
## Vekksort
Vi definerer Vekksort (O(n)) til å være den lineære sorteringsalgoritmen som:
Traverserer en liste fra første element.
Eliminerer hvert element som er mindre enn det forrige.
Inndata er en tekstfil med ett positivt heltall per linje.
Oppgaven er å finne summen til tallene i en liste sortert ved "hjelp" av Vekksort.
Eksempel input:
5
4
3
6
7
5
2
7
5
1
1
10
Eksempel output: 35 (fordi 5 + 6 + 7 + 7 + 10 = 35)
Innputfila finner du [her](./input-vekksort.txt).

1000000
luke_01/input-vekksort.txt Normal file

File diff suppressed because it is too large Load Diff

23
luke_01/vekksorrt.py Executable file
View File

@@ -0,0 +1,23 @@
#!/usr/bin/env python3
def fileContents(path='./input-vekksort.txt'):
import os
path = os.path.join(os.path.dirname(__file__), path)
with open(path, 'r') as f:
return f.read().split('\n')[:-1]
def vekk(numbers):
vekked = []
lastLarger = lambda curr, prev: int(curr) >= int(prev)
for i, num in enumerate(numbers):
if (i == 0 or lastLarger(num, vekked[-1])):
vekked.append(int(num))
return sum(vekked)
def main():
return vekk(fileContents())
if __name__ == '__main__':
print(main())

View File

@@ -1,2 +1,4 @@
from luke_01.vekksorrt import main as vekksort
def test_answer():
assert False
assert vekksort() == 12920419