Задача состоит в том, чтобы сгенерировать линейку ASCII-символов в следующем формате:
+-------------------------------------------------------------------------+
|| | | | | | | | | | | | | | | |
|0 10 20 30 40 50 60 70 |
| |
+-------------------------------------------------------------------------+
Длина линейки должна быть масштабируемой до любого кратного 10.
Правила:
- Линейка должна быть горизонтальной.
- Скажем, для простоты, линейка должна работать до отметки 1000, все числа выровнены по левому краю, через один пробел после последнего числа .
- При запросе линейки с нулевой длиной следует напечатать NaR
- Отрицательные числа должны печатать перевернутую линейку (-90, -80, -70, ...) с выровненными по правому краю числами в том же формате, что и выше, в противном случае
И, просто печать на консоль в порядке
Готово, установлено, гольф!
Ответы:
Питон - 227
232Поддерживает всю спецификацию
редактировать: улучшено выражение генератора.
Поддержка выровненных по правому краю отрицательных чисел добавляет удивительный объем кода.
Пример выходов:
-30 30
-30 -30
100 150
-1000 -950
источник
Не буду бить динамические языки сегодня, но все равно ...
Хаскелл, 341
Я позволил себе сменить настоящие символы ASCII на более привлекательные символы рисования юникодных блоков.
источник
Python 2,7,
342 266260 символоввозвращает
кортеж каждойстроковой строки, которую вы можете затем распечатать или сохранить в файл (я предпочитаю последний для длин более 70, потому что консоль просто заставит ее выглядеть испорченной с переносом)Предполагается,
y
чтоэто строка (raw_input () n python или sys.argv [1], если вы хотите вызвать через cmd)целое число (например, с input () в 2.x или int (input ()) в 3.x )Я сделал это функцией, чтобы быть более гибким
редактировать: уменьшено до 266 символов. больше не возвращает кортеж, а вместо этого строку. Теперь принимает целое число вместо строки в качестве аргумента
edit2: уменьшено до 260 символов, функция одной строки
примечание: обрабатывает отрицательные числа, но не оправдывает правильность (я не думаю, что обоснование слишком важно в любом случае
источник
PowerShell ,
256253233225222 байтаПопробуйте онлайн!
Меньше гольфа:
источник
Python,
291241 символовДовольно простой подход. Я уверен, что это может быть улучшено довольно много.
Я пытался следовать рекомендациям в комментариях, но я не поддерживаю отрицательные числа (это была шутка, я надеюсь).
Это программа, выводящая линейку на стандартный вывод. Если ваш экран достаточно широк, он должен поддерживать довольно длинные линейки.
источник
С ++, 392
Это запрограммировано с помощью консоли Windows, поэтому я просто выбрал максимальный размер линейки, равный 70, он просто рухнет для чего-то большего. Отрицательные числа (до -70) и 0 обрабатываются правильно.
источник
Питон - 208
(не поддерживает выравнивание по правому краю отрицательных чисел)
Я думаю, что мой любимый трюк состоял в том, чтобы генерировать строки, которые намного длиннее, чем необходимо, а затем обрезать их, например:
Я просто хотел бы, чтобы была более краткая опция форматирования строки для выравнивания по левому краю (если только я не знаю о ней)
источник
Perl 5.14,
198224 символаВероятно, может быть сокращено намного дальше, но вот
перваявторая попытка (с разрывами строки, вставленными для удобства чтения):РЕДАКТИРОВАТЬ: Отредактировано, чтобы умереть с «NaR», когда вход
0
и поддерживает отрицательный диапазон.РЕДАКТИРОВАТЬ 2: У меня не было возможности поработать над этим, и я только сейчас заметил правило выравнивания по правому краю для отрицательных чисел, которое не поддерживается в моем коде, поэтому я думаю, что другое решение должно быть помечено как ответ, если срок был достигнут.
источник