March 27th, 2018

moose, transparent

кумиры

У каждого из нас есть кумиры. Я говорю сейчас не столько об исторических личностях или персонажах книг, сколько о живых людях вокруг нас. Они живут рядом с нами, на одной планете. Они восхищают или поражают нас. Мы хотели бы быть на них похожими.

Я редко говорю о своих кумирах, а надо бы чаще. Сегодня назову несколько англоязычных авторов, умом, знаниями и творческими способностями которых я восхищаюсь; и даже не только восхищаюсь, а еще и завидую.

1. Cosma Shalizi, профессор статистики. Читал все обо всем и отделил зерна от плевел. К сожалению, в последние годы не добавляет нового в Notebooks, потрясающе полезный источник правильных книг, статей, рекомендаций. Я бы хотел так организовать свои мысли/чтение, как Шализи в Notebooks, но мне не хватает дисциплины.

2. John Baez, знающий в физике и математике пусть не всё, но точно - как все взаимосвязано. Много лет подряд я читал его This Week's Finds in Mathematical Physics.

3. Scott Aaronson, специалист по квантовым вычислениям, но пишущий в своем блоге, заслуженно популярном, также о компьютерных науках вообще, физике и культуре в целом.

4. Terence Tao, математик, в детстве какой-то невероятный вундеркинд (см. википедию), много лет ведет блог, где интересные математические заметки перемежаются сложной математикой, которая мне не по зубам.

5. Scott Alexander, автор лучшего на мой взгляд в последние годы англоязычного блога Slate Star Codex, в котором он пишет о множестве разных тем, но среди самых частых - наука, ее достижения и методологические проблемы, психиатрия и психология (он психиатр по профессии), культурные войны в США и других странах, как спорить в интернете и как лучше не надо, и многое другое.

Какие у вас есть кумиры? Расскажите!
moose, transparent

программистская задачка

Мне понравилась идея предложить программистскую задачку неделю назад. Человек 10 прислали свои версии вычисления арифметических выражений, на разных языках и даже работающие по-разному. Попробую продолжить эту традицию.

По-моему, неинтересно задавать сложные "олимпиадные" задачи, в которых нужно придумать алгоритм или необычный подход, а если не придумать, то ничего не выйдет. Нет, такие задачи тоже, конечно, заслуживают внимания, и если вам хочется таких, то IBM'овская колонка Ponder This - неплохой источник; я их одно время старался делать регулярно, но забросил потом. Мне кажется более интересным предложить что-то, что очень многие могут сделать, но вместе с тем это не совершенно тривиально, и может быть написано многими разными способами.

Поэтому вот моя задача. Напишите код, который решает игру в пятнашки. Конкретно говоря, если ему дать доску 4x4 с неправильно расставленными числами:



ваш код находит последовательность движений (их можно обозначить просто номерами костяшек, которые двигаются, например), после которых получается правильный порядок от 1 до 15. Необязательно находить самое быстрое решение, но обязательно всегда найти решение, если оно существует. Необязательно приводить к разумному порядку, если решения нет (напр. с 13 15 14 в конце), но можно и сделать это.

Мне нравится эта задача тем, что как бы понятно, что мы МОЖЕМ это сделать. Тут нет ничего невозможного. Но когда садишься писать код, начинаешь думать, как именно это организовать, и с точки зрения алгоритма, и с точки зрения организации данных/кода при уже выбранном алгоритме, есть много разных вариантов, и когда в итоге это все работает и выглядит хорошо, то приятно. Ну мне по крайней мере было приятно. Я украл эту задачу у А. Шеня, который предложил ее у себя в фейсбуке с полгода назад. Свой код я написал еще тогда, но сюда кину ссылку на него через 2 дня. Если вы хотите поучаствовать, присылайте код ссылками на https://pastebin.com/ или свой гитхаб или еще как угодно.

P.S. Кстати, если вы не помните, КАК решать игру в пятнашки, или никогда этим не занимались, то вот заодно удобный случай разобраться. Подвигать костяшки можно в куче мест на вебе или в телефоне.


P.P.S. Вот мое решение: https://pastebin.com/yYg302eU, я добавил комментарии по-русски в начале. В сравнении с другими оно очень хлопотное, но всегда быстро находит путь.