Kejuaraan sepak bola Amerika, Super Bowl 50 , akan berlangsung hari ini pukul 11:30 malam UTC (dan Anda dapat menontonnya langsung online ). Tantangan ini dibuat untuk merayakannya.
Dalam pertandingan sepak bola Amerika, dua tim berlomba untuk mendapatkan poin terbanyak dan ada enam cara untuk mencetak poin ini. Kami akan memberikan masing-masing singkatan:
- Sasaran lapangan -
FG
: 3 poin - Touchdown -
TD
: 6 poin - Poin ekstra -
XP
: 1 poin - Hanya dapat dicetak langsung setelah touchdown. - Konversi dua poin -
XD
(seperti poin tambahan tapi lebih bahagia): 2 poin - Hanya bisa dicetak langsung setelah gol. - Keamanan -
S
: 2 poin - Tendangan tangkapan wajar -
FCK
: 3 poin (permainan yang sangat langka)
Tulis program atau fungsi yang menggunakan string garis tunggal yang hanya berisi enam singkatan ini, baik dalam huruf besar dan kecil.
String ini mewakili semua peristiwa mencetak gol dalam permainan (atau bagian dari permainan) sepakbola, dengan istilah huruf besar milik satu tim dan huruf kecil milik yang lain.
Tugas Anda adalah melaporkan skor akhir pertandingan dan menunjukkan siapa yang menang dengan output formulir
[score 1] [to] [score 2]
dimana:
[score 1]
selalu lebih besar dari dua skor (jika tidak sama), terlepas dari apakah huruf besar atau kecil menang.[score 2]
adalah yang lebih kecil dari dua skor (jika tidak sama).[to]
adalahTO
jika tim huruf besar menang,to
jika tim huruf kecil menang, danTo
jika itu seri.
Contoh: Semua acara pemberian skor di Super Bowl XLIX dapat diringkas dengan string
TDXPtdxpTDXPtdxpfgtdxpTDXPTDXP
di mana huruf besar adalah New England Patriots dan huruf kecil adalah Seattle Seahawks . Patriots mencetak 28 dan Hawks 24, jadi hasilnya adalah:
28 TO 24
Catatan
- Program / fungsi Anda harus mendukung input sembarang, termasuk string kosong.
XP
danXD
hanya akan terjadi setelahnyaTD
.xp
danxd
hanya akan terjadi setelahnyatd
.- Anda mungkin tidak menganggap string input dimulai atau diakhiri dalam kasus tertentu.
- Sebuah baris baru yang membuntuti secara opsional diizinkan di input dan output
Mencetak gol
Kode terpendek dalam byte menang. Jawaban yang diposting sebelum kickoff ( terlambat sekarang! ) Dari Super Bowl 50 dapat memprediksi tim pemenang (baik Panthers atau Broncos ), dan jika mereka benar, dapatkan bonus byte -10%!
(Saya akan memeriksa riwayat revisi untuk memastikan prediksi tidak berubah dan benar-benar dibuat sebelum kickoff.)
Uji Kasus
[empty string] -> 0 To 0
TDXPtdxpTDXPtdxpfgtdxpTDXPTDXP -> 28 TO 24
FG -> 3 TO 0
fg -> 3 to 0
TD -> 6 TO 0
td -> 6 to 0
TDXP -> 7 TO 0
tdxp -> 7 to 0
TDXD -> 8 TO 0
tdxd -> 8 to 0
S -> 2 TO 0
s -> 2 to 0
FCK -> 3 TO 0
fck -> 3 to 0
TDTDXDSssFCKfgfckFGtd -> 22 TO 16
fcksFCKS -> 5 To 5
tdtdtdtdxp -> 25 to 0
SSSSSSSTD -> 20 TO 0
fgSfckFGfgtdxptdxdTDs -> 26 to 11
FGTDXPtdxdtdsStdxpfgTDfckTDXDFCK -> 29 To 29
sumber
Jawaban:
Pyth,
49464342 byte (37,8 byte dengan bonus)Terima kasih kepada @Maltysen karena membantu saya menghemat 4 byte!
Cobalah di Pyth Compiler .
Saya suka menutupi semua pangkalan, jadi saya akan bertaruh pada Broncos.
Bagaimana itu bekerja
‡
r
adalah keluarga fungsi yang beroperasi pada string.Jika skor pertama dalam
J
(sesuai dengan kasus bertukarz
, yaitu, huruf kecil asli) lebih rendah dari skor kedua, fungsi tanda akan kembali-1
,(-1 + 1) ^ 2 == 2
danr" to "2
iniswapcase
, sehingga kembali" TO "
.Jika skor pertama lebih tinggi dari skor kedua, fungsi tanda akan kembali
1
,(1 + 1) ^ 2 == 0
danr" to "0
inilowercase
, sehingga kembali" to "
.Jika skor adalah sama, fungsi tanda akan kembali
0
,(0 + 1) ^ 2 == 3
danr" to "3
inititle
, sehingga kembali" To "
.sumber
to
s melalui nilai yang berbeda untukr
MATL , 51 * 0,9 = 45,9
54575863byteTerima kasih kepada Dennis karena telah menghapus 3 byte!
String input kosong diwakili dalam kompiler online sebagai karakter baris baru.
EDIT (8 Juni 2016): Tautan di bawah ini mencakup modifikasi sesuai rilis 18.1.0 bahasa (pindah terlebih dahulu
3
sebelumXc
)Cobalah online!
Saya bertaruh pada Broncos.
Penjelasan
Skor terdeteksi menggunakan satu huruf, baik huruf besar atau kecil (huruf besar ditunjukkan sebagai berikut):
P
untuk XP (1 poin)D
untuk XD (2 poin)F
untuk FG (3 poin) dan untuk FCK (3 poin)T
untuk TD (6 poin)S
untuk S (2 poin)Masing-masing dari lima huruf ini berkorespondensi secara unik dengan event skor kecuali itu
F
digunakan kembali untukFG
danFCK
, yang memiliki skor yang sama. Terima kasih kepada @Dennis untuk ini !D
akan mendeteksi TD dan XD. JadiT
akan diberikan 4 poin, bukan 6 untuk kompensasi.Pemesanan
PDFTS
, menyimpan beberapa byte ketika mendefinisikan array nomor yang menentukan poin:[1,2,3,4,2]
.Setiap peristiwa dideteksi oleh kehadiran salah satu huruf di atas dalam huruf besar atau kecil. Perbandingan dilakukan dalam tiga dimensi: panjang string input ( N ) × jumlah tim (2) × jumlah peristiwa skor yang terdeteksi (5). Penggunaan luas dibuat dari penyiaran , yang merupakan perluasan otomatis dari array sepanjang dimensi tunggal untuk mencocokkan ukuran array yang lebih besar.
sumber
F
inFG
danFCK
harus menyimpan tiga byte.CJam,
575554535049 byteCobalah online!
Saya tidak tahu apa itu Bronco, jadi saya akan bertaruh pada Panthers.
Bagaimana itu bekerja
sumber
:-g
tidak pernah melihat emotikon itu sebelumnyaJavaScript (ES6), 128
130byteEdit 2 byte yang disimpan dengan menerapkan tip @ Neil
UJI
sumber
parseInt
itu benar-benar pintar! Menggunakan tip @ Neill>u?l+" to "+u:u+(u>l?" TO ":" To ")+l
untuk output akan menghemat 2 byte juga.JavaScript (ES6),
165156151149 byte9 byte disimpan berkat @ dev-null , 5 berkat @Tidak itu Charles dan 2 berkat @Neil !
Penjelasan
sumber
/s|fck|../gi
danmap(..),a>b
bukannyamap(..)&&a>b
...:u=="T"?6:u>"R"?2:3...
b+(b>a?" TO ":" To ")+a
Perl,
144140 + 2 = 142 byteMembutuhkan
-n
bendera dan-E
:Edit: Lupa dukungan
to
,To
danTO
.sumber
%a=qw(fg 3 td 6 xp 1 xd 2 s 2 fck 3)
lebih singkat%a=(fg,3,td,6,xp,1,xd,2,s,2,fck,3)
. Dan" "
(dalam definisi Anda tentang$,
) lebih singkat$"
. Tapi saya belum menguji keduanya.$"
dan saya bisa menghapusqw
padato To TO
array, terima kasih!Lua,
231200 BytesItu sangat menyenangkan, bahkan jika saya tidak benar-benar tahu aturan sepak bola Amerika (Kami punya Rugby di sini :)). Saya harus menguji banyak hal untuk membuatnya sesingkat mungkin, saya tidak berpikir ada banyak hal untuk diperbaiki, mungkin tidak ada.
Sunting: Saya benar-benar terbelakang. Solusi pertama yang saya kerjakan berputar menggunakan ekspansi array, lalu saya mengubahnya dan array yang berisi skor untuk tim huruf kecil dan besar tidak lagi berguna. Menghapusnya dan menggunakan variabel biasa menghasilkan -31 byte yang indah.
Tidak terseret dan penjelasan
sumber
Python, 167 byte
Burung hantu yang luar biasa sudah lama berlalu, tetapi karena belum ada solusi Python:
Bekerja di Python 2 atau 3.
sumber