Skip to content

Instantly share code, notes, and snippets.

@kronos
Created April 27, 2012 11:08
Show Gist options
  • Star 6 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save kronos/6569ecd7db151afd2cc2 to your computer and use it in GitHub Desktop.
Save kronos/6569ecd7db151afd2cc2 to your computer and use it in GitHub Desktop.

Update 3

Прием работ продлен до 20 мая

Update 2

Опять новый линк на исправленный словарь: убраны слова ИҐA, ЙЄЛЛОУСТОН, КАТАЛЕПCИЧЕСКИЙ, О'ГЕНРИ, О'КЕЙСИ, С/Х, ФІЛАТОВ, ФІЛАТОВА.

Update

Новый линк на исправленный словарь: слова отсортированы, записаны в верхнем регистре, убраны слова с "ё", "-", ".".

Конкурс RubyNoName подкаста

Итак, конкурсная задача будет несколько сложнее, но все-таки не архисложная. Недавно коллега выложил пост про игру словомания. Так как мы стали "более лучше программировать", попробуем написать более удачное решение.

Постановка задачи

На игровом поле представлена сетка NxN (5 <= N <= 100), состоящая из русских букв в верхнем регистре, требуется собирать слова последовательно соединяя буквы по горизонтали, вертикали и диагонали. Для каждого слова можно использовать одну букву один раз, то есть для сетки 5 на 5 максимальная возможная длина слова - 25 символов.

Условия

  • решение должно представлять из себя один *.rb файл, написанный исключительно на Ruby, без использования многопоточности;
  • решение будет проверяться на Ruby 1.9.2;
  • при тестировании в одну папку с приложением будут помещены файлы input.txt и words.txt (слова отсортированы);
  • оцениватся будут количество найденных слов (без повторений и присутствующих в словаре), длинной от 3 символов, чем длинее слово тем "ценнее" оно;
  • решения (в виде приватных ссылок на gist с решением) принимаются до 20 мая на почту hronya@gmail.com.

Наиболее интересные и шустрые решения будут опубликованы, а самого-самого крутого рубиста мы пригласим к нам в подкаст.

Описание входных и выходных файлов

input.txt

Первой строчкой идет число N - размер таблицы, далее следует N строк состоящих из N заглавных русских букв.

5
ВОРОН
ДЛОКЖ
ГНАШЩ
ФАЬБО
ЙЕИУВ

output.txt

В выходной файл нужно записать все слова, которые удалось найти (чем больше - тем лучше, чем скорее - тем лучше).

ВОРОН
ВОРОНКА

Как будет проводится тестирование

Будет подготовлено некоторое количество таблиц разной размерности. Работы запускаются по очереди; каждой из них будет выделено некое время на исполнение, затем, если они не завершаются раньше определенного времени, они прерываются kill-ом (мы ожидаем, что не все разработчики могут знать, что такое сигналы и как с ними работать, поэтому ниже приведен шаблон программы, на который следует ориентироваться). Работы, выдающие некорректные ответы (нет в словаре, дублирующиеся слова) будут дисквалифицированы.

В случае часто задаваемых вопросов данный gist будет обновляться. Следует принять во внимание, что авторы подкаста ни разу не проводили никаких конкурсов, поэтому большая просьба относиться к контесту лишь как к способу лишний раз потренировать мозги. Даже простая полнопереборная задача может победить: совершенно не факт, что кому-то будет не лень делать что-то более сложное.

Шаблон

output = File.open('output.txt', 'w')

at_exit do
  output.flush
  output.close
end

# your solution here
@kronos
Copy link
Author

kronos commented May 17, 2012

Меняй свой gist сколько хочешь до 20-го включительно, я последнюю версию возьму.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment