Pengantar:
Saya melihat hanya ada satu tantangan terkait bulu tangkis lainnya saat ini . Karena saya bermain bulutangkis sendiri (selama 13 tahun terakhir sekarang), saya pikir saya akan menambahkan beberapa tantangan terkait bulutangkis. Di sini yang kedua (yang pertama dapat ditemukan di sini ):
Tantangan:
Beberapa aturan tentang bulutangkis berfungsi:
- Servis akan selalu dilakukan secara diagonal di atas net.
- Anda harus selalu melayani setelah garis yang paralel dan terdekat ke jaring.
- Area di mana Anda diizinkan untuk menyajikan berbeda tergantung pada apakah itu tunggal (1 vs 1) atau ganda / campuran (2 vs 2).
- Untuk lajang (1 vs 1), area biru pada gambar di bawah ini adalah tempat Anda diizinkan untuk melayani. Jadi ini termasuk bagian di belakang, tetapi tidak termasuk bagian di samping.
- Untuk ganda / campuran (2 vs 2), area hijau pada gambar di bawah ini adalah tempat Anda diperbolehkan ke server. Jadi ini tidak termasuk bagian di belakang, tetapi termasuk bagian di samping.
- Anda mungkin tidak berdiri di garis ketika melayani. Tetapi pesawat ulang-alik masih akan berada di dalam jika mereka mendarat di atas garis.
Berikut tata letak lapangan bulutangkis:
Aturan tantangan:
Memasukkan:
Anda akan diberikan dua input:
- Sesuatu untuk menunjukkan apakah kita memainkan tunggal atau ganda / campuran (yaitu boolean)
- Sesuatu untuk menunjukkan dari mana Anda melayani blok (yaitu
[1,2,3,4]
atau['A','B','C','D']
seperti yang digunakan dalam gambar di atas).
Keluaran:
Hanya baris yang relevan untuk penayangan saat ini (termasuk jaring), termasuk F
untuk menunjukkan dari mana Anda melayani, dan beberapa T
untuk menunjukkan di mana Anda akan berpotensi untuk ditayangkan.
Meskipun pada kenyataannya Anda diizinkan untuk melayani dari dan ke mana saja di area yang ditentukan, kami menganggap seseorang yang akan melayani akan selalu berdiri di sudut area servis dekat ke tengah jaring, yang merupakan tempat Anda akan menempatkan itu F
. Dan mereka akan melayani ke salah satu dari empat sudut area di mana mereka harus melayani, yang mana Anda akan menempatkan T
s.
Sebagai ASCII-art, seluruh lapangan bulutangkis akan menjadi sebagai berikut (jumlahnya ditambahkan sehingga Anda tidak perlu menghitungnya sendiri):
2 15 15 2
+--+---------------+---------------+--+
| | | | | 1
+--+---------------+---------------+--+
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | 9
| | | | |
| | | | |
| | | | |
| | | | |
+--+---------------+---------------+--+
| | | | | 2
| | | | |
O=====================================O 37 times '='
| | | | |
| | | | | 2
+--+---------------+---------------+--+
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | 9
| | | | |
| | | | |
| | | | |
| | | | |
+--+---------------+---------------+--+
| | | | | 1
+--+---------------+---------------+--+
Contoh:
Di sini dua contoh untuk hanya menampilkan bagian-bagian yang relevan dari servis:
Input: Tunggal dan melayani blok A
Output:
T---------------T
| |
+---------------+
| |
| |
| |
| |
| |
| |
| |
| |
| |
T---------------T
| |
| |
O=====================================O
| |
| |
+---------------+
| F|
| |
| |
| |
| |
| |
| |
| |
| |
+---------------+
| |
+---------------+
Seperti yang Anda lihat, F
itu ditambahkan di sudut dalam blok, tetapi T
menggantikan +
dalam output ASCI-art.
Input: Gandakan dan tayangkan blok C
Output:
+--+---------------+
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | F|
+--+---------------+
| | |
| | |
O=====================================O
| | |
| | |
T---------------+--T
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
T---------------+--T
Aturan tantangan:
- Leading dan trailing newlines adalah opsional (termasuk dua baris awal dan akhir kosong ketika input tunggal). Ruang tambahan juga opsional. Ruang-ruang terkemuka adalah wajib namun.
- Empat input berbeda yang masuk akal untuk menunjukkan dari mana blok yang kami layani diizinkan (untuk bilangan bulat, tetap berada dalam kisaran [-999.999]); dan juga dua input berbeda yang masuk akal untuk mengindikasikan apakah itu single atau double / mix (harap dicatat bahwa ini adalah celah terlarang yang relevan ). Harap sebutkan I / O yang Anda gunakan dalam jawaban Anda!
- Anda diizinkan menggunakan huruf kecil
f
dant
(atau case campuran) alih-alihF
danT
. - Anda diperbolehkan mengembalikan daftar garis atau matriks karakter alih-alih mengembalikan atau mencetak string keluaran tunggal.
Aturan umum:
- Ini adalah kode-golf , jadi jawaban tersingkat dalam byte menang.
Jangan biarkan bahasa kode-golf mencegah Anda memposting jawaban dengan bahasa non-codegolf. Cobalah untuk memberikan jawaban sesingkat mungkin untuk bahasa pemrograman 'apa pun'. - Aturan standar berlaku untuk jawaban Anda dengan aturan I / O default , sehingga Anda diizinkan untuk menggunakan STDIN / STDOUT, fungsi / metode dengan parameter yang tepat dan tipe pengembalian, program penuh. Panggilanmu.
- Celah default tidak diperbolehkan.
- Jika memungkinkan, silakan tambahkan tautan dengan tes untuk kode Anda (yaitu TIO ).
- Juga, menambahkan penjelasan untuk jawaban Anda sangat dianjurkan.
Jawaban:
Arang , 81 byte
Cobalah online! Tautan adalah untuk mengucapkan versi kode. Mengambil input pertama sebagai
1
atau2
untuk lajang atau ganda, input kedua sebagai salah satuABCD
seperti dalam pertanyaan. Penjelasan:Lingkari lebar yang relevan dan ketinggian
D
pengadilan dan gambarlah persegi panjang.Gambarkan jaring dan terapkan simetri rotasi untuk menambahkan
A
pengadilan.Tambahkan
F
keD
pengadilan.Tambahkan huruf
T
s ke tempat-tempat yang relevan diA
pengadilan.Refleksikan hasil yang diperlukan untuk melayani dari pengadilan yang benar.
sumber
Python 2 ,
285284 byteCobalah online!
Mengambil input sebagai
0/1
(atauFalse/True
) untuk jenis game (Double/Single
),dan
0-3
untuk blok penayangan (0,1,2,3
=C,D,A,B
)sumber
JavaScript (ES7),
216 ... 205 201199 byteMengambil input sebagai−2 −1 1 2
(block)(double)
, di mana blok adalah (kanan atas), (kiri bawah), (kanan bawah) atau (kiri atas) dan dobel adalah nilai Boolean.Cobalah online!
Versi terformat
Bagaimana?
Kami beralih dari ke dan dari dari ke untuk setiap nilai .y=0 y=30 x=0 x=39 y
Kami pertama-tama mendefinisikan dan .X=x−19 Y=y−15
Variabelb
p = X * Y * b < 0
danq = Y > 0 ^ b & 1
digunakan untuk menentukan apa yang menggambar di setiap kuartal sesuai dengan blok .Mulai sekarang, dan dikuadratkan untuk dengan mudah menguji posisi absolut dalam setiap kuartal lapangan.X Y
Ekspresix {0,3,19,35,38}
x * 24 % 35 > 2
menghasilkan false jika milik (posisi garis vertikal) atau true sebaliknya.Cobalah online!
Ekspresi0 y {0,2,12,18,28,30} 2
~16 >> Y % 62 % 6 & 2
menghasilkan jika milik (posisi garis horizontal, tidak termasuk jaring) atau sebaliknya.Cobalah online!
Variabel didefinisikan sebagai hasil dari bitwise OR antara dua nilai di atas, dan karenanya ditafsirkan sebagai:i
|
-
+
atauT
Ekspresid
(d ? Y : X - 87) > 169
digunakan untuk memotong bidang sesuai dengan tipe permainan (tunggal atau ganda). Ekspresi serupa digunakan untuk menggambar 's di posisi yang sesuai.(d ? X - 87 : Y) % 169
T
sumber
[-999,999]
untuk empat input berbeda, jadi mungkin Anda bisa menggunakannya untuk keuntungan Anda dalam golf beberapa byte. Ini berarti memulai kembali sebagian, yang mungkin tidak sepadan dengan usaha. Sayangnya saya tidak bisa memberi Anda tips bermain golf untuk membantu Anda di bawah 200 byte; Saya hanya bisa berharap semoga sukses dalam usaha Anda. ; pJelly ,
10899 byteCobalah online!
Saya yakin ini bisa menjadi golf yang lebih baik.
Hubungan diad dengan argumen kiri 0 atau 1 untuk lajang / ganda dan argumen kanan 0,1,2,3 untuk kuadran servis yang berbeda. Mengembalikan daftar string
Terima kasih kepada @KevinCruijssen karena telah menghemat satu byte!
sumber
“|-+TO= ”“F”
, tidak bisakah“F”
golf ke jenis string lain untuk karakter tunggal? Di 05AB1E misalnya, ada bawaan untuk string ukuran 1 ('
), 2 („
), atau 3 (…
), jadi bisa jadi'F
. Tidak tahu apakah Jelly memiliki sesuatu yang serupa, atau apakah Anda memiliki alasan lain untuk itu“|-+TO= ”“F”
?”
dapat digunakan untuk satu karakter literal - oops! Terima kasih telah menyimpan byte.