Ini hari Jumat ... jadi mari kita bermain golf! Tulis kode yang menentukan skor pemain pada hole di permainan golf. Kode dapat berupa fungsi atau keseluruhan program. Seperti yang ditunjukkan genre, kode terpendek menang.
Input (parameter atau stdin, pilihan Anda):
- Integer yang mewakili par hole, dijamin antara 3 dan 6
- Integer yang mewakili skor pegolf, dijamin antara 1 dan 64
Output (cetak ke stdout atau kembali, mengikuti baris baru diizinkan tetapi tidak diperlukan, pilihan Anda):
- jika skor 1, hasilkan "Lubang dalam satu"
- jika skor == par - 4 dan par> 5, output "Condor"
- jika skor == par - 3 dan par> 4, output "Albatross"
- jika skor == par - 2 dan par> 3, output "Eagle"
- jika skor == par - 1, hasilkan "Birdie"
- jika skor == par, output "Par"
- jika skor == par + 1, hasilkan "Bogey"
- jika skor == par + 2, hasilkan "Bogey Ganda"
- jika skor == par + 3, hasilkan "Triple Bogey"
- jika skor> par + 3, hasilkan "Haha you loser"
EDIT Selamat kepada Dennis karena memiliki jawaban terpendek!
Jawaban:
Jelly , 61 byte
Cobalah online!
Latar Belakang
Ini menggunakan kompresi kamus statis Jelly. Anda dapat menemukan kompresor di sini . Cara ini,
dan
sebaik
dan
adalah setara.
Bagaimana itu bekerja
sumber
PHP 5.3+,
Versi bebas pemberitahuan,173167166159156151127byte139137 byteTetapkan variabel
tampilan meledak$s
inti dan$p
ar sebelumecho
dan Anda tidak aktif.Suntingan
-6: Tidak menyimpan array, panggil saja jika perlu.
-1: Membalik terner sekitar.
-7: Yang terendah
$s-$p
dengan$s>1
itu-4
, jadi yangmax()
tidak perlu, karena4+$s-$p >= 0
.-3
Array -> explode()
:, terima kasih CoolestVeto!-5:
Stringkonstan Cheaty undefined plus$r[-1] -> false
, terima kasih Ismael Miguel!-24: Beralih dari
explode()
fungsi keprintf
/%s
setup, dengan beberapa penyesuaian, lebih banyak terima kasih kepada Ismael Miguel untuk perubahan arah.-6: Membelokkan , kita kembali
echo
lagi!sumber
$b="Bogey";
dengan$b=Bogey;
untuk menyimpan 2 byte. Juga, ganti$s-1? ... : ...;
dengan Anda denganecho ... ?: ...;
. Ini versi panjang 151 byte:function g($s,$p){$b=Bogey;echo explode("-","Condor-Albatross-Eagle-Birdie-Par-$b-Double $b-Triple $b-Haha you loser")[min(4+$s-$p,8)]?:"Hole in one";}
printf([Condor,Albatross,Eagle,Birdie,Par,'%s','Double %s','Triple %s','Haha you loser'][min(4+$argv[1]-$argv[2],8)]?:'Hole in one',Bogey);
. Pada dasarnya: Menghapus deklarasi fungsi, menghapusexplore
, menghapus tanda kutip, menggunakan array dan digunakan$argv
. Kode terakhir adalah 139 byte.05AB1E ,
9190 byteKode:
Penjelasan:
Bagian 1:
Bagian 2:
Ini sama dengan
"Condor Albatross Eagle Birdie Par 0Bogey Double0Bogey Triple0Bogey"
menggunakan kompresi string dan interpolasi string. Kami kemudian berpisah pada spasi, menggunakanð¡
.Bagian 3:
Menemukan banyak bug, menggunakan CP-1252 pengkodean .
Cobalah online!
sumber
Vitsy, 131 byte
Penjelasan:
Ini bekerja dengan mencari tahu apa skor relatif terhadap par, kemudian mengeksekusi baris yang berbeda (dan mendapatkan string yang berbeda).
Cobalah secara Online!
Mode Verbose (untuk kotoran dan cekikikan):
sumber
JavaScript (ES6),
125124 byteTetapkan ke variabel misalnya
f=p=>s=>
, lalu panggil seperti:f(6)(2)
Par pertama, lalu skor.Mungkin dapat dipersingkat dengan menggabungkan
"Bogey"
s.sumber
",Double ,Triple ".split`,`[k-1]+"Bogey"
manak=s-p
.LittleLua - 160 Bytes (tidak kompetitif)
Saya relatif yakin saya melakukan ini dengan benar.
Menerima dua bilangan bulat, par dan skor pemain.
Versi Little Lua yang saya gunakan untuk membuat ini diunggah setelah tantangan ini diposting, tetapi tidak diedit sesudahnya. Secara relatif jelas dari kode bahwa tidak ada yang ditambahkan untuk menyederhanakan tantangan ini
Info LittleLua:
Setelah saya puas dengan built in dan fungsionalitas Little Lua, sumber akan tersedia bersama dengan infopage.
LittleLua V0.02
sumber
Mouse-2002 ,
223207 byteMenghapus komentar kemungkinan akan membantu ...
Tidak Disatukan:
sumber
bash,
150136 byteUji coba:
Terima kasih kepada Dennis untuk 14 byte!
sumber
Python 2,
186179158 bytesEDIT 1: menambahkan case "hole in one" yang hilang ...
EDIT 2: mengeluarkan beberapa byte (terima kasih untuk tac)
sumber
4
danelse
print
dan{
, dan jika Anda menggunakan titik koma untuk meletakkana=
danprint
pada baris yang sama, Anda dapat mencukur byte spasi putihHaskell - 131 byte (menghitung baris baru)
lines
adalah satu-satunya cara yang dapat saya pikirkan untuk bermain golf dalam daftar string yang harus berisi ruang dengan akses hanyaPrelude
jadi terjebak dengan pembatas dua karakter.Meski demikian, Haskell biasanya tidak kompetitif ini (setidaknya terhadap bahasa umum).
sumber
import
apa pun yang Anda suka, bukan hanya builtinPython 2.7, 226 byte
Sulit untuk datang dengan kode python pendek ketika Anda terlambat ke pesta, terbaik yang bisa saya pikirkan.
sumber
[print r for r in l if r]
C, 198 Bytes
sumber
Japt, 97 byte
Berisi banyak hal yang tidak patut. Uji secara online!
Bagaimana itu bekerja
sumber
Python 2.7.2, 275 byte
Tidak digabungkan / dijelaskan:
Jawaban kedua saya, ironisnya keduanya ada di Python. Tips bermain golf dihargai!
sumber
b
.int
secara otomatis.Python 2,
302284 byteJika memimpin ruang putih diizinkan, itu akan menjadi 282 byte:
sumber