Apa yang akan reputasi Anda tanpa topi rep?

16

Dalam tantangan ini, Anda akan menghitung seperti apa reputasi Anda, jika batas reputasi tidak ada di PPCG.

Setiap orang dapat mengakses data mentah untuk perubahan reputasi pada alamat: codegolf.stackexchange.com/reputation . Data mentah mengikuti pengaturan seperti ini (ini adalah beberapa baris pertama dari versi halaman saya.

total votes: 2955
-- bonuses   (100)
 2     37663 (10)
-- 2014-09-11 rep +110  = 111       
 2     41751 (10)
-- 2014-11-23 rep +10   = 121       
 2     41751 (10)
 2     41751 (10)
-- 2014-11-24 rep +20   = 141       

Baris pertama tidak relevan untuk tantangan ini (ini menunjukkan jumlah total suara yang Anda terima pada semua jawaban dan pertanyaan Anda). Baris kedua menunjukkan "bonus Asosiasi". Jika Anda tidak memiliki bonus maka garis itu tidak akan ada sama sekali.

Setelah dua baris (atau satu, jika tidak ada bonus) ini, Anda akan memiliki daftar perubahan reputasi per pertanyaan, bersama dengan ringkasan dari semua perwakilan yang diperoleh / hilang pada setiap hari. Anda juga akan mendapatkan daftar total reputasi yang Anda miliki di akhir hari itu. Hanya hari-hari ketika reputasi Anda berubah ditampilkan dalam daftar ini.

Ada pengidentifikasi di awal setiap baris (kecuali garis ringkasan harian). Ini mewakili kemungkinan alasan perubahan reputasi berikut:

1 : Accept (+2 if you accept, +15 if your answer is accepted)
2 : Upvote (+5 for question, +10 for answer)
3 : Downvote (-1 if you downvote answer, -2 if you get downvoted)
4 : Offensive (-100)
8 : Give bounty
9 : Receive bounty
12: Spam (-100)
16: Approved edit (+2)

Angka yang hilang ( 5,6,7,10,11,13,14,15tidak memengaruhi reputasi).


Tantangan Anda adalah menghitung reputasi yang akan Anda miliki, jika bukan karena batasan reputasi.


Bagaimana Anda akan melakukan ini:

Simpan konten codegolf.stackexchange.com/reputationsebagai teks biasa secara lokal, atau tempat lain yang Anda pilih (ini karena Anda harus masuk untuk mengakses informasi). Anda dapat mengambil data dari situs web secara langsung jika Anda mau, meskipun saya menganggap itu akan jauh lebih lama.

Ringkasnya semua perubahan reputasi positif dan negatif. Suara yang tidak menghasilkan perubahan reputasi (karena tutup rep) ditampilkan seperti ini (perhatikan tanda kurung, bukan tanda kurung biasa):

 2    106125 [0]
 2    106125 [0]
 3    106125 [-2]
 2    106088 [2]
 2    106125 [0]
 2    106088 [0]

Anda harus menyertakan perwakilan yang akan Anda terima jika bukan karena batasannya.

Jumlah posting 106125adalah pertanyaan , sedangkan 106088adalah jawaban . Seperti yang Anda lihat, tidak ada cara untuk membedakan antara keduanya hanya menggunakan data yang diberikan dalam tabel. Karena itu Anda harus mengakses situs web ( codegolf.stackexchange.com) untuk memeriksa apakah suatu posting adalah pertanyaan atau jawaban. Anda juga dapat menggunakan API untuk ini.


Aturan:

  • Setiap orang harus dapat menjalankan skrip Anda sehingga:
    • Anda harus memasukkan semua jenis perubahan reputasi yang berbeda, bahkan jika Anda belum menemukannya sendiri.
    • Kode harus bekerja bahkan jika Anda belum menerima bonus Asosiasi (garis tidak akan ada jika Anda belum)
    • Anda dapat menggunakan bahasa yang tidak bebas (Mathematica, MATLAB dll.), Selama orang lain dengan lisensi dapat menjalankan kode.
    • Anda tidak harus memberikan data mentah, karena semua orang dapat menguji kode Anda pada versi halaman mereka sendiri (akan menarik jika Anda membagikan hasilnya, tetapi itu opsional).
  • Anda dapat menggunakan API atau mengakses situs web secara langsung. penyingkat url tidak diizinkan.
  • Jika ada cara lain untuk menemukan rep Anda akan memiliki tanpa topi rep maka Anda tidak dapat menggunakannya. Anda harus menggunakan data dari halaman yang disebutkan.

Perhatikan bahwa postingan yang merupakan jawaban mendapatkan ekstensi berbeda ke url:

/codegolf/106088        // Answer: Notice the end of the url
/codegolf/106079/detect-ms-windows/106088#106088

/codegolf/106079/       // Question: Notice the end of the url
/codegolf/106079/detect-ms-windows

Keluaran:

Outputnya harus:

Rep w cap: 15440
Rep w/o cap: 16202

Formatnya opsional, [15440,16202]diterima. Rep w capdapat diambil langsung dari baris: ** total rep 15440 :)dekat bagian bawah halaman.


Ini adalah sehingga kode terpendek dalam byte menang.

Stewie Griffin
sumber
Terkait
betseg
4
751. Rip saya dan hidup saya
Christopher
2
lol Saya tidak pernah memukul repcap sebelumnya.
HyperNeutrino
Hanya untuk memperjelas, reputasi Anda dengan topi adalah jumlah total perwakilan Anda, dan reputasi berubah di dalam tanda kurung siku?
Graviton

Jawaban:

3

Perl 5 (dengan curl), 209 +1 (flag -n) = 210 byte

if(/([0-9]+)\s*([0-9]+) \[([0-9]*)/){$_=`curl /codegolf//a/$2`;@p=(2,5,-1);$p[15]=2;@s=(13,5,-1);$x=$1;$r+=($p[--$x]//-100)-$3;$r+=$s[$x]if/#/;};$t=$1 if/([0-9]+) :/;END{say$t,$",$r+$t}

Menyalahgunakan fakta bahwa url untuk jawaban ada #di dalamnya. Dapat menambahkan -sbendera setelah curljika Anda tidak suka stderr dibanjiri dengan progress bar. Saya akan menghargai seseorang dengan halaman reputasi yang lebih beragam dan mengujinya- Saya tidak yakin saya tidak melewatkan apa pun.

Tambang 421 dan akan menjadi 451, omong-omong.

Chris
sumber
Saya belum pernah menggunakan Perl sebelumnya, dan saya tidak bisa melihat dari mana Anda mendapatkan datanya. Di mana saya meletakkan data mentah jika saya ingin menguji ini? Catatan: Saya menggunakan Strawberry di Windows 10. Saya tidak punya Unix atau OS X. Dan bagaimana saya menyebutnya?
Stewie Griffin
@Stewie Griffin Bunyinya data mentah dari stdin. Kode adalah satu-liner, dan harus dijalankan seperti perl -nE 'code' < filename. Anda mungkin harus melakukan beberapa kutipan dan pelarian yang berbeda pada Windows, saya tidak terlalu mengenal lingkungan di sana.
Chris
Optimalisasi kecil: Anda dapat menghapus https://jika Anda -Lmengibarkan bendera ke ikal, memungkinkannya untuk mengikuti pengalihan 301
markasoftware
@Markasoftware Akan mengikuti beberapa pengalihan ke halaman yang sebenarnya, kan? Karena itu, kode saya mem-parsing 301 redirect dari /codegolf//a/$2bukan halaman itu sendiri.
Chris
Saya dapatkan Search pattern not terminated at -e line 1.ketika saya mencoba ini. Saya cukup menempelkan seluruh kode menggunakan apa yang Anda tulis di komentar ( perl -nE ..), sambil menyimpan file di direktori kerja saat ini. Adakah yang tahu mengapa itu terjadi?
Stewie Griffin