Уведомления

Группа в Telegram: @pythonsu

#1 Окт. 29, 2021 03:08:35

bardinv
Зарегистрирован: 2021-10-29
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

Помогите отладить

Помогите пожалуйста

Почему при начальных данных:
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))

Отредактировано bardinv (Окт. 29, 2021 03:14:50)

Офлайн

#2 Окт. 29, 2021 04:36:55

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  252  -
Профиль   Отправить e-mail  

Помогите отладить

bardinv
Почему … Выдает Take_coin, а не Go_to_coin ?
Вам надо написать: “ Я хотел сделать так” и описать словами или на другом языке программирования то что должна по вашему делать программа. А потом уж привести текст программы как вы это реализовали.

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



Офлайн

#3 Окт. 29, 2021 11:20:47

bardinv
Зарегистрирован: 2021-10-29
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

Помогите отладить

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 - есть ли у игрока монета изначально

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version