Enable Javascript in your browser and then refresh this page, for a much enhanced experience.
Really fast with bisect solution in Speedy category for The Final Stone by Serg900vd
from typing import List
from bisect import bisect
def final_stone(stones: List[int]) -> int:
stones.sort()
while stones:
if len(stones) == 1:
return stones[0]
if new := stones.pop() - stones.pop():
stones.insert(bisect(stones, new), new)
return 0
if __name__ == '__main__':
print('Example:')
print(final_stone([1, 2, 3]))
assert final_stone([3, 5, 1, 1, 9]) == 1
assert final_stone([1, 2, 3]) == 0
assert final_stone([1, 2, 3, 4]) == 0
assert final_stone([1, 2, 3, 4, 5]) == 1
assert final_stone([1, 1, 1, 1]) == 0
assert final_stone([1, 1, 1]) == 1
assert final_stone([1, 10, 1]) == 8
assert final_stone([1, 10, 1, 8]) == 0
assert final_stone([]) == 0
assert final_stone([1]) == 1
assert final_stone([10, 20, 30, 50, 100, 10, 20, 10]) == 10
print("The mission is done! Click 'Check Solution' to earn rewards!")
July 28, 2022