Входные данные:
- Целое число , которое гарантированно будет .
- Целое число , которое является одним из .
Выход:
Дорога размером , которая будет в северо-западном направлении, если ; направление на север, если ; или северо-восточное направление, если d = 1 . Дорога всегда будет шириной три (или пять вообще, если мы включим внешние границы). Кроме того, в нижней части будет проходить разделительная линия, а затем она будет чередоваться при движении вверх.
Некоторые примеры:
Вход:
Выход:
/ / /
/ /
/ / /
/ /
/ / /
/ /
/ / /
Вход: Выход:
\ \
\ \ \
\ \
\ \ \
Правила соревнований:
- Любое количество начальных / конечных пробелов и / или новых строк допустимо, если только оно печатает требуемую дорогу где-то на экране.
- Вместо опций вам также разрешено использовать опции или . Кроме того, вы можете выбрать, какой из трех вариантов сопоставить с каким из трех направлений. (Обязательно укажите, какие опции вы использовали, если они отличаются от для соответственно того, что используется в этом описании !)
[north-west, north, north-east]
- Любой разумный формат вывода является приемлемым. Самым распространенным, конечно, является его печать в STDOUT, но возвращение его в виде строки или списка двухмерных символов также подходит.
Основные правила:
- Это код-гольф , поэтому выигрывает самый короткий ответ в байтах.
Не позволяйте языкам кода-гольфа отговаривать вас от публикации ответов на языках, не относящихся к кодексу. Попробуйте придумать как можно более короткий ответ для «любого» языка программирования. - Стандартные правила применяются к вашему ответу с правилами ввода / вывода по умолчанию , поэтому вам разрешено использовать STDIN / STDOUT, функции / метод с правильными параметрами и типом возврата, полные программы. Ваш звонок.
- По умолчанию лазейки запрещены.
- Если возможно, добавьте ссылку с тестом для вашего кода (например, TIO ).
- Кроме того, добавление объяснения для вашего ответа настоятельно рекомендуется.
Тестовые случаи:
Два примера выше, и:
Вход:
Выход:
| |
| | |
| |
| | |
| |
| | |
| |
| | |
| |
| | |
Ответы:
Холст ,
2322 байтаПопробуй это здесь!
Использует направляющие входы 0, 1 и 2.
Объяснение:
источник
Python 2 ,
79787372 байтаПопробуйте онлайн!
Принимает
[1,0,-1]
за[north-west, north, north-east]
-1 байт, спасибо Нейлу
источник
i%2*c or' '
сохраняет байт.Python 2 , 66 байт
Попробуйте онлайн!
Используется
d=-1
для NE,d=0
для N иd=1
для NW. Использует преимущество ведущих пробелов. Правило, согласно которому нижний участок дороги имеет разделитель, усложняет задачу определения четности; это достигается тем, что нарезка(s*n)[n:]
занимает вторую половину2n
чередования между пробелом и символом дороги.источник
1. Python 3.5,
122120 байтСкрипт принимает два параметра: n, d.
д: 0, 1, 2 -> \ | /
tio.run
выход:
объяснение
редактировать: -2 байта благодаря Кевину Круйссену
источник
n-1-i
можноn+~i
( соответствующий совет ) иj%2==0
можноj%2<1
. Если вы еще не видели их, вам может быть интересно прочитать « Советы по игре в гольф на Python» и « Советы по игре в гольф на <все языки>» .n+~i
, но выглядит полезным. Также спасибо за подсветку кода.j%2*" "or c
сохраняет еще пару байтов.PowerShell ,
8882807471 байт-8 байт благодаря Mazzy
-6 байт благодаря AdmBorkBork и Mazzy
-3 байт благодаря AdmBorkBork
Попробуйте онлайн!
Использует [0,1,2] для NW, NE, N. Использует
d
в качестве индекса списка дважды, чтобы сначала получить метод пробела (удаляет из списка при использовании 2, который возвращает 0), а затем какой символ использовать при рисовании линий. Добавляет список в строку пробелов (которые изначально имеют пробелы между элементами при добавлении в качестве таковых), которая строит дорогу. Также переходит между открытой полосой движения или тире, основанной на модульной математике.источник
C (gcc) ,
10090 байтПопробуйте онлайн!
Хорошо написанная версия
источник
Древесный уголь ,
332923 байтаПопробуйте онлайн! Ссылка на подробную версию кода. Теперь, когда все базовые ошибки в Charcoal кажутся исправленными, я могу объявить оптимальный код. Объяснение:
Поверните направление курсора против часовой стрелки в соответствии с первым вводом, чтобы 1 стало северо-восточным, 2 северным и 3 северо-западным.
Введите длину дороги.
Напечатайте половину длины дороги, а затем растяните ее, отделяя дорогу.
Распечатайте стороны дороги.
@KevinCruijssen впоследствии представил более сложную версию этого вопроса, которая с тех пор была удалена, но пользователи с достаточным количеством повторений могут увидеть ее здесь: (Трудный) путь к коду. Метод растяжения, который я использовал в этом ответе, не применим к этому вопросу, поэтому вместо этого я написал следующую
4745-байтовую программу:Попробуйте онлайн! Ссылка на подробную версию кода. Объяснение:
Петля по бокам и разделитель.
Перейти к началу стороны.
Создайте массив, содержащий a
1
и пробел, но удалите пробел снова, если мы рисуем стороны, а не разделитель.Обведите каждый участок дороги.
Поверните направление курсора соответственно.
Зациклиться на один меньше, чем длина участка дороги ...
... и распечатать чередующиеся элементы массива. Чередование достигается путем циклического индексирования в массив с координатой Y курсора.
Напечатать последний ряд этого участка дороги, но не перемещая курсор ...
... так что вместо этого курсор можно переместить вверх, готовый к следующему разделу.
Поверните направление курсора назад, готово к следующему разделу.
источник
Котлин ,
9692 байтаПринимает [0, 1, 2] вместо [-1, 0, 1]
Он работает аналогично решениям на других языках, но, к сожалению, Kotlin в этом не очень хорош.
val c=“\\|/“;
извлекает символ для использования в дорожном строительстве, используя тот факт, что Kotlin рассматривает строки как массив символов (как и положено при просмотре Java)Попробуйте онлайн!
источник
4
с моим примером,4
чтобы увидеть разницу, которую я имею в виду. Я не очень хорошо знаю Kotlin, но я думаю, что вы можете решить эту проблему (и гольф 4 байта одновременно), перейдя[(it+1)%2]
на[it%2]
. :) Кроме того, это хороший ответ, так что +1 от меня.Код TSQL,
171117 байтЯ понял, что это может быть написано гораздо короче, как код.
TSQL-запрос, 137 байт
ИСПОЛЬЗОВАТЬ master не обязательно, если ваша база данных уже master. Однако некоторые пользователи имеют другую базу данных по умолчанию.
Сценарий при попытке это немного отличается. Я должен был заменить космос ascii-32 на ascii-160, пробелы не были показаны.
Попробуйте это
Сделал несколько твиков и понял, что могу заменить
с
источник
order by 1/0
это не приводит к ошибке деления на ноль?JavaScript (ES8),
90 8785 байт(direction)(length)
Попробуйте онлайн!
JavaScript (ES6), 90 байт
Этот рисует вывод символ за символом с немного большим количеством математики вместо
.padStart()
метода.(direction)(length)
Попробуйте онлайн!
источник
Желе ,
3130 байтДиадическая ссылка, принимающая длину слева и отрицательное направление * справа, что дает двумерный массив символов.
*
[north-west, north, north-east]=[1, 0, -1]
Попробуйте онлайн! (нижний колонтитул вызывает ссылку, объединяет символы новой строки и печатает результат)
Как?
источник
Python 2, 127 байт
Попробуйте онлайн!
Первые две строки взяты из @TFeld.
источник
D,N=input()
(и использовать Python 2 вместо 3), чтобы это исправить. Или вы можете изменить его на лямбда-функцию, принимающую эти два параметра." ".join(..)
скорее.format
i%2*c or' '
экономит еще несколько байтов, хотя я заметил, что разделитель не подходит для дорог с нечетной длиной.Python 2 , 93 байта
Попробуйте онлайн!
источник
+' %s '+
на,'%s',
сохранение 2 байта'%s'%
полностью.J , 64 байта
Попробуйте онлайн!
Попробую в гольф позже
источник
C # (интерактивный компилятор Visual C #) ,
12910710393 байта-1 для северо-востока, 1 для северо-запада, 0 для севера
Попробуйте онлайн!
источник
Красный , 157 байт
Попробуйте онлайн!
источник
Japt, 53 байта
Попробуйте онлайн!
источник
Swift 4.2 ,
112108 байт-4 байта благодаря сриотчизму О'Зайку
[0,1,2] вместо [-1,0,1].
Попробуйте онлайн!
объяснение
Определяет дорожный знак для использования. (Держу пари, это можно как-то сократить)
Итерирует по всей длине улицы.
Добавляет места перед улицей.
Добавляет средний знак к каждой второй строке.
Мой самый первый I'm, я рад любым советам по оптимизации. Учился в основном из этой темы: Советы для игры в гольф в Swift .
источник
in
и" "
в вашем коде , даже если вы удалили его в ваших примерах.\(c)
в обоих случаях). Вы бы сохраняли байты, просто конкатенируяc
строку. Попробуйте онлайн!Perl 6 , 66 байт
Попробуйте онлайн!
Возвращает список строк.
объяснение
источник
Рубин , 90 байт
Попробуйте онлайн!
ОБНОВЛЕНИЕ: Спасибо, Кевин, за указание на то, что в моем первоначальном представлении отсутствовали пробелы между краями дороги и маркерами (то есть дороги с 3-мя ширинами вместо 5-ширины.) Тем не менее, может быть более короткое исправление, чем
c+' '+...+' '+c
.Направленная информация:
-1, 0, 1
карты для{ north-west, north, north-east }
Аргументы: это читает аргументы командной строки, такие как
4 -1
(четырехрядная дорога, наклонная к северо-западу).Дополнительное примечание: это было протестировано локально с Ruby v2.6.1, и похоже, что Try It Online использует Ruby v2.5.3. У меня нет причин думать, что это не будет работать со всеми другими версиями Ruby.
источник
|||
или|<sp>|
, но она должна быть|<sp>|<sp>|
или|<sp><sp><sp>|
(где<sp>
пробел). Я не знаю Руби, но, кажется, вы можете решить это, перейдяc+[' ',c][i%2]+c
наc+' '+[' ',c][i%2]+' '+c
. :)Java (JDK) , 116 байт
Попробуйте онлайн!
Принимает в
d
качестве одного из0
,1
или2
.источник
Japt
-R
, 40 байтПопробуйте онлайн!
Объяснение:
источник
Stax , 23 байта
Запустите и отладьте его
Ввод - это два целых числа, разделенных пробелом.
Первый есть
d
. -1 указывает на северо-восток. 0 на север. 1 для северо-запада. Второй параметр естьn
. Эти два значения будут неявно проанализированы из ввода и помещены в стек вводаn
сверху. Дополнительноd
будет доступно из регистра stax,x
так как это первое неявно проанализированное значение.Например, введите «1 7»
Запустите этот
источник
perl -M5.010 -Mfeature = подписи, 97 байт
источник