Задача
У меня есть хорошая картинка, которую я хочу повесить на стену. И я хочу, чтобы он висел там эффектным образом, поэтому я решил повесить его на nгвозди, где nесть любое положительное целое число.
Но я также нерешительный, поэтому, если я передумаю, я не хочу, чтобы у меня были проблемы с записью. Поэтому удаление любого из nгвоздей должно привести к падению изображения. Я упоминал, что в моем доме нет трения?
Вы можете мне помочь?
правила
- Ваша программа должна прочитать число
nиз stdin и распечатать в stdout (или эквиваленты вашего языка). - Выходные данные должны быть решением в соответствии с выходной спецификацией без каких-либо других завершающих или начальных символов. Однако конечные пробелы и / или переводы строк являются приемлемыми.
- Вы должны использовать именно
nногти. - Предполагая мир без трения, ваше решение должно удовлетворять следующим условиям:
- Повесьте картинку, как описано в вашем решении, картинка не должна упасть.
- Если какой-либо один из гвоздей удален, картина должна упасть.
- Применяются стандартные лазейки. В частности, вы не можете отправлять запросы, например, в программу верификации, на решения для перебора.
Обратите внимание, что 4.2 уже подразумевает, что все nгвозди должны быть вовлечены.
Спецификация выхода
- Все гвозди названы слева направо в соответствии с положением, в котором они находятся, начиная с
1. - Есть два основных способа наложить шнур вокруг гвоздя: по часовой стрелке и против часовой стрелки. Обозначим шаг по часовой стрелке с
>и шаг против часовой стрелки с<. - Каждый раз, когда нить наматывается на гвоздь, она выходит на верхнюю часть гвоздей, поэтому пропуск гвоздей означает, что нить пройдет через верхнюю часть промежуточных гвоздей.
- Каждый раствор должен начинаться на ногте
1и заканчиваться на ногтеn. - Выходные данные должны состоять из последовательности шагов, в которых шаг представляет собой комбинацию имени гвоздя и направления, в котором нужно обвязать его.
Пример вывода
Вот пример вывода для n=5и n=3:
1>4<3<2>4>5< # n=5, incorrect solution
1>2<1<2>3<2<1>2>1<3> # n=3, correct solution
А вот наглядное представление о неправильном решении для n=5(awsumz gimp skillz)

Правильное решение для n=1просто 1>или 1<. Для нескольких ногтей могут быть разные решения. Вы должны вывести только один, так как это часть вашего счета.
верификация
Вы можете проверить правильность решения здесь: www.airblader.de/verify.php .
Он использует GET-запрос, так что вы можете вызвать его напрямую, если хотите. Например, если fooфайл содержит решение в каждой строке, вы можете использовать
cat foo | while read line; do echo `wget -qO- "www.airblader.de/verify.php?solution=$line" | grep "Passed" | wc -l`; done
Если вы считаете, что решение верное, но верификатор помечает его как неправильное, сообщите мне!
Редактировать: И если ваш вывод будет настолько длинным, что GET-запрос его не обрежет, дайте мне знать, и я сделаю версию POST-запроса. :)
счет
Это код-гольф. Оценка - это количество байтов вашего исходного кода в кодировке UTF-8, например, используйте этот инструмент . Тем не менее, есть потенциальный бонус за каждую отправку:
Запустите вашу программу для всех nв диапазоне [1..20]и добавьте длину всех выходов, чтобы определить свой результат . Вычтите ваш выходной балл из, 6291370чтобы получить количество бонусных баллов, которое вы можете вычесть из вашего количества байтов, чтобы получить ваш общий балл . Там нет никакого штрафа, если ваш результат выше, чем это число.
Представление с самым низким общим счетом выигрывает. В маловероятном случае ничьей, прерыватели ничьей находятся в следующем порядке: более высокие бонусные баллы, меньшее количество байтов, более ранняя дата подачи.
Пожалуйста, опубликуйте как отдельные части (количество байтов, бонусные баллы) счета, так и окончательный результат, например, " LOLCODE (44 - 5 = 39)"
1>на рисунке). И нет там, nгде невозможно решение. Действительное решение n=2является 1>2<1<2>.