Saya menghabiskan semua hari ini di turnamen Super Smash Bros., dan saya mulai memikirkan beberapa terminologi yang kami gunakan ketika mendeskripsikan set. Ini adalah tiga jenis set yang saya lihat dimainkan di turnamen:
- Terbaik dari 3 (Bo3)
- Tiga game dimainkan. Pemenang set adalah pemain yang memenangkan sebagian besar game.
- Jika seorang pemain tunggal memenangkan dua pertandingan set, mereka langsung dinyatakan sebagai pemenang, karena tidak mungkin bagi lawan untuk mengejar ketinggalan.
- Best of 5 (Bo5)
- Lima pertandingan dimainkan. Pemenang set adalah pemain yang memenangkan sebagian besar game.
- Jika seorang pemain tunggal memenangkan tiga pertandingan set, mereka langsung dinyatakan sebagai pemenang, karena tidak mungkin bagi lawan untuk mengejar ketinggalan.
- Pertama hingga 5 (Ft5)
- Oke, saya sedikit curang dengan kata-kata saya tadi. Set semacam ini bukan bagian dari turnamen, tetapi Anda akan sering melihat mereka terjadi di venue. Ini secara tradisional merupakan jenis set yang akan Anda mainkan jika Anda telah menantang pemain lain dan uang ada di telepon.
- Sesederhana kedengarannya: Para pemain berulang kali bermain game sampai salah satu dari mereka telah memenangkan lima, dan pemain itu dinyatakan sebagai pemenang.
Jelas, Bo3 dan Bo5 sangat mirip, hanya berbeda dalam jumlah game yang dimainkan. Tapi Ft5 jelas berbeda ... kan? Tidak juga! Tidak peduli bagaimana set Bo3 turun, pemenang akan memenangkan tepat dua pertandingan. Pemenang set Bo5 akan memenangkan tepat 3 game. Mengapa tidak memanggil mereka Ft2, atau Ft3? Logika yang sama, diterapkan secara terbalik, akan menunjukkan bahwa Ft5 persis sama dengan Bo9.
Tujuan dari tantangan ini adalah untuk menentukan sinonim dari format yang ditetapkan.
Spesifikasi
Program atau fungsi Anda akan mengambil satu string dari input . Dua karakter pertama akan Bo
atau Ft
, dan mereka akan diikuti oleh angka. Program / fungsi akan menampilkan string dengan awalan yang berlawanan dan angka sehingga string input dan output berarti hal yang sama.
Setiap string yang dimulai dengan Bo
akan berakhir dalam angka ganjil.
Anda dapat berasumsi bahwa angka dalam string input tidak akan pernah lebih besar dari 200. Anda juga dapat mengasumsikan bahwa Anda tidak akan pernah menerima input yang outputnya benar akan mencakup angka lebih besar dari 200. Demikian juga, input dan nomor output yang benar akan selalu lebih besar dari 0.
Contohnya
Bo3 -> Ft2
Ft2 -> Bo3
Bo5 -> Ft3
Ft3 -> Bo5
Bo9 -> Ft5
Ft5 -> Bo9
Bo51 -> Ft26
Ft26 -> Bo51
Bo199 -> Ft100
Ft100 -> Bo199
Jawaban:
Pyth, 23 byte
Suite uji.
Bagaimana itu bekerja:
Pertama, untuk menemukan
Bo
atauFt
, program menyaring karakter dalam input dariBoFt
, dengan-"BoFt"z
.Ini segera dicetak dengan
p
.p
juga mengembalikan inputnya. String itu dikonversi ke angka yang menerjemahkan byte sebagai basis 256. Hasilnya adalah 17007 jika string ituBo
, dan 18036 jika string ituFt
.Selanjutnya, itu menghitung hasil yang mungkin,
num * 2 - 1
dan(num + 1)/2
dan menempatkan ini dalam daftar entri 2. Kemudian, program mengindeks ke dalam daftar itu dengan angka di atas, 17007 atau 18036. Karena pengindeksan modular Pyth, ini memilih nomor yang tepat. Hasilnya kemudian dicetak secara otomatis.Karena
p
cetakan tanpa baris tambahan, tetapi pencetakan tersirat memiliki baris tambahan, dua cetakan berturut-turut keluar dalam format yang tepat.sumber
Python 2, 59
Dalam tantangan singkat di mana fungsi diizinkan, singkatnya
lambda
biasanya menang bahkan ketika kode harus berulang karena ketidakmampuan untuk menetapkan variabel.Kami memeriksa kasus mana yang kami gunakan dengan perbandingan string
s>'C'
. Kemudian, dapatkan awalan yang tepat dengan trik daftar slicing'FBto'[s>'C'::2]
.Untuk mendapatkan nomor, kita harus mengevaluasi karakter di luar yang kedua dan melakukan salah satu
*2+1
atau/2-1
ke sana. Kami melakukan ini dengan menempelkan salah satu dari dua ekspresi itu sebagai string, sekali lagi dipilih dengan mengiris daftar, mengevaluasi hasilnya, dan mengubah angka itu menjadi string.Sunting: Disimpan satu arang (59):
Bahkan tidak bertanya ...
sumber
lambda a:(lambda b:b*b)(a+3)
. Namun tidak terlalu pendek.C ++ 11 Templat Metaprogramming, 305 byte
Sunting: Dapatkan 100 byte lagi
Apakah saya mendapatkan cacat apa pun untuk pilihan bahasa saya? : p
Contoh:
sumber
CJam, 29 byte
Cobalah online
Tidak ada yang rumit di sini. Menghitung dua hasil yang mungkin, dan memilih satu dari dua berdasarkan huruf pertama dalam input. Akan diperbarui jika saya menemukan sesuatu yang lebih baik.
Penjelasan:
sumber
CJam, 27 byte
Ini memanfaatkan fakta bahwa
'B' ^ 'F' == 4
dan'o' ^ 't' == 27
.Cobalah online di juru bahasa CJam .
sumber
Javascript (ES6),
5047 karakterSolusi yang sangat sederhana: (Terima kasih kepada undergroundmonorail untuk menghapus satu byte!)
Tidak Disatukan:
Untuk sekali jawaban saya hanya ~ 2x panjang jawaban Pyth terbaik!
sumber
y/2+.5
dengan-~y/2
untuk menyimpan byte.Haskell, 69 byte
Cukup lurus ke depan.
sumber
Pyth - 31 byte
Cukup sederhana, menggunakan zip dan pengindeksan modular untuk beralih. Perhitungan sebenarnya sangat mudah.
Suite uji .
sumber
Julia, 63 byte
Tidak Disatukan:
sumber
Matlab, 95 byte
Contoh:
sumber
Powershell, 111
Keunikan PowerShell dan tanda kurung yang diperlukan adalah kejatuhannya lagi. Bahkan bermain golf
.Substring(0,2)
untuk[0..1]-join''
hanya menyimpan masing-masing 2 byte, dan beberapa byte lainnya disimpan denganElse
terima kasih secara tersirat padaexit
perintah. Baiklah. Penyegaran yang baik untuk memisahkan string.Kode:
Pemakaian:
Penjelasan
sumber
Perl 5, 38 byte (37 +1 untuk
-p
)Pemakaian : simpan sebagai 54768.pl dan jalankan sebagai:
atau secara interaktif:
sumber
-p
tersirat-n
. Anda tidak perlu keduanya.FSharp -
153143 bytePembaruan
if ... then ...
sumber
Ruby, 82 Bytes
Dipanggil dengan argumen untuk menjatuhkan beberapa byte.
Posting pertama, saran diterima. :)
EDIT: Singkirkan 12 byte dengan mengubah matematika saya. Karena bilangan Bo ganjil, mereka akan selalu memiliki desimal setelah membaginya dengan 2, artinya saya bisa memotong dan menambahkan 1 alih-alih menggunakan
ceil
untuk mengumpulkan.sumber
puts
.PHP,
857975 BytesPenggunaan:
Panggil skrip dengan argumen:
php -d error_reporting=0 script.php Bo5
sumber
Tidak terlalu pendek seperti yang lain, tapi itu posting pertama saya:
JS, 143 byte
Versi Tidak Serigala:
sumber
var
kata kunci, dan 3) pernyataan dapat dipisahkan dengan tanda titik koma atau baris baru, jadi Anda tidak perlu keduanya. Untuk tips yang lebih umum, lihat Tips untuk bermain golf di JavaScript .R, 144 byte
Baru mengenal kode golf, R, dan situs ini. Jadi begini:
sumber
C #, 110 byte
sumber