Latar Belakang:
Saya sering menemukan bahwa, ketika menjelajahi situs Stackexchange, saya mulai bertanya-tanya bagaimana orang mendapatkan jumlah reputasi yang mereka miliki. Saya tahu saya selalu dapat mengandalkan codegolf SE untuk menyelesaikan masalah saya, jadi ini dia:
Buat program yang akan menerima bilangan bulat positif yang mewakili reputasi seseorang. Kami akan mengabaikan karunia, dan mengatakan bahwa ini adalah satu-satunya cara untuk mendapatkan / kehilangan perwakilan di SE (tabel lengkap di sini ):
- Setiap akun dimulai dengan 1 rep dan tidak bisa pergi di bawah itu
- Pertanyaan Anda ter-upgrade = +5
- Jawaban Anda dibatalkan = +10
- Pertanyaan Anda diturunkan = -2
- Jawaban Anda diturunkan = -2
- Anda menurunkan jawaban = -1
- Jawaban Anda diterima = +15
- Anda menerima jawaban = +2
Program Anda harus mencari tahu berapa banyak tindakan yang terjadi pada akun pengguna tersebut untuk mencapai rep yang mereka miliki. Itu harus mencari tahu jumlah tindakan terpendek untuk sampai ke tingkat rep. Contoh:
Input: 11 Output: 1 jawaban upvote
Input: 93 Output: 6 jawaban diterima, 1 jawaban diterima
Dalam contoh-contoh ini ketika saya mengatakan 'pertanyaan meningkat', itu berarti bahwa pencarian seseorang menjadi terangkat. Ketika saya mengatakan 'jawab downvoted', itu berarti mereka downvoted jawaban orang lain.
Aturan:
kode-golf , jadi kode terpendek yang dapat melakukan ini akan menang.
Jawaban:
Golfscript,
162144 byteBagaimana itu bekerja
Gagasan umum persis sama dengan jawaban Bash saya .
sumber
Bash,
247202192 byteBagaimana itu bekerja
Setelah perintah sed bekerja, skrip bash berikut dijalankan:
Untuk mendapatkan solusi optimal (jumlah kejadian minimum untuk mendapatkan
n
reputasi), cukup untuk menghitung jumlah jawaban yang diterima (a
) yang diperlukan untuk mendapatkan reputasi di bawah 16 (1 jawaban diterima) dan menangani residu sebagai berikut:sumber
-2
dan-1
menurunkan suara.Perl,
500263256208 byteNaskah
rep.pl
:Pemakaian
Masukan diharapkan sebagai bilangan bulat positif, diberikan sebagai argumen untuk skrip. Tindakan yang berbeda adalah keluaran sebagai garis.
Tes
Tidak disatukan
Versi yang lebih lama
Suntingan
S
tidak lagi diperlukan.E
tidak lagi diperlukan.sumber
R,
454421Terima kasih kepada Dennis untuk jawabannya yang sangat membantu saya.
Versi tidak disatukan
sumber
JavaScript -
270237227206192 karakterSama persis dengan karakter sebanyak Bash (yeah!), Dan mengalahkan Python dan Perl :) Ini memotong reputasi sampai
14
setelah itu diperlukan setelah itu mengambil tindakan yang diperlukan lainnya, benar-benar gaya loop.EDIT 1: Dikonversi
\n
s ke,
s dan dikonversi satuif
blok ke ternary, dan lantai yang lebih baik dengan nama pendek.EDIT 2: Terima kasih banyak kepada Alconja yang membantu saya mengurangi 11 karakter. Setelah itu saya membuat beberapa koreksi lagi untuk mengurangi 2 karakter lagi.
Versi Lama:
Uji:
INPUT:
42
OUTPUT:
INPUT:
1337
OUTPUT:
Kode Tidak Terkunci:
sumber
function name(args){}
menjadiname=(args)=>{}
dan dengan demikian menghemat banyak byte.q
satu kali, jadi Anda bisa menyandingkannya. Anda juga dapat menjatuhkanc
variabel dan melakukanr%=15
alih-alihr-=c*15
. Harus membawa Anda ke 195 karakter (r=prompt()-1,a="1answer ",v="vote,";s=(r/15|0)+"answer accept,",r%=15;if(r>9)s+=a+"+"+v,r-=10;if(r>2)s+="1question +"+v,r-=5;r>0?s+=a+"accepted,":0;if(r<-1)s+=a+"-"+v;r&1?s+=a+"-voted":0;alert(s)
).Bahasa Game Maker, 276
sumber
C # - 391
Agak panjang, dan saya belum menguji ini secara menyeluruh (banyak). :)
Batalkan golf - BARU
Tidak golf - TUA (409)
Uji:
sumber
Python -
213207Mengutuk Anda nama fungsi panjang!
Contoh: (abaikan trailing newline)
sumber
EOF
. Bisakah Anda mengarahkan saya ke kompiler yang berfungsi (dan mana yang harus saya simpan untuk referensi di masa mendatang)?C ++, 276 (316 b / termasuk)
Kompilasi dengan GCC, dengan peringatan. Contoh:
Silakan port ini ke bahasa yang tidak memerlukan ketik deklarasi dan posting sebagai milik Anda.
sumber
JavaScript -
273256235Gabungan perhitungan dan hasil, dan bermain golf lebih jauh hingga total 287.
Sunting: mengeluarkan beberapa variabel untuk beberapa yang lebih singkat.
Dihapus Matematika. Lantai untuk | 0 pendekatan.
Memindahkan beberapa inisialisasi ke parameter prompt (), menghapus beberapa tanda kurung, mengingatkan dengan menambahkan string akhir.
sumber
prompt
, dan tidak dapat membuat kode sulit nilainya.Python3, 188B
Penggunaan:
python3 score.py <ret> 11 <ret>
tempat skrip ini disimpan sebagai score.py.Output sampel:
sumber