Enable Javascript in your browser and then refresh this page, for a much enhanced experience.
One liner solution in Clear category for Can Balance by petr.synek.phd
from typing import Iterable
def can_balance(weights: Iterable) -> int:
# One Liner
return (
[
(
sum(
[
i * weights[:center][::-1][i - 1]
for i in range(1, len(weights[:center]) + 1)
]
)
== sum(
[
i * weights[center + 1 :][i - 1]
for i in range(1, len(weights[center + 1 :]) + 1)
]
)
)
for center in range(1, len(weights))
].index(True)
+ 1
if any(
[
(
sum(
[
i * weights[:center][::-1][i - 1]
for i in range(1, len(weights[:center]) + 1)
]
)
== sum(
[
i * weights[center + 1 :][i - 1]
for i in range(1, len(weights[center + 1 :]) + 1)
]
)
)
for center in range(1, len(weights))
]
)
else -1
if len(weights) > 1
else 0
)
if __name__ == '__main__':
print("Example:")
print(can_balance([6, 1, 10, 5, 4]))
# These "asserts" are used for self-checking and not for an auto-testing
assert can_balance([6, 1, 10, 5, 4]) == 2
assert can_balance([10, 3, 3, 2, 1]) == 1
assert can_balance([7, 3, 4, 2, 9, 7, 4]) == -1
assert can_balance([42]) == 0
print("Coding complete? Click 'Check' to earn cool rewards!")
Aug. 14, 2021
Comments: