30 lines
894 B
Python
Executable File
30 lines
894 B
Python
Executable File
#!/usr/bin/python3
|
|
from math import ceil, floor, sqrt
|
|
|
|
|
|
def get_steps(m):
|
|
"""Nombre d'étapes pour le mouvement en spirale."""
|
|
# Calcul de la couche de spirale
|
|
n = ceil((sqrt(m) - 1) / 2)*2+1
|
|
# Calcul des valeurs de tous les coins de la "couche" de spirale
|
|
edges = sorted([n ** 2 - i * (n - 1) for i in range(4)])
|
|
# Mouvements depuis un coin
|
|
edgemvt = n - 1
|
|
if m in edges:
|
|
return edgemvt
|
|
# Sinon, on compte à partir du coin supérieur au nombre
|
|
for e in range(3):
|
|
if edges[e] < n:
|
|
continue
|
|
print(edges[e])
|
|
# Si on n'a pas encore atteint le milieu du côté de la couche
|
|
if (n ** 2 - m) <= floor(n / 2):
|
|
print('<=')
|
|
return edgemvt - (edges[e] - m)
|
|
return edges[e] - m
|
|
|
|
|
|
if __name__ == '__main__':
|
|
print("Square number : ", end="")
|
|
print(get_steps(int(input())))
|