Введение:
Я видел, что сейчас был только один вызов, связанный с бадминтоном . Так как я сам играю в бадминтон (последние 13 лет), я решил добавить несколько проблем, связанных с бадминтоном. Здесь второе ( первое можно найти здесь ):
Вызов:
Несколько правил о бадминтоне:
- Подача всегда будет делаться по диагонали через сеть.
- Вы должны всегда служить после линии, параллельной и ближайшей к сети.
- Область, в которой вам разрешено служить, различается в зависимости от того, является ли это синглом (1 против 1) или двойным / смешанным (2 против 2).
- Для одиноких (1 против 1) синяя область на рисунке ниже - это место, где вам разрешено служить. Так что это включает в себя часть сзади, но исключая части сбоку.
- Для удвоения / смешивания (2 против 2) зеленая область на рисунке ниже - это то место, где вам разрешено работать на сервере. Так что это исключая часть сзади, но включая части сбоку.
- Вы не можете стоять на линии при обслуживании. Но шаттл все еще будет внутри, если он приземлится на вершине линии.
Вот расположение поля для бадминтона:
Правила вызова:
Входные данные:
Вам будут предоставлены два входа:
- Что-то, чтобы указать, играем ли мы сингл или дабл / микс (т.е. булево)
- Что-то, чтобы указать, с какого блока вы обслуживаете (то есть
[1,2,3,4]
или['A','B','C','D']
как используется на картинке выше).
Вывод:
Только соответствующие строки для текущей подачи (включая сеть), в том числе, F
чтобы указать, откуда вы служите, и несколько, T
чтобы указать, где вы будете потенциально служить.
Хотя на самом деле вам разрешено служить из любого места в указанных местах, мы предполагаем, что человек, который будет служить, всегда будет стоять в углу зоны подачи, ближе к середине сетки, где вы будете размещать F
. И они будут служить любому из четырех углов области, где они должны служить, где вы будете размещать T
s.
Как и ASCII-арт, все поле для бадминтона будет выглядеть следующим образом (числа добавляются, поэтому вам не нужно считать их самостоятельно):
2 15 15 2
+--+---------------+---------------+--+
| | | | | 1
+--+---------------+---------------+--+
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | 9
| | | | |
| | | | |
| | | | |
| | | | |
+--+---------------+---------------+--+
| | | | | 2
| | | | |
O=====================================O 37 times '='
| | | | |
| | | | | 2
+--+---------------+---------------+--+
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | 9
| | | | |
| | | | |
| | | | |
| | | | |
+--+---------------+---------------+--+
| | | | | 1
+--+---------------+---------------+--+
Примеры:
Вот два примера для вывода только соответствующих частей подачи:
Вход: одиночный и обслуживающий блок. A
Выход:
T---------------T
| |
+---------------+
| |
| |
| |
| |
| |
| |
| |
| |
| |
T---------------T
| |
| |
O=====================================O
| |
| |
+---------------+
| F|
| |
| |
| |
| |
| |
| |
| |
| |
+---------------+
| |
+---------------+
Как вы можете видеть, F
в углу внутри блока добавляется, но его T
заменяет +
выход ASCI-art.
Вход: двойной и обслуживающий блок. C
Выход:
+--+---------------+
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | F|
+--+---------------+
| | |
| | |
O=====================================O
| | |
| | |
T---------------+--T
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
T---------------+--T
Правила вызова:
- Лидирующие и завершающие символы новой строки являются необязательными (включая начальную и конечную две пустые строки, когда ввод одинарный). Конечные пробелы также являются необязательными. Однако пробелы обязательны.
- Разрешены любые четыре разумных различных входа для указания, из какого блока мы обслуживаем (для целых чисел, оставайтесь в пределах диапазона [-999,999]); а также любые два разумных различных входа, чтобы указать, является ли он одинарным или двойным / смешанным (обратите внимание на эту соответствующую запрещенную лазейку , хотя). Пожалуйста, укажите I / O, который вы использовали в своем ответе!
- Вам разрешено использовать строчные буквы
f
иt
(или смешанный регистр) вместоF
иT
. - Вам разрешено возвращать список строк или матрицу символов вместо возврата или печати одной выходной строки.
Основные правила:
- Это Код-гольф, так что кратчайший ответ в байтах выигрывает.
Не позволяйте языкам кода-гольфа отговаривать вас от публикации ответов на языках, не относящихся к кодексу. Попробуйте найти как можно более короткий ответ для «любого» языка программирования. - Стандартные правила применяются к вашему ответу с правилами ввода / вывода по умолчанию , поэтому вам разрешено использовать STDIN / STDOUT, функции / метод с правильными параметрами и типом возврата, полные программы. Ваш звонок.
- По умолчанию лазейки запрещены.
- Если возможно, добавьте ссылку с тестом для вашего кода (например, TIO ).
- Кроме того, добавление объяснения для вашего ответа настоятельно рекомендуется.
Ответы:
Древесный уголь , 81 байт
Попробуйте онлайн! Ссылка на подробную версию кода. Принимает первый вход , как
1
и2
для одиночных или двойных, второго входа , как один из ,ABCD
как в этом вопросе. Объяснение:Обведите соответствующие ширины и высоты
D
двора и нарисуйте прямоугольники.Нарисуйте сеть и примените вращательную симметрию, чтобы добавить
A
корт.Добавьте
F
кD
суду.Добавьте
T
s в соответствующие места вA
суде.Отразите вывод по мере необходимости, чтобы служить от правильного суда.
источник
Python 2 ,
285284 байтаПопробуйте онлайн!
Принимает ввод как
0/1
(илиFalse/True
) для типа игры (Double/Single
),и
0-3
для обслуживающего блока (0,1,2,3
=C,D,A,B
)источник
JavaScript (ES7),
216 ... 205 201199 байтПринимает ввод как−2 (в правом верхнем углу), −1 (внизу слева), 1 (внизу справа) или 2 (вверху слева) и double - это логическое значение.
(block)(double)
, где блок либоПопробуйте онлайн!
Отформатированная версия
Как?
Итерируем изy=0 в y=30 и от x=0 в x=39 для каждого значения y ,
Сначала мы определимX=x−19 а также Y=y−15 ,
Переменныеb ,
p = X * Y * b < 0
иq = Y > 0 ^ b & 1
используются для определения того, что рисуют в каждом квартале в соответствии с блокомОтныне обаX а также Y возводятся в квадрат, чтобы легко проверить абсолютные позиции в каждой четверти поля.
Выражениеx принадлежит {0,3,19,35,38} (положения вертикальных линий) или верно в противном случае.
x * 24 % 35 > 2
дает ложь, еслиПопробуйте онлайн!
Выражение0 если y принадлежит {0,2,12,18,28,30} (положения горизонтальных линий, исключая сеть) или 2 в противном случае.
~16 >> Y % 62 % 6 & 2
даетПопробуйте онлайн!
Переменнаяi определяется как результат побитового ИЛИ между двумя вышеуказанными значениями и поэтому интерпретируется как:
|
-
+
илиT
Выражениеd (одиночный или двойной). Подобное выражение
(d ? Y : X - 87) > 169
используется для обрезки поля в соответствии с типом игры(d ? X - 87 : Y) % 169
используется для рисованияT
в соответствующих позициях.источник
[-999,999]
для четырех различных входов, так что, возможно, вы могли бы как-то использовать это в своих интересах, чтобы выиграть несколько байтов. Это будет означать частично начать все сначала, что, возможно, не стоит усилий. К сожалению, я не могу дать вам никаких советов по игре в гольф, чтобы помочь вам до 200 байтов; Я могу только пожелать вам удачи в ваших попытках. ; pЖеле ,
10899 байтПопробуйте онлайн!
Я уверен, что это может быть лучше в гольф.
Диадическая связь с левым аргументом 0 или 1 для одиночных / двойных чисел и правым аргументом 0,1,2,3 для разных секторов подачи. Возвращает список строк
Спасибо @KevinCruijssen за сохранение байта!
источник
“|-+TO= ”“F”
, нельзя“F”
ли приставить к другому типу струны для одиночных персонажей? Например, в 05AB1E есть встроенные функции для строк размера 1 ('
), 2 („
) или 3 (…
), так что это может быть'F
. Не знаете, есть ли у Желе что-то подобное, или у вас есть другая причина для этого“|-+TO= ”“F”
?”
можно было бы использовать для односимвольного литерала - упс! Спасибо за сохранение байта.