Mengingat Australia Terbuka 2014 di Melbourne, dan kemenangan oleh Stanislas Wawrinka melawan Novak Djokovic, saya mengusulkan tantangan golf kode berikut!
Wawrinka dan Djokovic melakukannya lagi atas dasar CGC ini. Tantangan Anda adalah mengambil string yang terdiri dari 1 dan 2 dan menentukan skor tenis berdasarkan sistem penilaian tenis. Angka "1" menunjukkan bahwa Wawrinka telah mencetak poin, sedangkan angka "2" menunjukkan bahwa Djokovic telah mencetak poin.
Sebagai contoh: 1211222122111122111
akan menghasilkan output dua baris:
Wawrinka 1 - 40
Djokovic 1 - 30
Semakin lama string, semakin jauh ke dalam game skornya.
Aturan:
- Kemenangan kode terpendek, murni dan sederhana.
- Nilai saat ditampilkan harus sejajar kanan dan juga kolom sejajar; misalnya
Penjajaran sampel dari contoh:
Wawrinka 7 5 3 - 0 Djokovic 6 7 4 - 15
Jika permainan sedang berlangsung, skor harus ditampilkan setelah skor yang ditetapkan. Skor game harus mengikuti skor yang ditetapkan dengan pemisah spasi-dasbor-ruang. Jika ini merupakan game pertama, skor 0-0 yang ditetapkan harus ditampilkan.
Wawrinka 0 - 0 Djokovic 0 - 15
Sebuah game akan berjalan dalam urutan 0, 15, 30, 40, dan titik game. Jika permainan mencapai 40-40, deuce dideklarasikan, dan skor harus menampilkan deuce pada baris pemain yang mencetak poin:
Wawrinka 7 5 3 - 40 Djokovic 6 7 4 - 40 Deuce
Jika deuce tercapai, poin berikutnya akan menjadi keuntungan bagi pemain yang mencetak poin:
Wawrinka 7 5 3 - Ad Djokovic 6 7 4 - 40
Poinnya setelah itu, jika dicetak oleh pemain yang diuntungkan, memenangkan pertandingan, jika tidak game akan kembali ke deuce.
Jika lebih dari satu deuce dicetak di antara poin keuntungan, jumlah deuce akan ditunjukkan oleh angka dalam tanda kurung:
Wawrinka 7 5 3 - 40 Djokovic 6 7 4 - 40 Deuce (2)
Satu set dimenangkan jika seorang pemain mencapai 6 pertandingan atau lebih dan dengan margin dua pertandingan dalam memimpin, misalnya 7-5, 6-4 ... 9-7 (Dalam kasus set kelima tadi malam)
Set yang berurutan harus dipisahkan dengan spasi.
Ada tie break di Australia Terbuka, oleh karena itu jika set 6-6 tercapai, tie-break dibuat oleh pemain pertama yang mencapai tujuh poin dengan keunggulan selisih dua poin. Tampilan tie break ditunjukkan dalam tanda kurung siku sebagai berikut:
Wawrinka 7 6 [6] Djokovic 6 6 [4]
Pemenang tie-break dikatakan telah memenangkan set sebelumnya 7-6.
Jika set kelima mencapai 6-6, permainan dilanjutkan tanpa tie-break sampai margin dua pertandingan dicapai dengan satu pemain, pemain itu menjadi pemenang set itu. Tidak ada tie-break di set kelima.
Jika seorang pemain telah memenangkan tiga set, baris ketiga akan ditampilkan mengatakan
Wawrinka wins
atauDjokovic wins
tergantung pada siapa yang menang dan kode kemudian berakhir.Wawrinka 2 6 6 3 9 Djokovic 6 4 2 6 7 Wawrinka wins
Jika string berakhir sedemikian rupa sehingga poin terakhir telah memenangkan permainan, set atau pertandingan, skor permainan tidak ditampilkan ...
Wawrinka 7 5 3 Djokovic 6 7 4
Jika string melampaui pertandingan yang dimenangkan, sisa string diabaikan, skor ditampilkan dan pemenang dinyatakan.
Jawaban:
Perl - 424 byte
Baris baru telah ditambahkan untuk kewarasan horisontal yang dapat
dibaca.Saya percaya ini menjadi solusi yang lengkap, menurut penilaian Australia Terbuka :
Uji Kasus
Semua skor menengah untuk test case terakhir dapat dilihat di sini: http://codepad.org/FzDIcf0W
sumber
ECMAScript 6 - 635 Karakter
Dengan komentar:
Pengujian
Output Uji
sumber
Javascript - 743 byte
Tanpa kompiler penutupan:
sumber