题目:
You need to add some trees and keep them evenly spaced.
You are given a list of integers as an input value. This is the position of an existing tree. You must return the minimum number of additional trees needed so that they could be evenly spaced.
Positions of the existing trees are already sorted.
All positions of trees are integers.
example
Example:
evenly_spaced_trees([0, 2, 6]) == 1 # add to 4.
evenly_spaced_trees([1, 3, 6]) == 3 # add to 2, 4 and 5.
evenly_spaced_trees([0, 2, 4]) == 0 # no need to add.
链接:
https://py.checkio.org/en/mission/evenly-spaced-trees/
代码:
from typing import List
def evenly_spaced_trees(trees: List[int]) -> int:
a = trees
xx = []
for i in range(0,len(a)-1):
xx.append(a[i+1]-a[i])
xx =sorted(xx)
def hcf(x):
x = sorted(x)
smaller = x[0]
for i in range(1,smaller + 1):
for j in x:
if j % i == 0:
if j == x[-1]:
hcf = i
else:
break
return hcf
y = hcf(xx)
r = 0
for i in xx:
r += int(i/y)-1
return r