Сейчас самое время показать свои способности писать плохой код. Я пробую новую головоломку для программирования, наиболее похожую на закулисный конкурс Си. Основное отличие состоит в том, что это не так уж и гнусно: просто хорошее веселье. Цель головоломки - собрать как можно больше ошибок в программу. Победителем этого конкурса является тот, кто пишет программу с наибольшим количеством ошибок на персонажа.
Чтобы избежать огромного потока комментариев, требующих разъяснений, я должен прямо сейчас определить, что я считаю квалификационными ошибками.
Во-первых, ошибка не является ошибкой . Если это проблема, которая может быть обнаружена интерпретатором как ошибка (например, несоответствующие разделители, неправильно сформированный синтаксис, доступ к свойству нулевого объекта и т. Д.) Или если это препятствует выполнению или продолжению программы, это не Жук. В противном случае вы могли бы ввести четыре символа, и интерпретатор мог бы перечислить восемь синтаксических ошибок, и вы могли бы заявить, что отношение количества ошибок составляет 2.
Во-вторых, ошибка не должна быть явно ошибочной, и ошибка не является пасхальным яйцом . Это, безусловно, субъективный критерий, но я считаю, что это необходимо для такого рода соревнований. Это означает, что у вас не может быть условного кода, который определенно искажает код очевидными способами. (Читайте: используйте язык ямы Тьюринга, потому что никто не будет знать разницу).
В-третьих, ошибка должна быть правдоподобной . Это субъективно, как и выше, но ошибка должна выглядеть так, как будто она была написана менее чем дотошным или, возможно, невежественным человеком или кем-то, кто только что сделал ошибку. Это включает, например, отдельные ошибки или синтаксис, который является допустимым и выглядит правильным, но вызывает нежелательное поведение (скажем, использование квадратных скобок вместо скобок).
Ошибка может вызвать любое нежелательное поведение программы, включая, но не ограничиваясь этим, нежелательный вывод для некоторых исключительных случаев, поведение по-разному основано на чем-то, что, по-видимому, не связано (например, вывод отображается по-разному в зависимости от того, заканчивается ли текущее время) с нечетным или четным количеством секунд), утечки памяти, потеря данных и т. д.
Пример задачи:
Создайте программу, которая отображает все символы ASCII в порядке возрастания их числового значения.
Пример ответа:
Brainf ***, 5 символов, 1 ошибка, коэффициент ошибок 0,2
+[+.]
Ошибка: не отображает символ ASCII для 1. Может быть исправлено путем изменения на .+[.+]
.
Хорошо, я думаю, что вы должны были получить это сейчас, вот ваша загадка:
Расшифруйте код Цезаря и сортируйте слова по алфавиту
Цезарь шифр создается путем взятия серии букв и сдвига их n букв в алфавите. Если он идет до начала или конца алфавита, A идет после Z, а Z идет до A. Например:
Mannequin
Nboofrvjo //Shifted over 1 or -25
Wkxxoaesx //Shifted over 10 -16
Ftggxjnbg //Shifted over -7 or 19
Вам будет дано два ввода (вы можете получить ввод, однако наиболее удобный для вас, в пределах разумного). Первый вход - это слова, а второй - значение, на которое оно сдвинуто. Ваша задача - вывести декодированные слова, а затем вывести декодированные слова после их сортировки в алфавитном порядке.
Пример (не в обиду плохим парням, это всего лишь пример):
Первый вход: gtdx wjbfwiji. ljy Gfi hfssty
Второй вход: 5
Первый вывод: мальчики вознаграждены. Плохо не может
Второй вывод: плохие парни не могут быть вознаграждены.
Удачи!