Найти - Пользователи
Полная версия: Помогите отладить
Начало » Python для новичков » Помогите отладить
1
bardinv
Помогите пожалуйста

Почему при начальных данных:
1
2
1 1
2 2
3 3
0
Выдает Take_coin, а не Go_to_coin ?

Исходный код:
 class Position:
  def __init__(self, x, y):
    self.x = x
    self.y = y
  def __eq__(self, other):
    return self.x == other.x and self.y == other.y
class Coin:
  def __init__(self, position):
    self.position = position
class Seeker:
  def __init__(self, position, has_coin):
    self.position = position
    self.has_coin = has_coin
def take_coin_condition(coins, seeker):
  return seeker.__eq__(coins) and not has_coin
def go_to_coin_condition(coins, seeker):
  return (not seeker.__eq__(coins)) and not has_coin
def get_action(maze, coins, seeker, opponent_seeker):
  if take_coin_condition(coins, seeker):
    return "Take_coin"  
  if go_to_coin_condition(coins, seeker):
    return "Go_to_coin"
  return "Go_to_base"
# Input
number_of_queries = int(input())
for i in range(number_of_queries):
  number_of_coins = int(input())
  coins = []
  for j in range(number_of_coins):
    x, y = [int(x) for x in input().split()]
    coins.append(Coin(Position(x, y)))
  x, y = [int(x) for x in input().split()]
  has_coin = bool(int(input()))
  seeker = Seeker(Position(x, y), has_coin)
  print(get_action(None, coins, seeker, None))
doza_and
bardinv
Почему … Выдает Take_coin, а не Go_to_coin ?
Вам надо написать: “ Я хотел сделать так” и описать словами или на другом языке программирования то что должна по вашему делать программа. А потом уж привести текст программы как вы это реализовали.

Тогда можно сравнивать два алгоритма. А сейчас ответ будет как у Вани в тридевятом царстве, что написали на питоне то и получаете.

bardinv
doza_and
Вам надо написать: “ Я хотел сделать так” и описать словами или на другом языке программирования то что должна по вашему делать программа

Я хотел реализовать такую логику: ​
если нет с собой монеты и её можно взять — поднять монету;
если нет с собой монеты — идти к ней;
иначе идти на базу.

У меня подозрения на то что неправильно написана эта часть кода:
 def take_coin_condition(coins, seeker):
  return seeker.__eq__(coins) and not has_coin
def go_to_coin_condition(coins, seeker):
  return (not seeker.__eq__(coins)) and not has_coin

По начальным данным:
1 - кол-во проверок
2 - кол-во монет
1 1 - координаты монеты 1
2 2 - координаты монеты 2
3 3 - координаты игрока
0 - есть ли у игрока монета изначально
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB