Відповідна частина для подачі в бадмінтон


10

Вступ:

Я бачив, що зараз існує лише одна проблема, пов’язана з бадмінтоном . Оскільки я сам граю в бадмінтон (останні 13 років), я подумав, що додаю деякі проблеми, пов'язані з бадмінтоном. Ось другий ( перший можна знайти тут ):

Виклик:

Деякі правила щодо бадмінтону служать:

  • Подача завжди буде робитися по діагоналі по мережі.
  • Ви завжди повинні обслуговуватись після лінії, паралельної та найближчої до мережі.
  • Площа, в якій вам дозволяється обслуговувати, відрізняється залежно від того, чи є одинарний (1 проти 1) або подвійний / мікс (2 проти 2).
    • Для синглів (1 проти 1) синя зона на малюнку нижче - це те, де вам дозволяється служити. Це стосується деталі ззаду, але виключаючи деталі збоку.
    • Для парних / міксів (2 проти 2) зелена зона на малюнку нижче - це те, де вам дозволяється сервер. Отже, це виключає частину на задній частині, але включаючи деталі збоку.
  • Ви можете не стояти на строках під час подачі. Але човен все одно буде всередині, якщо вони приземляться на вершині лінії.

Ось макет поля для бадмінтону:
введіть тут опис зображення

Правила виклику:

Вхід:

Вам будуть надані два входи:

  • Щось, що вказує на те, граємо ми сингл або дублінг / мікс
  • Щось, що вказує, з якого блоку ви обслуговуєте (тобто [1,2,3,4]або ['A','B','C','D']як використовується на малюнку вище).

Вихід:

Лише відповідні рядки для поточного сервісу (включаючи мережу), включаючи Fвказати, звідки ви обслуговуєте, та кілька, Tщоб вказати, де ви потенційно можете служити.

Хоча насправді вам дозволяється служити з та в будь-якій точці визначених районів, ми припускаємо, що людина, яка буде обслуговуватись, завжди стоїть у кутку зони обслуговування, яка закривається до середини мережі, де ви будете розміщувати то F. І вони будуть служити в будь-якому з чотирьох куточків району, де вони повинні служити, і там, де ви розмістите Ts.
Як ASCII-art, все поле для бадмінтону було б таким (цифри додаються, щоб вам не довелося їх рахувати самостійно):

 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 ).
  • Також настійно рекомендується додавати пояснення до своєї відповіді.

Ах, бадмінтон. В одну гру, яку я завжди хотів грати, але ніколи не
обходився,

@Quintec Не соромтесь відвідувати наш клуб у Нідерландах на вільний вечір; p
Кевін Круїйсен

1
Угода, якщо ви заплатите за мій квиток на літак та готель? :)
Квінтек

1
@Quintec Якщо ви виграєте, я поверну назад квиток, haha ​​xD
Кевін Круїйсен

1
@MagicOctopusUrn Так, є кілька професійних гравців з бадмінтону з Нідерландів. Не впевнений, який рейтинг у них є у світовому списку tbh, я часто не спостерігаю за бадмінтоном (і зазвичай це лише 5 хвилин на новинах спорту, якщо взагалі згадується .. весь інший час витрачається на футбол). І ні, як кращий гравець, ви, навряд чи можете заробити дохід, я думаю. Однозначно не мільйони.
Кевін Кройсейсен

Відповіді:


2

Вугілля деревне , 81 байт

NθF⮌Eθ⁺¹⁶׳ιF✂541⊖θURι±×³Iκ×=¹⁸O⟲O↙⁴J¹±³FF²F²«J×ι±⁺¹²×³θ⁺²×⁻¹⁵׳θκT»F№ABη‖↑F№ACη‖

Спробуйте в Інтернеті! Посилання на багатослівну версію коду. Перший вхід приймає як для синглів, так 1і 2для парних, другий - як один із ABCDзапитань. Пояснення:

F⮌Eθ⁺¹⁶׳ιF✂541⊖θURι±×³Iκ

Проведіть петлю на відповідні ширини та висоти Dкорта та намалюйте прямокутники.

×=¹⁸O⟲O↙⁴

Намалюйте сітку і застосуйте обертальну симетрію, щоб додати Aкорт.

J¹±³F

Додайте Fдо Dсуду.

F²F²«J×ι±⁺¹²×³θ⁺²×⁻¹⁵׳θκT»

Додайте Ts у відповідні місця у Aсуді.

F№ABη‖↑F№ACη‖

Відобразить висновок, якщо це потрібно, щоб подати правильний суд.


1
@KevinCruijssen Вибачте за те, що не помітили цього, слід виправити зараз, дякую.
Ніл

3

Python 2 , 285 284 байт

R=str.replace
s,q=input()
A=' '*19
l='| '[s]+'  |'+A[4:]+'|'+A
r=['T--+','   T'][s]+'-'*15+'T'+A
h=[r]+[l,R(r,*'T+')]*s+[l]*8+[l[:18]+'F'+'|'+A,r,l,l,'O'+'='*37+'O']
h+=[R(l[::-1],*'T+')for l in h[-2::-1]]
h[9+2*s]=R(h[9+2*s],*'F ')
for l in[l[::q%2*2-1]for l in h[::q/2*2-1]]:print l

Спробуйте в Інтернеті!

Вводиться як 0/1(або False/True) для типу гри (Double/Single ),

і 0-3для обслуговування блоку ( 0,1,2,3= C,D,A,B)


Це було швидко! Гарна відповідь.
Кевін Круїссен

1
@ Так, я начебто спробував це з пісочниці минулого тижня: P
TFeld

1

JavaScript (ES7),  216 ... 205 201  199 байт

Приймає введення як (block)(double), де блок - або-2 (угорі праворуч), -1 (внизу зліва), 1 (праворуч внизу) або 2(угорі зліва) і подвійний - булеве значення.

b=>d=>(g=x=>y<31?`+-| =OTF
`[X=x-19,Y=y-15,p=X*Y*b<0,q=Y>0^b&1,X*=X,Y*=Y,i=x*24%35>2|~16>>Y%62%6&2,x<39?Y?p*X|(d?Y:X-87)>169?3:i?X-1|Y-16|q?i:7:q*(d?X-87:Y)%169&&6:x%38?4:5:++y&&8]+g(-~x%40):'')(y=0)

Спробуйте в Інтернеті!

Відформатована версія

Як?

Ми повторюємо з у=0 до у=30 і з від х=0 до х=39 для кожного значення у.

Спочатку визначимося Х=х-19 і Y=у-15.

Змінні p = X * Y * b < 0та q = Y > 0 ^ b & 1використовуються для визначення того, що малюють у кожній чверті відповідно до блокуб.

Відтепер і те, і інше Х і Y розміщуються в квадраті, щоб легко перевірити абсолютні позиції в межах кожної чверті поля.

Вираз x * 24 % 35 > 2дає хибне значення, якщох належить {0,3,19,35,38}(Позиції вертикальних ліній) або вірно в іншому випадку.

Спробуйте в Інтернеті!

Вираз ~16 >> Y % 62 % 6 & 2поступається0 якщо у належить {0,2,12,18,28,30} (положення горизонтальних ліній, виключаючи сітку) або 2 інакше.

Спробуйте в Інтернеті!

Змінна i визначається як результат побітового АБО між двома наведеними вище значеннями, і тому інтерпретується як:

  • 3: простір
  • 2: |
  • 1: -
  • 0: +абоT

Вираз (d ? Y : X - 87) > 169використовується для обрізання поля відповідно до типу григ(одинарний або подвійний). Подібний вираз (d ? X - 87 : Y) % 169використовується для малювання Ts у відповідних положеннях.


* Відкриває TIO і починає перевірку виходу * Виглядає добре; всі вісім виходів є правильними, як і очікувалося. * Дивиться на фактичний код * Гм .. що продовжується¿ ..: S Чекаю на це пояснення пізніше, @Arnauld . Несподівана кількість арифметичних, потрійних та розрядних обчислень для виклику ASCII-art. xD
Kevin Cruijssen

1
@KevinCruijssen Власне, я хотів би, щоб мої формули були ще більш вигадливими, щоб я міг отримати це під 200 байт, що було моєю початковою ціллю. ;) Але мій підхід, мабуть, занадто оптимізований до малювання повного поля і недостатньо для врахування параметрів за розумною витратою на байт.
Арнольд

Напевно, так, оскільки я дозволив будь-яке вхідне значення в діапазоні [-999,999]для чотирьох різних входів, тож, можливо, ви могли якось використати це на вашу користь для гольфу на кілька байтів. Це означатиме частково почати спочатку, що, мабуть, не варто докладати зусиль. На жаль, я не можу дати тобі жодних порад щодо гольфу, щоб допомогти тобі в 200 байт; Я можу побажати вам удачі у ваших спробах. ; p
Кевін Круїссен

@KevinCruijssen Готово. :)
Арнольд

1

Желе , 108 99 байт

“¢¥Þ‘Ṭ+þ³ḤN+“¢¤€‘¤ṬḤ;Ø0¤×3R¤¦€³+0x39¤µ‘03³?‘;20¤¦€1,-2¦;565DWx“¢%¢‘¤;UṚ$ị“|-+TO= ””F21¦€³Ḥ_⁵¤¦UṚƭ⁴¡

Спробуйте в Інтернеті!

Я впевнений, що це може бути краще гольф.

Діадний зв'язок з лівим аргументом 0 або 1 для синглів / парних і правим аргументом 0,1,2,3 для різних обслуговуваних квадрантів. Повертає список рядків

Дякуємо @KevinCruijssen за збереження байта!


Я не знаю Джеллі, тому я, мабуть, тут кажу щось дурне, але “|-+TO= ”“F”, чи не “F”може гольф перейти до іншого типу струни для одиноких символів? Наприклад, у 05AB1E є вбудовані рядки розміру 1 ( '), 2 ( ) або 3 ( ), так що це може бути 'F. Не знаєте, чи є у Jelly щось подібне, чи у вас є інша причина для цього “|-+TO= ”“F”?
Кевін Кройсейсен

1
@KevinCruijssen Спасибі та приємний виклик. Я не думаю, що так. Є два буквені символи (з⁾), але не один. Я міг би використовувати число 7 і додати F до пошуку, але це однакова кількість символів через необхідність слідувати за 7 із 21, тому для проходження цього місця потрібно пробіл.
Нік Кеннеді

Ну, як я вже казав, я не знаю желе. Думав, що це може мати деякі вбудовані для 1 або 2-х символьних рядків, але якщо ти скажеш не, я тобі вірю. :)
Кевін Круїссен

@KevinCruijssen Я радий, що хтось інший заскочить - все ще навчаюся!
Нік Кеннеді

1
@KevinCruijssen Я повністю пропустив, що може бути використаний для одного буквеного символу - ой! Дякуємо за збереження байта.
Нік Кеннеді
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.