Psst.. new poll here.
Psst.. new forums here.
Microsoft is blocking us again (TY IP Reputation!) so just use oauth login instead. :)
Paste
Pasted as Plain Text by vd ( 14 years ago )
#!/usr/bin/python
"""Программа выводит кол-во ходов, необходимых шахматному коню
для попадания из одной точки в другую"""
# Тут наши координаты, начальная и конечная, при том горизонтальная
# записывается цифрой (A=1, H=8). Можно их запрашивать у юзера, потом парсить
# (превращать A в 1 и т.д.), проверяя ошибки, но в цели данного примера это
# не входит
# =========================================================================== #
beg = [1, 1]
fin = [7, 8]
# =========================================================================== #
def islegal(coord):
"""Вернуть True, если такая клетка есть на доске и False, если за пределами
"""
if (coord[0] < 1) or (coord[0] > 8) or (coord[1] < 1) or (coord[1] > 8):
return False
else:
return True
def get_moves(coord):
"""Вернуть список всех клеток, на которые может пойти конь из
клетки coord"""
x = coord[0]
y = coord[1]
moves = []
for c in [[x-2, y-1], [x-2, y+1],
[x+2, y-1], [x+2, y+1],
[x-1, y+2], [x-1, y-2],
[x+1, y+2], [x+1, y-2]]:
if islegal(c):
moves.append(c)
return moves
def min_moves(beg, fin):
"""Вернуть кол-во ходов, нужных коню для перемещение из beg в fin)"""
move = 0
result = False
now = [beg]
while not result:
if fin in now:
result = True
else:
nxt = []
for c in now:
nxt += get_moves(c)
move += 1
now = nxt
return move
# Находим результат
move = min_moves(beg, fin)
#Выводим
print("Чтобы добраться из координаты {0} в координату {1}, коню надо {2} ход[ов]".format(beg, fin, move))
Revise this Paste
Children: 58759