Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
9
Task/Equilibrium-index/Python/equilibrium-index-1.py
Normal file
9
Task/Equilibrium-index/Python/equilibrium-index-1.py
Normal file
|
|
@ -0,0 +1,9 @@
|
|||
def eqindex2Pass(data):
|
||||
"Two pass"
|
||||
suml, sumr, ddelayed = 0, sum(data), 0
|
||||
for i, d in enumerate(data):
|
||||
suml += ddelayed
|
||||
sumr -= d
|
||||
ddelayed = d
|
||||
if suml == sumr:
|
||||
yield i
|
||||
6
Task/Equilibrium-index/Python/equilibrium-index-2.py
Normal file
6
Task/Equilibrium-index/Python/equilibrium-index-2.py
Normal file
|
|
@ -0,0 +1,6 @@
|
|||
def eqindexMultiPass(data):
|
||||
"Multi pass"
|
||||
for i in range(len(data)):
|
||||
suml, sumr = sum(data[:i]), sum(data[i+1:])
|
||||
if suml == sumr:
|
||||
yield i
|
||||
4
Task/Equilibrium-index/Python/equilibrium-index-3.py
Normal file
4
Task/Equilibrium-index/Python/equilibrium-index-3.py
Normal file
|
|
@ -0,0 +1,4 @@
|
|||
def eqindexMultiPass(s):
|
||||
return [i for i in xrange(len(s)) if sum(s[:i]) == sum(s[i+1:])]
|
||||
|
||||
print eqindexMultiPass([-7, 1, 5, 2, -4, 3, 0])
|
||||
9
Task/Equilibrium-index/Python/equilibrium-index-4.py
Normal file
9
Task/Equilibrium-index/Python/equilibrium-index-4.py
Normal file
|
|
@ -0,0 +1,9 @@
|
|||
from collections import defaultdict
|
||||
|
||||
def eqindex1Pass(data):
|
||||
"One pass"
|
||||
l, h = 0, defaultdict(list)
|
||||
for i, c in enumerate(data):
|
||||
l += c
|
||||
h[l * 2 - c].append(i)
|
||||
return h[l]
|
||||
10
Task/Equilibrium-index/Python/equilibrium-index-5.py
Normal file
10
Task/Equilibrium-index/Python/equilibrium-index-5.py
Normal file
|
|
@ -0,0 +1,10 @@
|
|||
f = (eqindex2Pass, eqindexMultiPass, eqindex1Pass)
|
||||
d = ([-7, 1, 5, 2, -4, 3, 0],
|
||||
[2, 4, 6],
|
||||
[2, 9, 2],
|
||||
[1, -1, 1, -1, 1, -1, 1])
|
||||
|
||||
for data in d:
|
||||
print("d = %r" % data)
|
||||
for func in f:
|
||||
print(" %16s(d) -> %r" % (func.__name__, list(func(data))))
|
||||
65
Task/Equilibrium-index/Python/equilibrium-index-6.py
Normal file
65
Task/Equilibrium-index/Python/equilibrium-index-6.py
Normal file
|
|
@ -0,0 +1,65 @@
|
|||
"""Equilibrium index"""
|
||||
|
||||
from itertools import (accumulate)
|
||||
|
||||
|
||||
# equilibriumIndices :: [Num] -> [Int]
|
||||
def equilibriumIndices(xs):
|
||||
'''List indices at which the sum of values to the left
|
||||
equals the sum of values to the right.
|
||||
'''
|
||||
def go(xs):
|
||||
'''Left scan from accumulate,
|
||||
right scan derived from left
|
||||
'''
|
||||
ls = list(accumulate(xs))
|
||||
n = ls[-1]
|
||||
return [
|
||||
i for (i, (x, y)) in enumerate(zip(
|
||||
ls,
|
||||
[n] + [n - x for x in ls[0:-1]]
|
||||
)) if x == y
|
||||
]
|
||||
return go(xs) if xs else []
|
||||
|
||||
|
||||
# ------------------------- TEST -------------------------
|
||||
# main :: IO ()
|
||||
def main():
|
||||
'''Tabulated test results'''
|
||||
print(
|
||||
tabulated('Equilibrium indices:\n')(
|
||||
equilibriumIndices
|
||||
)([
|
||||
[-7, 1, 5, 2, -4, 3, 0],
|
||||
[2, 4, 6],
|
||||
[2, 9, 2],
|
||||
[1, -1, 1, -1, 1, -1, 1],
|
||||
[1],
|
||||
[]
|
||||
])
|
||||
)
|
||||
|
||||
|
||||
# ----------------------- GENERIC ------------------------
|
||||
|
||||
# tabulated :: String -> (a -> b) -> [a] -> String
|
||||
def tabulated(s):
|
||||
'''heading -> function -> input List
|
||||
-> tabulated output string
|
||||
'''
|
||||
def go(f):
|
||||
def width(x):
|
||||
return len(str(x))
|
||||
def cols(xs):
|
||||
w = width(max(xs, key=width))
|
||||
return s + '\n' + '\n'.join([
|
||||
str(x).rjust(w, ' ') + ' -> ' + str(f(x))
|
||||
for x in xs
|
||||
])
|
||||
return cols
|
||||
return go
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
main()
|
||||
Loading…
Add table
Add a link
Reference in a new issue