Об'єктивна
У мене є приємна картина, яку я хочу повісити на стіну. І я хочу, щоб він виграшно виглядав там, тому я вирішив повісити його на 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>
.