Получи случайную криптовалюту за регистрацию!

FlameCode

Логотип телеграм канала @flame_code — FlameCode F
Логотип телеграм канала @flame_code — FlameCode
Адрес канала: @flame_code
Категории: Технологии
Язык: Русский
Количество подписчиков: 2
Описание канала:

Питоним по-телеграмному 🐍
• изучаем Python
• изучаем ML
• прокачиваем логику
• решаем задачи с собеседований

Рейтинги и Отзывы

2.00

3 отзыва

Оценить канал flame_code и оставить отзыв — могут только зарегестрированные пользователи. Все отзывы проходят модерацию.

5 звезд

0

4 звезд

0

3 звезд

1

2 звезд

1

1 звезд

1


Последние сообщения

2022-07-19 17:28:52 Программируем тетрис. Часть 1

Два важных условия:
• Команды для игры мы будет задавать с помощью массива (а не щелкать кнопки как в обычной игре). принцип заключается в том, что мы передаём в конструктор нашего объекта последовательность команд, согласно которой перемещаются фигуры.
• Наш тетрис - это объект некоторого класса (который мы и будем создавать). его физика - методы класса.

Описание класса 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.

Ps: решение будет через 24 часа
5 viewsedited  14:28
Открыть/Комментировать
2022-07-18 17:02:41
Начинаем создавать тетрис

Необходимая база:

На Хабре есть старая, но всё ещё актуальная статья «Читаем QR-код». В самом начале говорится о служебных областях кода, которые необходимы для корректного определения кода: «маркеры» в трех углах и «тайминги» — чередование пикселей между маркерами.

При создании QR-кода используется избыточное кодирование: повреждение кода или некорректное считывание позволит верно декодировать полученную информацию. Существует 4 уровня избыточности (в %):
• 7
• 15
• 25
• 30
большая избыточность позволяет наносить в центр кода картинку.

Размер QR-кода зависит от размера входных данных и избыточности, поэтому стоит прибегнуть к математике. Самая очевидная функция — парабола вида
y=ax^2+bx+c
Начало координат — верхний левый угол кода. Для нахождения коэффициентов a, b и с нужны три точки:

• верхний правый угол левого маркера,
• верхний левый угол правого маркера,
• точка на вертикальной линии, делящей QR-код пополам.

Ps: завтра начинается практика
4 views14:02
Открыть/Комментировать
2022-07-14 17:37:56
Играем в тетрис и создаём QR-код

Надеюсь, создавать матрицу вам понравилось и вы готовы к следующему квесту

Многие знают, что сгенерировать QR-код на Python достаточно легко

import qrcode
data = "https://yandex.ru/"
filename = "qr.png"
img = qrcode.make(data)
img.save(filename)

Но, мы разнообразим процесс и сделаем так, что наш код-результат игры в тетрис

Что для этого нужно:

• Помним, что при создании QR-кода используется избыточное кодирование (существует несколько уровней).
• Библиотека qrcode, которая позволяет получить доступ к сгенерированному QR-коду как к двумерному массиву булевых значений, где каждый элемент соответствует пикселю.
• Библиотека imageio, которая позволяет форматировать анимированные изображения.
• Библиотека numpy, здесь она использовалась для решения системы матричных уравнений.

Вас ждет серия постов с информацией о том, как это сделать

Ps: первая публикация уже на этой неделе

#Поделисьзнанием #ТопБлог #flameIT
9 viewsedited  14:37
Открыть/Комментировать
2022-07-14 10:46:01 Решение задачи

Решение:

Это простейшая алгоритмическая задача, которая показывает мощь алгоритмического мышления. Смысл в том, чтобы каждый раз называть число, которое делит пополам диапазон возможных чисел.

Этот приём каждый раз в 2 раза сокращает область поиска, и в конце нам становится легко угадать даже простым перебором.

За 7 шагов можно угадать любое число от 0 до 127 или от 1 до 128. Всё потому, что два в седьмой степени — это как раз 128. Каждый раз, когда мы делим рабочий диапазон на 2, мы как будто убираем одну степень у двойки, постепенно уменьшая наш диапазон угадывания до двух чисел. Для верности лучше добавить ещё попытку.

Если бы у нас было 8 попыток, можно было бы угадывать числа до 256. 9 попыток — 512 и так далее.

На этом принципе построена модель данных «Бинарное дерево» — это одна из важнейших технологий для составления словарей и поиска данных.

#itЛогика #решение
9 views07:46
Открыть/Комментировать
2022-07-13 10:46:21 Математический трюк

Диалог:

— Загадай любое целое число от 0 до 100!
— Загадал.
— Спорим, я угадаю его за 7 попыток или быстрее? Я буду называть числа, а ты — отвечать, оно больше, меньше или равно загаданному.
— Ахахах, ты не сможешь угадать за 7 попыток!
— Спорим, угадаю!
— Ну давай, покажи своё кунфу…

6 попыток спустя он угадал число. Они попробовали снова, и во второй раз число было отгадано за семь попыток. В третий — за четыре. Сколько бы они ни играли, число всегда угадывалось за 7 попыток или менее.

Вопрос: как?

Ps: ответ через 24 часа

#itЛогика
7 views07:46
Открыть/Комментировать
2022-07-13 10:12:01 Решение задачи

Решение:

Всего 381 пассажир и 11 вагонов, отсюда:
x1 + x2 + x3 + x4 + x5 + x6 + x7 + x8 + x9 + x10 + x11 = 381

По условию три любых вагона подряд дают в сумме 99. Это значит, что:
x1 + x2 + x3 = 99
x4 + x5 + x6 = 99
x7 + x8 + x9 = 99

Перенесем эти равенства в первое уравнение:
99 + 99 + 99 + x10 + x11 = 381
297 + x10 + x11 = 381
x10 + x11 = 84

По условию в трёх последних вагонах также едет в сумме 99 пассажиров:
x9 + x10 + x11 = 99

Отсюда:
(x9 + x10 + x11) − (x10 + x11) = 99 − 84
x9 + x10 − x10 + x11 −x11 = 15
x9 = 15

Отсюда в девятом и третьем вагоне едет по 15 человек (так в задаче не указана откуда идёт нумерация вагонов: с головы или хвоста)

#itЛогика #решение
7 views07:12
Открыть/Комментировать
2022-07-12 10:22:35 Решай задачи - развивай логику

Условие:

Чтобы поддержать внутренний туризм, команда программистов купила билеты на поезд по Золотому кольцу и заняла все места. Всего в поезде было 11 вагонов и 381 место.
В разных вагонах ввиду конструкционных особенностей разное количество мест и, соответственно, разное количество пассажиров. Но в каждых любых трёх вагонах подряд в сумме едет ровно 99 человек. Какие бы три вагона подряд ни взяли — всё равно 99.
Сколько человек едет в девятом вагоне?
Пиши свой ответ в комментарии

Ps: решение будет через 24 часа

#itЛогика
6 views07:22
Открыть/Комментировать
2022-07-11 19:02:59
Как создать Матрицу

На выходных вышла серия постов о том, как создать матрицу из самой известной заставки:

• первый пост
• второй пост
• третий пост


Вот один из вариантов решения задачи

Своим решением, вопросами и предложениями можете поделиться в комментариях к этому посту

#ТопБЛОГ
9 views16:02
Открыть/Комментировать
2022-07-10 21:14:59 Матрица. Финал

Для подготовки консоли используем описанные в части 1 модули следующим образом:
bext.title ('Matrix') # меняем заголовок консоли
bext.clear () # очищаем консоль
bext.hide () # скрываем курсор в консоли
width, height = bext.size () # получаем размер консольного окна
width -= 1
height -= 1

Вводим константы с цветами. Нам нужен зелёный и тёмно-зелёный. Обязательно обращаем внимание на то, как называются нужные нам цвета в Windows:

lgreen = colorama.Fore.LIGHTGREEN_EX
green = colorama.Fore.GREEN

Интерфейсная часть готова.

Для капли создадим класс Drop
с атрибутами:
x - начальное положение по горизонтали
y - начальное положение по вертикали
drop_type - тип капли
timeout - задержка до следующего перемещения
wait_count - счетчик паузы
и методами:
move - метод перемещения капель
draw - метод рисования струи капли
con_print - метод для вывода символа нужного цвета в указанное место консольного окна
zero_draw - метод для рисования дополнительного 0 в начале каждой струи
renew - метод перерождения капель

Также не забываем, что нам нужны будут функции (вне класса) для вывода текста ( капель) в консоль.

Важное замечание: наша программа будет крутиться в вечном цикле while (true). Она завершится при нажатии кнопки Esc на клавиатуре. Добавим эту проверку:
key = bext.getKey (blocking = False) # проверка нажатия клавиша
if key == 'esc':
bext.clear ()
sys.exit ()

Попробуйте пройти все этапы и создать ту самую матрицу

Если не получиться, код решения будет опубликован уже завтра

7 views18:14
Открыть/Комментировать
2022-07-10 19:14:59 Матрица. Часть вторая

Объекты и классы Python

Напомню, что Python является объектно-ориентированным языком, поэтому Python позволяет определять собственные типы данных с помощью классов. Класс представляет некоторую сущность, конкретным воплощением которой является объект. Класс определяется с помощью ключевого слова class. Внутри класса определяются его атрибуты, которые хранят различные характеристики класса, и методы - функции класса:
class название_класса:
атрибуты_класса
методы_класса

Через ключевое слово self можно обращаться внутри класса к функциональности текущего объекта:
self.атрибут # обращение к атрибуту
self.метод # обращение к методу

Для создания объекта класса используется конструктор. У каждого класса есть конструктор по умолчанию, который не принимает параметров. Он вызывается как имя_класса().

Атрибуты хранят состояние объекта. Для определения и установки атрибутов внутри класса можно применять слово self.

Методы класса представляют функции, которые определенны внутри класса и которые определяют его поведение.

Размышления для нашей задачи:
Стекающая капля Матрицы - это объект. Визуализация нам подсказывает, что капли ведут себя по-разному, но имеют одинаковое устройство. Поэтому мы создадим класс, в котором опишем основные действия с каплей, её атрибуты, а также определим её скорость.

6 views16:14
Открыть/Комментировать