#!/usr/bin/python3.7
# -*- coding: utf-8 -*-
# @Time : 2019/3/18 9:34
# @Author: Jtyoui@qq.com
from jtyoui import parameter_set_length
"""
切比雪夫距离(棋盘距离)
在数学中,切比雪夫距离或是L∞度量,是向量空间中的一种度量,
二个点之间的距离定义是其各坐标数值差绝对值的最大值。以数学的观点来看,切比雪夫距离是由一致范数(uniform norm)
所衍生的度量,也是超凸度量的一种。
国际象棋中,国王可以直行、横行、斜行,所以国王走一步可以移动到相邻8个方格中的任意一个。
国王从格子(x1,y1)走到格子(x2,y2)最少需要多少步?这个距离就叫切比雪夫距离。
"""
[文档]@parameter_set_length
def chebyshev_distance(coordinate_p, coordinate_q):
"""传入的是两个可迭代对象,每一个是一个n位坐标,比如:p=(x1,x2,x3....xn),q=(y1,y2,y3....yn)
:param coordinate_p: p坐标
:param coordinate_q: q坐标
:return: 切比雪夫距离(棋盘距离)
"""
coordinate = []
for x, y in zip(coordinate_p, coordinate_q):
coordinate.append(abs(x - y))
return max(coordinate)
if __name__ == '__main__':
c_d = chebyshev_distance((11, 2, 2, 3, 23, 2), (3, 3, 2, 3, 2, 3))
print(c_d)