Badminton Servisinin İlgili Bölümü


10

Giriş:

Şu anda sadece bir badmintonla ilgili zorluk olduğunu gördüm . Kendimi badminton oynadığımdan beri (son 13 yıldır) badmintonla ilgili bazı zorluklar ekleyeceğimi düşündüm. Burada ikincisi ( birincisi burada bulunabilir ):

Meydan okuma:

Badminton ile ilgili bazı kurallar:

  • Bir servis her zaman net üzerinden çapraz olarak yapılacaktır.
  • Her zaman ağa paralel ve en yakın hattan sonra hizmet vermelisiniz.
  • Hizmet vermenize izin verilen alan, tek (1'e 1) veya çift / karışık (2'ye 2) olmasına bağlı olarak değişir.
    • Bekarlar için (1'e 1), aşağıdaki resimdeki mavi alan hizmet vermenize izin verilen yerdir. Yani bu arkadaki parçayı içerir, ancak yandaki parçaları hariç tutar.
    • Çiftler / mix (2'ye 2) için, aşağıdaki resimde yeşil alan sunucuya izin verdiğiniz yerdir. Yani bu, arkadaki parçayı hariç tutuyor, ancak yandaki parçaları da içeriyor.
  • Servis yaparken hatlarda duramayabilirsiniz. Ama bir hattın üstüne inerse mekik hala içeride olacak.

İşte bir badminton alanının düzeni:
resim açıklamasını buraya girin

Zorluk kuralları:

Giriş:

Size iki giriş verilecektir:

  • Tek ya da çift / mix oynadığımızı gösteren bir şey (yani bir boole)
  • Hangi bloğa hizmet ettiğinizi gösteren bir şey (yani [1,2,3,4]veya ['A','B','C','D']yukarıdaki resimde kullanıldığı gibi).

Çıktı:

Yalnızca geçerli hizmete (net dahil) dahil olmak Füzere, nereden hizmet Tverdiğinizi belirtmek için ve birden fazla potansiyel olarak nereye hizmet edeceğinizi belirtmek için ilgili satırlar .

Gerçekte, belirlenmiş alanlarda herhangi bir yere ve her yerden hizmet vermenize izin verilmesine rağmen, hizmet verecek bir kişinin her zaman hizmet alanının köşesinde duracağı ve ağın ortasına yakın olacağı varsayılır. F. Ve onlar onlar yerleştiririz nerede olduğu hizmet etmek zorunda alanın dört köşesinden herhangi birinin görev yapacak Ts.
ASCII-art olarak, tüm badminton alanı aşağıdaki gibi olacaktır (sayılar eklenir, böylece bunları kendiniz saymanız gerekmez):

 2        15              15        2

+--+---------------+---------------+--+
|  |               |               |  |    1
+--+---------------+---------------+--+
|  |               |               |  |
|  |               |               |  |
|  |               |               |  |
|  |               |               |  |
|  |               |               |  |    9
|  |               |               |  |
|  |               |               |  |
|  |               |               |  |
|  |               |               |  |
+--+---------------+---------------+--+
|  |               |               |  |    2
|  |               |               |  |
O=====================================O    37 times '='
|  |               |               |  |
|  |               |               |  |    2
+--+---------------+---------------+--+
|  |               |               |  |
|  |               |               |  |
|  |               |               |  |
|  |               |               |  |
|  |               |               |  |    9
|  |               |               |  |
|  |               |               |  |
|  |               |               |  |
|  |               |               |  |
+--+---------------+---------------+--+
|  |               |               |  |    1
+--+---------------+---------------+--+

Örnekler:

Burada, hizmetin yalnızca ilgili bölümlerini çıktılamak için iki örnek:

Giriş: tek ve hizmet blok A
çıkış:

                   T---------------T   
                   |               |   
                   +---------------+   
                   |               |   
                   |               |   
                   |               |   
                   |               |   
                   |               |   
                   |               |   
                   |               |   
                   |               |   
                   |               |   
                   T---------------T   
                   |               |    
                   |               |    
O=====================================O
   |               |                     
   |               |                     
   +---------------+                   
   |              F|                   
   |               |                   
   |               |                   
   |               |                   
   |               |                   
   |               |                   
   |               |                   
   |               |                   
   |               |                   
   +---------------+                   
   |               |                   
   +---------------+                   

Gördüğünüz gibi, Fblok içerisindeki köşede eklenir, ancak Tdeğiştiriyorsanız +ASCI sanat çıkışında.


Giriş: çift ve hizmet blok C
çıkış:

                                       

+--+---------------+                   
|  |               |                   
|  |               |                   
|  |               |                   
|  |               |                   
|  |               |                   
|  |               |                   
|  |               |                   
|  |               |                   
|  |              F|                   
+--+---------------+                   
|  |               |                   
|  |               |                   
O=====================================O
                   |               |  |
                   |               |  |
                   T---------------+--T
                   |               |  |
                   |               |  |
                   |               |  |
                   |               |  |
                   |               |  |
                   |               |  |
                   |               |  |
                   |               |  |
                   |               |  |
                   T---------------+--T

                                       

Zorluk kuralları:

  • Satır aralığı ve sondaki satır sonu isteğe bağlıdır (giriş tek olduğunda satır başı ve satır başı iki boş satır dahil). Sondaki boşluklar da isteğe bağlıdır. Ancak önde gelen alanlar zorunludur.
  • Hangi bloğa hizmet ettiğimizi gösteren dört makul farklı giriş (tamsayılar için [-999,999] aralığında kalın); ve bunun tek veya çift / karışık olup olmadığını belirtmek için iki makul farklı giriş (lütfen bu ilgili yasak boşluk deliğine dikkat edin ). Lütfen yanıtınızda kullandığınız G / Ç'yi belirtin!
  • Bir küçük harf kullanmasına izin verilir fve tyerine (veya karışık durumda) Fve T.
  • Tek bir çıktı dizesini döndürmek veya yazdırmak yerine bir satır listesi veya karakter matrisi döndürmenize izin verilir.

Genel kurallar:

  • Bu , bayt cinsinden çok kısa cevap kazanır.
    Kod golf dillerinin, kod yazmayan dillerle yanıt göndermenizi engellemesine izin vermeyin. 'Herhangi bir' programlama dili için olabildiğince kısa bir cevap bulmaya çalışın.
  • Varsayılan I / O kuralları ile cevabınız için standart kurallar geçerlidir , bu nedenle STDIN / STDOUT, fonksiyonlar / yöntem, uygun parametreler ve dönüş tipi, tam programlar ile kullanılabilir. Çağrınız.
  • Varsayılan Loopholes yasaktır.
  • Mümkünse, lütfen kodunuz için bir test içeren bir bağlantı ekleyin (örn. TIO ).
  • Ayrıca, cevabınız için bir açıklama eklemeniz şiddetle tavsiye edilir.

Ah, badminton. Her zaman oynamak istediğim ama hiç oynamadığım tek oyun çünkü unuttuğum / oynayacağınız oyuncuları bulamadık
Quintec

@Quintec Ücretsiz bir akşam için Hollanda'daki kulübümüzü ziyaret etmekten çekinmeyin; p
Kevin Cruijssen

1
Anlaşma, uçak biletimi ve otelimi öderseniz? :)
Quintec

1
@Quintec Kazanırsanız, uçak biletini geri ödeyeceğim, haha ​​xD
Kevin Cruijssen

1
@MagicOctopusUrn Evet, Hollanda'dan bazı profesyonel badminton oyuncuları var. Dünya listesi tbh'da hangi rütbeye sahip olduklarından emin değilim, sık sık badminton izlemiyorum (ve yine de belirtildiği takdirde spor haberlerinde sadece 5 dakika .. diğer tüm zamanlar futbolla boşa harcanıyor). Ve hayır, en iyi oyuncu olarak bence neredeyse hiç gelir elde edemezsiniz. Kesinlikle milyonlarca değil.
Kevin Cruijssen

Yanıtlar:


2

Kömür , 81 bayt

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

Çevrimiçi deneyin! Bağlantı, kodun ayrıntılı versiyonudur. İlk girişi bekarlar ya da çiftler olarak 1ya 2da ikinci girdiyi ABCDsorudaki gibi alır. Açıklama:

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

İlgili genişliklere ve Dmahkemenin yüksekliklerine dönün ve dikdörtgenleri çizin.

×=¹⁸O⟲O↙⁴

Ağı çizin ve Akortu eklemek için rotasyonel simetri uygulayın .

J¹±³F

Ekle Fiçin Dmahkemeye.

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

Leri mahkemenin Tilgili yerlerine ekleyin A.

F№ABη‖↑F№ACη‖

Doğru mahkemeden hizmet vermek için çıktıyı gerektiği gibi yansıtın.


1
@KevinCruijssen Göz ardı ettiğim için üzgünüm, düzeltilmesi gerekiyor, teşekkürler.
Neil

3

Piton 2 , 285 284 bayt

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

Çevrimiçi deneyin!

Oyun türü ( ) için girişi 0/1(veya ) alır,False/TrueDouble/Single

ve 0-3sunum bloğu için ( 0,1,2,3= C,D,A,B)


Bu kadar hızlı oldu! Güzel cevap.
Kevin Cruijssen

1
@Evet, geçen hafta sandbox'tan denedim: P
TFeld

1

JavaScript (ES7),  216 ... 205 201  199 bayt

Girdi (block)(double), blok ya da2 (sağ üst), 1 (sol alt), 1 (sağ alt) veya 2(sol üstte) ve double bir Boolean değeridir.

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)

Çevrimiçi deneyin!

Biçimlendirilmiş sürüm

Nasıl?

Biz yinelemek y=0 için y=30 ve itibaren x=0 için x=39 her değeri için y.

İlk önce X=x19 ve Y=y15.

Değişkenler p = X * Y * b < 0ve q = Y > 0 ^ b & 1bloğa göre her çeyrekte neyin çizileceğini belirlemek için kullanılırb.

Artık her ikisi de X ve Y alanın her çeyreğinde mutlak pozisyonları kolayca test etmek için karelerdir.

Sentezleme x * 24 % 35 > 2verimleri yanlış isex ait olmak {0,3,19,35,38}(dikey çizgilerin konumları) veya aksi halde true .

Çevrimiçi deneyin!

İfade ~16 >> Y % 62 % 6 & 2verir0 Eğer y ait olmak {0,2,12,18,28,30} (ağ hariç yatay çizgilerin pozisyonları) veya 2 aksi takdirde.

Çevrimiçi deneyin!

Değişken i yukarıdaki iki değer arasında bir bit VEYA sonucu olarak tanımlanır ve bu nedenle şu şekilde yorumlanır:

  • 3: boşluk
  • 2: |
  • 1: -
  • 0: +veyaT

İfade (d ? Y : X - 87) > 169, alanı oyun türüne göre kırpmak için kullanılırd(tek ya da çift). Benzer ifadeler 'yi uygun pozisyonlara (d ? X - 87 : Y) % 169çekmek için kullanılır T.


* TIO'yu açar ve çıkışı doğrulamaya başlar * İyi görünüyor; sekiz çıkışın hepsi de beklendiği gibi doğrudur. * Gerçek koda benziyor * Hah .. wth devam ediyor¿ ..: S Daha sonra bu açıklamayı dört gözle bekliyorum, @Arnauld . ASCII-art mücadelesi için beklenmedik miktarda aritmetik, üçlü ve bitsel hesaplama. xD
Kevin Cruijssen

1
@KevinCruijssen Aslında, formüllerimin daha da acayip olmasını isterdim, böylece bunu 200 baytın altına alabilirim, ki bu benim ilk hedefimdi. ;) Ama benim yaklaşımım muhtemelen tüm alanı çizmek için çok fazla optimize edilmiş ve parametreleri makul bir bayt maliyetiyle hesaba katmak için yeterli değil.
Arnauld

Muhtemelen evet, [-999,999]dört farklı giriş için aralıktaki herhangi bir giriş değerine izin verdiğim için, belki de bunu bir şekilde bayt golf oynamak için avantajınıza kullanabilirsiniz. Kısmen baştan başlamak anlamına gelir, belki de çabaya değmez. Ne yazık ki size 200 baytın altında size yardımcı olacak golf ipuçları veremem; Sadece denemenizde size iyi şanslar diliyorum. ; p
Kevin Cruijssen

@KevinCruijssen Tamamlandı. :)
Arnauld

1

Jöle , 108 99 bayt

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

Çevrimiçi deneyin!

Eminim bu daha iyi golf edilebilir.

Bekarlar / çiftler için sol argüman 0 veya 1 ve farklı sunum kadranları için sağ argüman 0,1,2,3 ile ikili bağlantı. Dizelerin listesini döndürür

@KevinCruijssen'e bir bayt tasarrufu için teşekkürler!


Jelly'i bilmiyorum, bu yüzden muhtemelen burada aptalca bir şey söylüyorum, ancak “|-+TO= ”“F”, “F”tek karakterler için başka bir dizeye golf edilemez mi? Örneğin 05AB1E'de, 1 ( '), 2 ( ) veya 3 ( ) boyutundaki dizeler için yerleşikler vardır , bu yüzden olabilir 'F. Jelly'in benzer bir şeye sahip olup olmadığını veya bunun için başka bir nedeniniz olup olmadığını bilmiyor musunuz “|-+TO= ”“F”?
Kevin Cruijssen

1
@KevinCruijssen Teşekkürler ve güzel bir meydan okuma. Ben öyle düşünmüyorum. İki karakter değişmez değeri vardır (with ile), ancak bir değil. 7 sayısını kullanabilir ve aramaya F ekleyebilirim, ancak 7'yi 21 ile takip etme gereği nedeniyle aynı sayıda karakter var, bu nedenle ikisini ayırmak için bir alana ihtiyaç duyuyor.
Nick Kennedy

Dediğim gibi Jelly bilmiyorum. 1 ya da 2 karakterli dizeler için bazı yerleşikler olabileceğini düşündüm, ama söylemezsen sana inanıyorum. :)
Kevin Cruijssen

@KevinCruijssen Başkasının atlaması için mutluyum - hala öğreniyorum!
Nick Kennedy

1
@KevinCruijssen Tek bir karakter değişmezinde kullanılabilecek tamamen özledim - ayy! Bir bayt kaydettiğiniz için teşekkürler.
Nick Kennedy
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.