Введение:
Я видел, что сейчас был только один вызов, связанный с бадминтоном . Так как я сам играю в бадминтон (последние 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 ).
- Кроме того, добавление объяснения для вашего ответа настоятельно рекомендуется.