green_fr: (Default)
Я уже давно, ещё после бессонной ночи у [personal profile] catpad (ничего личного, просто jetlag) хотел побаловаться с python. До какого-то начального уровня прокачал (достаточно, чтобы детям помогать с домашним заданием из школы — они там тоже python учат), но двигаться дальше уже сложно, нужны какие-то конкретные примеры, вместе с мотивацией ими заниматься. После поста [personal profile] avva записал себе идею пройти Advent of Code, а тут как раз удачно порвал связки на лыжах, и у меня оказались под рукой насколько свободных дней, компьютер и интернет. Запустил python (Spyder — когда-то давно поставил себе Anaconda, что-то там надо было разобрать с матрицами, не пригодилось, но и не снёс), открыл первый попавшийся справочник по python, открыл ChatGPT (avva не рекомендовал, но мне эта часть как раз показалась самой интересной) — и понеслась!

Чтобы иметь возможность «соревноваться» с упомянутым в посте Питером Норвигом (я не знаю, кто это, Википедию только что прочитал), занялся прошлогодним календарём. Задачки все, в принципе, не сложные, если ты когда-то занимался около-олимпиадным программированием. У меня к ChatGPT были в основном вопросы о структурах данных — примерно описываешь, что ты хочешь сделать, и спрашиваешь, как называется соответствующий тип данных, а потом читаешь документацию о том, как на самом деле работают все эти tuple / set / list / dictionnary. Решил задачу — смотришь на решение Норвига, понимаешь, насколько проще можно было написать, запоминаешь идеи впрок, в следующих задачах пытаешься их использовать.

Разобрался попутно с GitHub. В прошлый раз, когда я на питоне пытался сделать Splendor (а точнее даже платформу для произвольных настольных игр, что-то вроде Tabletopia — была у меня мечта устроить соревнование разных самообучающихся алгоритмов, чтобы находить какие-то новые стратегии в игрушках, но это быстро переросло объём времени, который я согласен выделять на хобби) я уже сделал себе репозиторий, в этот раз разобрался и с клиентом.

Попытался разобраться с jupyter, но что-то пошло не так. Если у кого-то из друзей найдётся время, чтобы провести меня за руку по всему процессу от начала до первого hello world, буду признателен. Хотя, наверное, это как раз самое то, что нужно спрашивать у ChatGPT.


Задачи очень хорошо сделаны. Во-первых, всегда есть какое-то бредовое введение. Танцующие слоны, летающие обезьяны, не работающий передатчик, который ты должен срочно починить. Во-вторых, каждая задача из нескольких частей. Сначала простой пример, на котором тебе объясняют правила. Я сначала про себя ругался: кому они так разжёвывают условия? Пока не наткнулся на задачу (№ 23), в которой я сам не понял условия, и только перечитав 5 раз пример, понял, что я неправильно интерпретировал одно слово в задании. Короче, не надо бояться казаться слишком подробным.

Так вот, на этом примере ты пишешь свой код, отлаживаешь его, убеждаешься в работоспособности, а потом только включаешь данные настоящей задачи. У меня всегда настоящая задача сразу же работала правильно. Один раз (задача № 7) система выдала, что я неправ. Я потерял несколько часов, написав сначала другое решение (ответ тот же). Потом сделав Excel-файл, в котором решил эту же задачу чуть ли не ручками — всё равно ответ тот же. После чего система приняла его — а я понял, что никогда не надо вбивать правильный ответ руками, всегда нужно копировать. Видимо, в первый раз я просто опечатался — а сайт просто говорит, что ты ошибся, не показывая твой вариант ответа (хозяйке на заметку: это очень плохой дизайн).

Так вот, а после этого тебе выдают вторую часть той же задачи. После которого ты обычно говоришь себе, что да, данные можно было бы организовать и по-другому. И то, что годилось для первой части, займёт несколько дней расчёта для второй, если только всё не переписать заново. И ты переписываешь всё заново. Офигенное упражнение — пытаться сразу видеть будущие осложнения в задаче!
Read more... )

Profile

green_fr: (Default)
green_fr

December 2025

S M T W T F S
 1 2 3 4 56
7 8 9 10 11 1213
14 15 16 17 18 1920
212223242526 27
28293031   

Syndicate

RSS Atom

Most Popular Tags

Page Summary

Style Credit

Expand Cut Tags

No cut tags
Page generated Dec. 30th, 2025 10:59 pm
Powered by Dreamwidth Studios