Рубрика «головоломки»

Оставленный без внимания профильными изданиями, но любимый игроками, Диззи был феноменом среди блокбастеров в Великобритании середины 80-х. А история о том, как улыбающееся яйцо три года доминировало в топах программного обеспечения, — это наглядный пример «программирования в спальне», доведённого до абсолюта.

Близнецы Оливеры, только что освоившие новенький BBC Micro (один из ранних домашних компьютеров), приняли участие в конкурсе детской телепередачи The Saturday Show по созданию видеоигры. Они победили, оказавшись единственными, кто прислал настоящую игру, а не набросок, нарисованный мелком. Позже братья продали свою Gambit компании Acornsoft за 200 фунтов.

Обнаружив, что видеоигры могут приносить деньги, Эндрю и Филип Оливеры потратили следующий год на написание программ для различных издателей — сначала на своём BBC, а затем перешли на Amstrad (другой домашний компьютер). Затем, в сентябре 1985 года, братья посетили первую в истории ECTS (Европейскую компьютерную выставку), где познакомились с Ричардом и Дэвидом Дарлингами. Будущим основателям Codemasters требовались программисты-фрилансеры. «Их предложение заключалась в том, что если мы напишем для них игру, то получим 10 тысяч фунтов», — вспоминает Филип Оливер. — Но было одно условие: игра должна выйти к Рождеству». Поэтому братья поспешили домой и за шесть недель написали платформер Super Robin Hood. А продано было 100 тысяч копий игры.

Читать полностью »

4 февраля где то между 16-00 и 16-15 1985 года в подвале дома супругов Билла Ричи и Андреа Бартелло в Вирджинии родилась идея создать компанию, которая должна была «воплотить идеи самых безумных математиков, инженеров и изобретателей в простые игрушки, которые оценят мальчики и девочки во всем мире».

ThinkFun или как появилась компания, которая выпускает «настолки» и головоломки для будущих программистов - 1

Читать полностью »

Привет!

Приключения Чиполлино: карантинный IT-квест от «Фланта» - 1

Вы же помните Чиполлино? Да-да, того самого парня-луковицу из детской сказки. Так вот: он оказался в нашем мире в самый разгар пандемии COVID-19, наивно* полагая, что его защищают природные фитонциды… Путь героя домой, в свою луковую страну, оказался непрост. Его ждёт множество интересных загадок и головоломок, с которыми, мы уверены, Чиполлино с радостью помогут хаброжители, находящиеся на карантине.Читать полностью »

image

Все мы имеем опыт прохождения собеседований. Все когда-то сидели в комнате с зевающим эйчаром, пытающимся разобраться, о чём поговорить, когда ваши планы на ближайшие 5 лет и все 7 сильных черт вашего характера ей уже известны. Некоторые успели побывать и по другую сторону баррикад, обстреливая каверзными вопросами лезущих на амбразуру открытой вакансии смертников. В любом случае, сталкивались со столь занимательным процессом собеседования. Сталкивались, и, может быть, задумывались, насколько оптимально он устроен, насколько хорошо собеседования справляются со своей задачей поиска наиболее подходящего сотрудника, а точнее, какие виды собеседований с ней справляются, ну а какие нет. Объявленная астрологами неделя постов про собеседования — хороший повод это обсудить.
Читать полностью »

tl;dr За последние десятилетия мода на собеседования программистов менялась несколько раз, и каждая из них выглядит нелепо в ретроспективе. Либо мы наконец-то нашли настоящий секрет эффективных собеседований, либо увлеклись очередным модным течением, которое через десять-двадцать лет покажется столь же нелепым.

Когда я спрашиваю людей в модных больших технологических компаниях, почему на собеседовании так обязательно спрашивать об алгоритмах, самый распространённый ответ — что-то вроде: «У нас такой масштаб, мы не можем позволить, чтобы кто-то случайно написал функцию O(n^2) и повалил всю систему»1. Что особенно забавно, в последнее время я немало применял на практике эти алгоритмы и решал реальные проблемы, но не могу пройти собеседования, где о них спрашивают! Думаете, я проваливаю половину собеседований или что-то в этом роде? Нет, больше половины. Я участвовал примерно в 40 «настоящих» собеседованиях и прошёл, может, одно или два. Или ни одного2.

Когда я написал черновик этой статьи, друзья посчитали его занудным, потому что я провалил слишком много собеседований. Они говорят, нужно свести все неудачи в таблицу, потому что никто не станет читать десять страниц текста с длинным перечнем неудач. Хороший совет. Уже работаю над таблицей.
Читать полностью »

Как и обещали, мы начинаем праздничный квест:

Потерянные подарки Санты: новогодний IT-квест от Фланта - 1

О его старте зарегистрированные участники (таковых оказалось более 200) были уведомлены в 11:00 MSK по почте.

Победителем станет тот, кто первым разместит правильную финальную картинку (с подарками Санты) в комментариях к этой публикации. Просим не давать подсказки в комментариях до этого момента.Читать полностью »

Потерянные подарки Санты. Анонс IT-квеста на 6 января - 1

К Новому году, как обычно, Санта и его помощники готовили подарки. Сегодняшнее утро не предвещало ничего необычного — всё шло по плану: гудел конвейер с игрушками для детей и взрослых, гномы и эльфы шуршали упаковочной бумагой, а волшебные олени сопели носами, примеряя новую упряжь…

Вдруг свет погас, раздался грохот и всё помещение трюма заполнили клубы дыма. Когда дым развеялся, подарков не было, а на полу лежала записка, которая гласила:

{Зловеще} ХА-ХА-ХА! {/Зловеще} Эй, гики в красных шапочках, все ваши подарки у нас! Чтобы их забрать, нужно пройти квест из череды загадок!

Читать полностью »

Введение

В статье рассматривается «Y-метод» сборки кубика Рубика — его легко понять и запомнить. Он основан всего на одной последовательности, которая называется «Y-движение». Поняв этот алгоритм, вы навряд ли забудете как собрать кубик самостоятельно.Читать полностью »

Ловим кота с TLA+ - 1 Формальные методы считаются эффективным, но неоправданно сложным способом обеспечения надежности программного обеспечения. Используемые при этом инструменты существенно отличаются от привычных программисту. Эта статья написана с целью снизить порог вхождения в этот инструментарий. Я применю систему model checking не для решения сложно формулируемых задач спецификации ПО, а для решения понятной даже школьникам головоломки.

Вы находитесь в прямом коридоре с семью комнатами по одну сторону. В одной из них находится кот. За один шаг можно заглянуть в одну из комнат, если там есть кот, он пойман. Как только дверь закроется, кот перейдет в одну из соседних комнат к той, в которой находился. Задача — поймать кота.
Читать полностью »

image

Пару месяцев назад мне наконец пришлось признать, что я недостаточно умён, чтобы пройти некоторые уровни головоломки Snakebird. Единственным способом вернуть себе часть самоуважения было написание солвера. Так я мог бы притвориться, что создать программу для решения головоломки — это почти то же самое, что и решить её самому. Код получившейся программы на C++ выложен на Github. Основная часть рассматриваемого в статье кода реализована в search.h и compress.h. В этом посте я в основном буду рассказывать об оптимизации поиска в ширину, который бы потребовал 50-100 ГБ памяти, чтобы он уместился в 4 ГБ.

Позже я напишу ещё один пост, в котором будет описана специфика игры. В этом посте вам нужно знать, что мне не удалось найти никаких хороших альтернатив грубому перебору (brute force), потому что ни один из привычных трюков не сработал. В игре множество состояний, потому что есть куча подвижных или толкаемых объектов, при этом важна форма некоторых из них, которая может меняться со временем. Не было никакой пригодной консервативной эвристики для алгоритмов наподобие A*, позволяющих сузить пространство поиска. Граф поиска был ориентированным и заданным неявно, поэтому одновременный поиск в прямом и обратном направлении оказался невозможным. Единственный ход мог изменить состояние множеством несвязанных друг с другом способов, поэтому не могло пригодиться ничего наподобие хеширования Зобриста.

Приблизительные подсчёты показали, что в самой большой головоломке после устранения всех симметричных положений будет порядка 10 миллиардов состояний. Даже после упаковки описания состояний с максимальной плотностью размер состояния составлял 8-10 байт. При 100 ГБ памяти задача оказалась бы тривиальной, но не для моей домашней машины с 16 ГБ памяти. А поскольку Chrome нужно из них 12 ГБ, мой настоящий запас памяти ближе к 4 ГБ. Всё, что будет превышать этот объём, придётся сохранять на диск (старый и ржавый винчестер).
Читать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js