RosettaCodeData/Task/Kernighans-large-earthquake-problem/Python/kernighans-large-earthquake-problem-2.py
2023-07-01 13:44:08 -04:00

38 lines
791 B
Python

from os.path import expanduser
from functools import (reduce)
from itertools import (chain)
# largeQuakes :: Int -> [String] -> [(String, String, String)]
def largeQuakes(n):
def quake(threshold):
def go(x):
ws = x.split()
return [tuple(ws)] if threshold < float(ws[2]) else []
return lambda x: go(x)
return concatMap(quake(n))
# main :: IO ()
def main():
print (
largeQuakes(6)(
open(expanduser('~/data.txt')).read().splitlines()
)
)
# GENERIC ABSTRACTION -------------------------------------
# concatMap :: (a -> [b]) -> [a] -> [b]
def concatMap(f):
return lambda xs: list(
chain.from_iterable(
map(f, xs)
)
)
# MAIN ---
if __name__ == '__main__':
main()