This media is not supported in your browser
VIEW IN TELEGRAM
Играем в тетрис и создаём QR-код😱
Надеюсь, создавать матрицу вам понравилось и вы готовы к следующему квесту🔥
Многие знают, что сгенерировать QR-код на Python достаточно легко 👇🏻
Что для этого нужно:
• Помним, что при создании QR-кода используется избыточное кодирование (существует несколько уровней).
• Библиотека qrcode, которая позволяет получить доступ к сгенерированному QR-коду как к двумерному массиву булевых значений, где каждый элемент соответствует пикселю.
• Библиотека imageio, которая позволяет форматировать анимированные изображения.
• Библиотека numpy, здесь она использовалась для решения системы матричных уравнений.
Вас ждет серия постов с информацией о том, как это сделать👩🏽💻
Ps:первая публикация уже на этой неделе
#Поделисьзнанием #ТопБлог #flameIT
Надеюсь, создавать матрицу вам понравилось и вы готовы к следующему квесту🔥
Многие знают, что сгенерировать QR-код на Python достаточно легко 👇🏻
import qrcode
data = "https://yandex.ru/"
filename = "qr.png"
img = qrcode.make(data)
img.save(filename)
Но, мы разнообразим процесс и сделаем так, что наш код-результат игры в тетрис🧠Что для этого нужно:
• Помним, что при создании QR-кода используется избыточное кодирование (существует несколько уровней).
• Библиотека qrcode, которая позволяет получить доступ к сгенерированному QR-коду как к двумерному массиву булевых значений, где каждый элемент соответствует пикселю.
• Библиотека imageio, которая позволяет форматировать анимированные изображения.
• Библиотека numpy, здесь она использовалась для решения системы матричных уравнений.
Вас ждет серия постов с информацией о том, как это сделать👩🏽💻
Ps:
👍6
Начинаем создавать тетрис 🔥
Необходимая база:
На Хабре есть старая, но всё ещё актуальная статья «Читаем QR-код». В самом начале говорится о служебных областях кода, которые необходимы для корректного определения кода: «маркеры» в трех углах и «тайминги» — чередование пикселей между маркерами.
При создании QR-кода используется избыточное кодирование: повреждение кода или некорректное считывание позволит верно декодировать полученную информацию. Существует 4 уровня избыточности (в %):
• 7
• 15
• 25
• 30
большая избыточность позволяет наносить в центр кода картинку.
Размер QR-кода зависит от размера входных данных и избыточности, поэтому стоит прибегнуть к математике. Самая очевидная функция — парабола вида
Начало координат — верхний левый угол кода. Для нахождения коэффициентов a, b и с нужны три точки:
• верхний правый угол левого маркера,
• верхний левый угол правого маркера,
• точка на вертикальной линии, делящей QR-код пополам.
Ps:завтра начинается практика 👩🏽💻
Необходимая база:
На Хабре есть старая, но всё ещё актуальная статья «Читаем QR-код». В самом начале говорится о служебных областях кода, которые необходимы для корректного определения кода: «маркеры» в трех углах и «тайминги» — чередование пикселей между маркерами.
При создании QR-кода используется избыточное кодирование: повреждение кода или некорректное считывание позволит верно декодировать полученную информацию. Существует 4 уровня избыточности (в %):
• 7
• 15
• 25
• 30
большая избыточность позволяет наносить в центр кода картинку.
Размер QR-кода зависит от размера входных данных и избыточности, поэтому стоит прибегнуть к математике. Самая очевидная функция — парабола вида
y=ax^2+bx+c Начало координат — верхний левый угол кода. Для нахождения коэффициентов a, b и с нужны три точки:
• верхний правый угол левого маркера,
• верхний левый угол правого маркера,
• точка на вертикальной линии, делящей QR-код пополам.
Ps:
👍5
Программируем тетрис. Часть 1
Два важных условия:
• Команды для игры мы будет задавать с помощью массива (а не щелкать кнопки как в обычной игре). принцип заключается в том, что мы передаём в конструктор нашего объекта последовательность команд, согласно которой перемещаются фигуры.
• Наш тетрис - это объект некоторого класса (который мы и будем создавать). его физика - методы класса.
Описание класса QRTetris:
• Для нашего класса определим следующие поля, использую аннотацию типов:
· конструктор для инициализации полей
· build - для конструирования самого QR-кода
· find_markers - для задания маркеров декодирования
· get_points - для получения координат маркеров
· cut - для решения системы уравнений
· run - для отображения тетриса и сохранения результата
Попробуйте реализовать эти методы, используя библиотеки copy, logging, typing, numpy, qrcode.
Ps: решение будет через 24 часа
👩🏽💻
Два важных условия:
• Команды для игры мы будет задавать с помощью массива (а не щелкать кнопки как в обычной игре). принцип заключается в том, что мы передаём в конструктор нашего объекта последовательность команд, согласно которой перемещаются фигуры.
• Наш тетрис - это объект некоторого класса (который мы и будем создавать). его физика - методы класса.
Описание класса QRTetris:
• Для нашего класса определим следующие поля, использую аннотацию типов:
qr: Optional[QRCode] # объект кода
content: str # то, что кодирует код
program: Optional[List] # программа для тетриса
markers: Tuple[int, int]
# маркеры кода
• Методы, которые необходимо использовать:· конструктор для инициализации полей
· build - для конструирования самого QR-кода
· find_markers - для задания маркеров декодирования
· get_points - для получения координат маркеров
· cut - для решения системы уравнений
· run - для отображения тетриса и сохранения результата
Попробуйте реализовать эти методы, используя библиотеки copy, logging, typing, numpy, qrcode.
👍4
Реализация класса QRTetris. Часть 1
• В конструкторе инициализируем необходимые поля класса:
• Задаём информационные маркеры QR-кода
👩🏽💻
• В конструкторе инициализируем необходимые поля класса:
def __init__(self, content: str, program: str):
self.content = content
self.qr = None
self.program = program
• Создаём QR-код с помощью библиотеки Python def build(self):
self.qr = QRCode(
error_correction=qrcode.constants.ERROR_CORRECT_H
)
self.qr.add_data(self.content, optimize=True)
self.qr.make()|• Задаём информационные маркеры QR-кода
def find_markers(self):
s = 0
while self.qr.modules[0][s] is True and self.qr.modules[0][s + 1] is True:
s += 1
s += 1
f = self.qr.modules_count - 1
while self.qr.modules[0][f] is True and self.qr.modules[0][f - 1] is True:
f -= 1
f -= 1
self.markers = s, f
• Определяем координаты параболы для конструирования кода def get_points(self):
d = self.qr.modules_count // 3
s, f = self.markers
return [
(s, 0),
(f, 0),
((s+f) / 2, -d)
]
Эта функция нам необходима поскольку размер QR-кода зависит от размера входных данных и настроенной избыточности. Используем математику, для построения траектории падения элементов и создания игрового поля. Самая очевидная функция — парабола: y=ax^2+bx+c 👩🏽💻
👍4
Ещё один математический фокус 👩🏽💻
Несложный математический трюк поможет узнать вам дату рождения любого человека:
— Проделай у себя в голове следующие математические операции: умножь число своего рождения на 2, прибавь туда 5, а потом результат умножь на 50, прибавь к этому номер месяца из своей даты рождения.
— 1555.
— У тебя день рождения 13 мая!
Знаешь, как удалось угадать?
Ps:разгадка вечером
#itЛогика
Несложный математический трюк поможет узнать вам дату рождения любого человека:
— Проделай у себя в голове следующие математические операции: умножь число своего рождения на 2, прибавь туда 5, а потом результат умножь на 50, прибавь к этому номер месяца из своей даты рождения.
— 1555.
— У тебя день рождения 13 мая!
Знаешь, как удалось угадать?
Ps:
👍4
Объяснение задачи 👩🏽💻
Так как в любом фокусе с числами всё основано на чистой математике и формулах, мы пойдём тем же путём: обозначим день рождения за X, а месяц — за Y.
Выполним все действия по очереди:
• умножаем день на 2: X × 2
• прибавляем 5: X × 2 + 5
• умножаем на 50: (X × 2 + 5) × 50 = 100X + 250
• прибавляем номер месяца: 100X + 250 + Y
Откинем слагаемое 250 и получим 100X + Y — только те числа, которые связаны с датой рождения.
Независимо от того, чему у нас равен икс, если его умножим на 100, то в конце числа у нас будет два ноля, а в начале — сам день рождения.
Например, если день рождения 13 мая, то 13 × 100 = 1300 → отбрасываем последние два числа и снова получаем 13.
Но раз у нас в конце стоят два ноля, то что бы к ним двузначного ни прибавили, получим то же самое число. Количество месяцев у нас всегда двузначное, поэтому они не смогут повлиять на третий разряд в итоговом числе.
Получается, что в формуле 100X + Y последние два числа — это номер месяца в дате рождения.
Проверим на дате 13 мая: 13 × 100 + 5 = 1305. Последние два числа — это месяц (05), а что осталось спереди — это день (13).
Но всё это у нас получается, если откинуть от итогового результата 250. Значит, когда вам называют итоговое число, то от него нужно отнять 250, а потом разложить ответ на составляющие: месяц (2 последние цифры) и день (всё остальное спереди).
Согласись, на самом деле всё легко😜
Так как в любом фокусе с числами всё основано на чистой математике и формулах, мы пойдём тем же путём: обозначим день рождения за X, а месяц — за Y.
Выполним все действия по очереди:
• умножаем день на 2: X × 2
• прибавляем 5: X × 2 + 5
• умножаем на 50: (X × 2 + 5) × 50 = 100X + 250
• прибавляем номер месяца: 100X + 250 + Y
Откинем слагаемое 250 и получим 100X + Y — только те числа, которые связаны с датой рождения.
Независимо от того, чему у нас равен икс, если его умножим на 100, то в конце числа у нас будет два ноля, а в начале — сам день рождения.
Например, если день рождения 13 мая, то 13 × 100 = 1300 → отбрасываем последние два числа и снова получаем 13.
Но раз у нас в конце стоят два ноля, то что бы к ним двузначного ни прибавили, получим то же самое число. Количество месяцев у нас всегда двузначное, поэтому они не смогут повлиять на третий разряд в итоговом числе.
Получается, что в формуле 100X + Y последние два числа — это номер месяца в дате рождения.
Проверим на дате 13 мая: 13 × 100 + 5 = 1305. Последние два числа — это месяц (05), а что осталось спереди — это день (13).
Но всё это у нас получается, если откинуть от итогового результата 250. Значит, когда вам называют итоговое число, то от него нужно отнять 250, а потом разложить ответ на составляющие: месяц (2 последние цифры) и день (всё остальное спереди).
Согласись, на самом деле всё легко😜
👍2
Реализация класса QRTetris. Часть 2
• Метод для решения СЛУ
• Метод для решения СЛУ
def cut(self):
if self.qr is None:
logger.error(f"No QR code generated. Call build() first!")
return
self._find_markers()
points = self.get_points()
count = len(points)
A = []
b = []
for x, y in points:
A.append(
[x**i for i in reversed(range(count))]
)
b.append(y)
result = tuple(np.linalg.solve(A, b))
logger.debug(f"Solution: {result}")
for i in range(self.qr.modules_count):
for j in range(self.qr.modules_count):
s = 0
for index, k in enumerate(reversed(range(count))):
s += result[index] * j**k
if s < -i:
self.qr.modules[i][j] = False
• Метод отрисовки тетриса согласно нашей программе def run(
self,
interval = 0.5,
fast_interval = 0.1,
output: Optional[str] = None,
show=True
):
field = GameField(
self.qr,
interval=interval,
fast_interval=fast_interval,
gif_output=output,
tty_enabled=show
)
for instruction in self.program:
field.execute(instruction)
if output:
field.save_gif()
field.cleanup()
👩🏽💻👍3
Немногие знают, что живу я в чудесном городе на юге нашей страны - Ростове-на-Дону
В рамках проекта #ТопБлог нам предложили рассказать о личном бренде своего города.
Мне стало интересно это сделать в формате бота-экскурсовода.
Функционал:
• Пользователь получает карту с маршрутом перемещения.
• В заданном порядке пользователь проходит экскурсионный маршрут, получая интерактивную историческую справку о каждой достопримечательности.
• После изучения достопримечательности пользователю предлагается пройти квиз для закрепления знаний.
• За прохождение маршрута пользователь получает баллы.
• В конце экскурсии пользователь может обменять баллы на сувениры южной столицы.
Цель:
Сделать изучение истории интерактивным процессом.
Проект выполняется совместно с историческим факультетом ЮФУ.
Первыми пользователями будут студенты первого курса, для которых ежегодно проводят экскурсии по городу.
Как вам идея? Хотели бы попробовать?
#ТопБЛОГ, #РоссияСтранаВозможностей, #БольшеЧемПутешествие.
@stranavozmojnostey.
В рамках проекта #ТопБлог нам предложили рассказать о личном бренде своего города.
Мне стало интересно это сделать в формате бота-экскурсовода.
Функционал:
• Пользователь получает карту с маршрутом перемещения.
• В заданном порядке пользователь проходит экскурсионный маршрут, получая интерактивную историческую справку о каждой достопримечательности.
• После изучения достопримечательности пользователю предлагается пройти квиз для закрепления знаний.
• За прохождение маршрута пользователь получает баллы.
• В конце экскурсии пользователь может обменять баллы на сувениры южной столицы.
Цель:
Сделать изучение истории интерактивным процессом.
Проект выполняется совместно с историческим факультетом ЮФУ.
Первыми пользователями будут студенты первого курса, для которых ежегодно проводят экскурсии по городу.
Как вам идея? Хотели бы попробовать?
#ТопБЛОГ, #РоссияСтранаВозможностей, #БольшеЧемПутешествие.
@stranavozmojnostey.
👏4🔥1
6 пасхалок языка Python 😏
• Летающий змий
Запускается командой:
• Geohash
В этой пасхалке есть еще одна пасхалка. Изучение реализации модуля antigravity.py обнаруживает скрытую функцию под названием «geohash», которая является ссылкой на другой комикс XKCD о геохешировании. Запуск:
• Нет шансов для фигурных скобок
Предпочитаете фигурные скобки в стиле C вместо отступов? Увы их никогда не будет:
Хеш – это фиксированное целое число, идентифицирующее конкретную величину. Хеш бесконечности в Python равен 10⁵ x π. Интересно, что float('-inf') в Python3 хэш равен «-10⁵ x π», а в Python 2 – «-10-x e»:
Только в Python заветную фразу "примет, мир!" можно получить так просто:
Все пасхалки вы можете проверить самостоятельно в интерпретаторе, запустив команду: $ python3
• Летающий змий
Запускается командой:
>>> import antigravity
Команда открывает в браузере комикс XKCD, в котором упоминается Python.• Geohash
В этой пасхалке есть еще одна пасхалка. Изучение реализации модуля antigravity.py обнаруживает скрытую функцию под названием «geohash», которая является ссылкой на другой комикс XKCD о геохешировании. Запуск:
>>> help(antigravity.geohash)
Функция использует алгоритм Рэндалла Манро, который генерирует случайные координаты GPS каждый день на основе промышленного индекса Доу-Джонса и текущей даты.• Нет шансов для фигурных скобок
Предпочитаете фигурные скобки в стиле C вместо отступов? Увы их никогда не будет:
>>> from __future__ import braces
File "<stdin>", line 1
SyntaxError: not a chance
• Хеш бесконечностиХеш – это фиксированное целое число, идентифицирующее конкретную величину. Хеш бесконечности в Python равен 10⁵ x π. Интересно, что float('-inf') в Python3 хэш равен «-10⁵ x π», а в Python 2 – «-10-x e»:
>>> hash (float ('inf'))
314159
>>> hash (float ('nan'))
0
• Hello WorldТолько в Python заветную фразу "примет, мир!" можно получить так просто:
>>> import __hello__
Hello World!
• Жизненная пасхалка о любви:>>> import this
>>> love = this
>>> this is love
True
>>> love is True
False
>>> love is False
False
>>> love is not True or False
True
>>> love is not True or False; love is love # FML
True
Ps: 👩🏽💻👍4
This media is not supported in your browser
VIEW IN TELEGRAM
Завершаем QRTetris
В методе
Данный класс содержит следующие методы для отрисовки фигур падающих вниз, перемещающихся влево и вправо, отдельно реализован метод падения и ротации фигур, а также сохранения результата.
Код был получен с помощью следующей последовательности действий:
В методе
run(self, interval = 0.5, fast_interval = 0.1, output: Optional[str] = None, show=True )
мы используем объект класса GameField для создания игрового поля. Данный класс содержит следующие методы для отрисовки фигур падающих вниз, перемещающихся влево и вправо, отдельно реализован метод падения и ротации фигур, а также сохранения результата.
Код был получен с помощью следующей последовательности действий:
spawn z
down
left
down
left
drop
spawn i
down
down
drop
spawn z_reversed
down
left
down
left
down
left
rotate
down
left
drop
👩🏽💻👍4
IT-ИНСТРУМЕНТЫ ДЛЯ РАЗВИТИЯ КУЛЬТУРЫ🤖
Я продолжаю путешествовать по Калининградской области и встретилась с очень интересными соединением культуру, историю и IT.
Мы можем соединить it и культуру следующими способами:
• Облачные технологии
• Открытый доступ к данным
• Виртуальная реальность
• Оцифровка музеев
• Свобода панорамы
• Свободное распространение произведений, созданных на средства госбюджета
А вот те примеры, которые меня зацепили в Калининграде и которые я рекомендую вам:
Отличный пример я увидела в Калининграде - селфи с философом Иммауилом Кантом. У Кафедрального собора города в 2021 году установили голограмму философа.
Данный проект комплексный и требовал написание программы, конфигурация оборудования, и создание интерактивного фильма.
Результат-это стенд со специальным экраном, меняющим яркость в зависимости от освещения, в который встроено дополнительное оборудование: камера, динамики, сканер QR-кодов.
Ещё один пример созидания культурного наследия это экскурсионный маршрут «ОСТРОВ КАНТА: СКВОЗЬ ВРЕМЯ» - путешествие во времени в виртуальной реальности. Здесь используется технология виртуальной реальности + специально разработанный аудиогид. Комбинированные способы передачи изображения и звука раскрывают уникальную историю города. Вы перемещаетесь из настоящего в прошлое и узнаете историю основания Кёнигсберга и появления острова Канта.
Во время экскурсии вы увидите Королевский замок, Дровяной и Медовый мосты, вступите на остров Канта, посетите Соборную площадь, могилу Канта и университет Альбертину.
Таким образом, погружение в историю, позволяет глубже и детальнее изучить культуру и историю.
#ТопБЛОГ, #РоссияСтранаВозможностей, #БольшеЧемПутешествие.
@stranavozmojnostey.
Я продолжаю путешествовать по Калининградской области и встретилась с очень интересными соединением культуру, историю и IT.
Мы можем соединить it и культуру следующими способами:
• Облачные технологии
• Открытый доступ к данным
• Виртуальная реальность
• Оцифровка музеев
• Свобода панорамы
• Свободное распространение произведений, созданных на средства госбюджета
А вот те примеры, которые меня зацепили в Калининграде и которые я рекомендую вам:
Отличный пример я увидела в Калининграде - селфи с философом Иммауилом Кантом. У Кафедрального собора города в 2021 году установили голограмму философа.
Данный проект комплексный и требовал написание программы, конфигурация оборудования, и создание интерактивного фильма.
Результат-это стенд со специальным экраном, меняющим яркость в зависимости от освещения, в который встроено дополнительное оборудование: камера, динамики, сканер QR-кодов.
Ещё один пример созидания культурного наследия это экскурсионный маршрут «ОСТРОВ КАНТА: СКВОЗЬ ВРЕМЯ» - путешествие во времени в виртуальной реальности. Здесь используется технология виртуальной реальности + специально разработанный аудиогид. Комбинированные способы передачи изображения и звука раскрывают уникальную историю города. Вы перемещаетесь из настоящего в прошлое и узнаете историю основания Кёнигсберга и появления острова Канта.
Во время экскурсии вы увидите Королевский замок, Дровяной и Медовый мосты, вступите на остров Канта, посетите Соборную площадь, могилу Канта и университет Альбертину.
Таким образом, погружение в историю, позволяет глубже и детальнее изучить культуру и историю.
#ТопБЛОГ, #РоссияСтранаВозможностей, #БольшеЧемПутешествие.
@stranavozmojnostey.
👍5
Знакомство с Google Colab ✨
Google Colaboratory — бесплатная среда, чтобы писать код в jupyter notebook. Она функционирует по принципу облака, поэтому над одним проектом могут работать одновременно несколько человек. Ограничение — через 12 часов данные удаляются.
• Colab — бесплатный сервис, чтобы создавать код на Python.
• Главная фишка Colab — возможность писать проект на мощностях процессоров GPU и TPU.
• В Colab можно загружать папки с гугл-диска, клонировать репозитории.
Colab подходит специалистам по обработке данных и разработчикам нейросетей.
Он помогает:
• сортировать данные,
• строить визуализации,
• проводить машинное обучение,
• создавать системы для big data,
• составлять прогнозы,
• писать руководства.
Документация
Google Colaboratory — бесплатная среда, чтобы писать код в jupyter notebook. Она функционирует по принципу облака, поэтому над одним проектом могут работать одновременно несколько человек. Ограничение — через 12 часов данные удаляются.
• Colab — бесплатный сервис, чтобы создавать код на Python.
• Главная фишка Colab — возможность писать проект на мощностях процессоров GPU и TPU.
• В Colab можно загружать папки с гугл-диска, клонировать репозитории.
Colab подходит специалистам по обработке данных и разработчикам нейросетей.
Он помогает:
• сортировать данные,
• строить визуализации,
• проводить машинное обучение,
• создавать системы для big data,
• составлять прогнозы,
• писать руководства.
Документация
👍4
Начало работы в Google Colab ✨
Colab по умолчанию сохраняет блокноты на гугл-диске. Для начала войдите в аккаунт и создайте отдельную папку под готовые проекты.
Запустите блокнот. Нажмите «Создать» → «Еще» → Google Colaboratory. Чтобы переименовать блокнот, щелкните на имя файла.
Для настройки процессора выберите вкладку «Среда выполнения» и команду «Сменить среду управления». Помните, что, выбрав слишком мощный, есть риск вылететь из блокнота.
Colab по умолчанию сохраняет блокноты на гугл-диске. Для начала войдите в аккаунт и создайте отдельную папку под готовые проекты.
Запустите блокнот. Нажмите «Создать» → «Еще» → Google Colaboratory. Чтобы переименовать блокнот, щелкните на имя файла.
Для настройки процессора выберите вкладку «Среда выполнения» и команду «Сменить среду управления». Помните, что, выбрав слишком мощный, есть риск вылететь из блокнота.
👍4
Запуск основных команд Python в Colab🐍
В Colab много встроенных библиотек Python: Pandas, NumPy, Scikit-learn. Посмотреть полный список можно с помощью команды:
Чтобы подключить сторонние файлы с данными или кодом, нужно импортировать утилиту drive. Она монтирует диск к Colab:
Импорт файлов:
• напрямую закидывать на диск;
• скачать из интернета;
• скачать с Git-репозитория.
Последние два варианта исполняют непосредственно из Colab, дополнительно используя встроенные утилиты.
Для скачивания файл из интернета используется команда:
Для скачивания репозитория (GitHub, Bitbacket и другие) используется команда:
В Colab много встроенных библиотек Python: Pandas, NumPy, Scikit-learn. Посмотреть полный список можно с помощью команды:
!pip list
Для импорта сторонних библиотек, используйте команды:!pip install имя_библиотеки
import имя_библиотеки
Для выполнения кода щелкните на значок Play в левой части окна кода. Для очистки строки, щелкните на значок крестика в левой части окна. Чтобы подключить сторонние файлы с данными или кодом, нужно импортировать утилиту drive. Она монтирует диск к Colab:
from google.colab import drive
drive.mount ('/content/drive')
Когда выполните код выше, подтвердите, что разрешаете использовать диск.Импорт файлов:
• напрямую закидывать на диск;
• скачать из интернета;
• скачать с Git-репозитория.
Последние два варианта исполняют непосредственно из Colab, дополнительно используя встроенные утилиты.
Для скачивания файл из интернета используется команда:
!wget path/to/link Для скачивания репозитория (GitHub, Bitbacket и другие) используется команда:
!git clone path\to\repo👍4
С днём рождения ПК🥳
Компания IBM 41 год назад, а именно 12 августа 1981 года, выпустила первый ПК.
Присоединяйтесь к поздравлениям и поздравьте своих коллег!
Компания IBM 41 год назад, а именно 12 августа 1981 года, выпустила первый ПК.
Присоединяйтесь к поздравлениям и поздравьте своих коллег!
👍2
Задача про три участка и роутер 👩🏽💻
Три брата купили квадратные участки в лесном посёлке. Участки одинакового размера. Длина каждого участка — 100 метров, а расположены они треугольником.
Братья решили сэкономить на интернете и поставить один роутер на троих. Чтобы найти точку, одинаково близкую ко всем участкам, они вплотную обвели три квадрата в круг и поставили роутер точно в центре получившегося круга.
Но братья не учли, что сигнал роутера дотягивается только на 130 метров, а дальше интернет теряется. Хватит ли братьям этого роутера или нужно взять мощнее?
Ответ:будет через 24 часа
#itЛогика
Три брата купили квадратные участки в лесном посёлке. Участки одинакового размера. Длина каждого участка — 100 метров, а расположены они треугольником.
Братья решили сэкономить на интернете и поставить один роутер на троих. Чтобы найти точку, одинаково близкую ко всем участкам, они вплотную обвели три квадрата в круг и поставили роутер точно в центре получившегося круга.
Но братья не учли, что сигнал роутера дотягивается только на 130 метров, а дальше интернет теряется. Хватит ли братьям этого роутера или нужно взять мощнее?
Ответ:
👍4