Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Avoid NameError when LOCAL=False #12

Open
wants to merge 1 commit into
base: main
Choose a base branch
from
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
34 changes: 17 additions & 17 deletions python/sprint5_final/B/code.py
Original file line number Diff line number Diff line change
@@ -1,20 +1,19 @@
# ! change LOCAL to False before submitting !
# set LOCAL to True for local testing

from typing import Optional

LOCAL = True
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Привет! Предлагаю это менять иначе -- вынести объявление ноды в отдельный модуль и подключать его везде при тестировании на сервере. Я бы не хотела, чтобы объявление ноды из студенческого кода прорастало в проверку, так как это открывает большую дорогу для поломок, хаков и всего остального. Я сделаю фикс для этого. За обнаружение проблемы спасибо, но пр мержить не будем

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Так уже и есть. Объявление ноды при проверке подключается ПОСЛЕ кода студента, и оно перезапишет тот класс, который есть у студента, так что хаков не будет. ПР только для упрощения жизни студента, чтобы ему не надо было делать бесполезную работу, переключая LOCAL туда-сюда. На самом деле это ни на что не влияет.

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

я поменяла сейчас с отдельным импортом ноды, все заработало, можешь глянуть https://contest.yandex.ru/contest/24810/run-report/81197781/

В какой-то момент я захочу добавить в каждую ноду секрет или еще какое значение, и жизнь станет сложнее для редактирования задачи. Короче я прям хочу, чтоб использовалось объявление класса из кода, который не доступен студенту)

if LOCAL:
class Node:
def __init__(self, left=None, right=None, value=0):
self.right = right
self.left = left
self.value = value

def remove(root, key) -> Optional[Node]:
# ! Do not change Node class !
class Node:
def __init__(self, left=None, right=None, value=0):
self.right = right
self.left = left
self.value = value


def remove(root, key) -> Optional["Node"]:
# Your code
# “ヽ(´▽`)ノ”
pass
...


def test():
node1 = Node(None, None, 2)
Expand All @@ -24,10 +23,11 @@ def test():
node5 = Node(node4, None, 8)
node6 = Node(node5, None, 10)
node7 = Node(node3, node6, 5)
newHead = remove(node7, 10)
assert newHead.value == 5
assert newHead.right is node5
assert newHead.right.value == 8
new_head = remove(node7, 10)
assert new_head.value == 5
assert new_head.right is node5
assert new_head.right.value == 8


if __name__ == '__main__':
test()
test()