Числа и ввод · 30 из 37
Ковёр Серпинского
Квадрат делят на девять и вырезают средний. С каждым из восьми оставшихся — то же самое, и так дальше: получается ковёр, дырявый на всех масштабах. Узнать, вырезана ли клетка, можно, не рисуя ни одного квадрата: достаточно записать её номер строки и столбца в троичной системе.
Что сделать
Узнайте, цела ли клетка (x, y) ковра: она вырезана, если в каком-то разряде троичной записи у x и у y одновременно стоит 1.
Что приходит
x— номер столбца клетки, целое от 0y— номер строки клетки, целое от 0
Что вернуть
True — клетка цела, False — вырезана.
Допишите функцию v_kovre в редакторе справа.
Результат верните через return — то, что
напечатано, на проверку не влияет.
с графикой когда тесты пройдут, ответ вашей функции нарисуется · все задачи с графикой
Клетка (1, 1) — центр самого первого квадрата 3 × 3: в младшем разряде у обоих 1 — вырезана, False. Клетка (5, 7): 5 = 12₃, 7 = 21₃ — единицы в разных разрядах, цела, True.
v_kovre(1, 1)
False
Разряды троичной записи — остатки от деления на 3: младший — x % 3, следующий — (x // 3) % 3 и так далее. Клетка вырезана, если найдётся разряд, где у x и у y обоих 1. Разряды смотрятся, пока у x или у y остались ненулевые; у числа, которое кончилось, все старшие разряды — 0.
Обсуждение
Вопросов пока нет.
Войдите, чтобы спросить.