Saya tahu ada banyak tantangan tentang "dua pegolf kode terbaik di dunia", tetapi yang ini sedikit lebih unik, karena Putaran 1 dalam serangkaian tantangan (masa depan) yang melibatkan keduanya.
Tugas Anda adalah menulis sebuah program atau fungsi yang mengembalikan dua string ASCII non-spasi putih yang berbeda, sesuai dengan orang yang memiliki reputasi lebih pada saat program dijalankan, antara Dennis ♦ dan Martin Ender ♦ . Bagian yang sulit adalah Anda harus menampilkan string "tie" yang tepat jika reputasinya identik (tidak mungkin), dan dua string ASCII non-spasi putih yang disebutkan di atas harus berbeda dari "tie" * .
Tidak ada input yang dapat diambil, seperti nama pengguna atau id pengguna. Seperti biasa, penyingkat URL dilarang, dan begitu juga celah umum.
Contoh:
Let the chosen string for Dennis be "D" and the chosen one for Martin Ender be "M" (should be specified)
If Dennis' rep > Martin Ender's rep => D
If it's the other way around => M
If it's a tie => tie
PENTING! Voting pada posting oleh Dennis & Martin dengan tujuan semata-mata mempengaruhi dasi untuk menguji solusi di bawah ini merupakan pemungutan suara yang ditargetkan yang dilarang di seluruh jaringan Stack Exchange. Jika Anda ingin menguji bahwa suatu solusi menghasilkan output yang benar,
tie
maka ubah ID di dalamnya menjadi 2 pengguna yang Anda tahu terikat. Lihat posting Meta ini untuk detail lebih lanjut.
* Saya pikir tidak ada yang akan menggunakan itu
sumber
Jawaban:
05AB1E ,
6564 byteKode:
Menggunakan penyandian 05AB1E .
Penjelasan:
•в=6{•
mengkonversi nomor tersebutв=6{
dari basis 255 ke basis 10, menghasilkan 1201208478 . Babak pertama adalah ID dari Dennis (12012) dan bagian kedua adalah ID of Martin (8478). Dibagi menjadi potongan-potongan 5 menggunakan5ô
untuk mendapatkan array berikut:Untungnya, kita dapat meninggalkan nol di depan dari ID Martin, karena ini masih berfungsi (periksa tautan sebelum mengklik untuk melihat nol di depan).
Kami sekarang loop melalui array ini menggunakan
vy
dan membangun string berikut dari kode 05AB1E ini:Sedangkan
ÿ
elemen iterator saat ini (menggunakan interpolasi string) Cobalah secara online!Setelah membuat tautan,
.w
membaca semua data dari tautan, menghasilkan sejumlah besar teks. Untuk mengikis reputasi dari ini, kita perlu membagi pada stringtitle="reputation"
. Atau dalam versi yang lebih terkompresi:’„Ö="ˆ"’
. Split pada string ini (dengan¡
) dan dapatkan elemen kedua (dengan1è
) dan pertahankan 100 karakter pertama (denganт£
).Sekarang, teks tergores kami terlihat seperti ini:
Bagian ini mudah, kami hanya menghapus apa pun kecuali angka untuk tetap nomor reputasi, yang kami punya builtin (
þ
). Kami mengakhiri loop dan membungkus semuanya menjadi sebuah array}})
.Akhirnya, kita bisa terus memproses nomor reputasi:
Yang menghasilkan
D
,M
atautie
.sumber
1è) and keep the first **100 characters** (with т£
. " Seharusnya sepenuhnya dalam kode-blok, atau haruskah itu menjadi " elemen kedua (dengan1è
) dan menyimpan 100 karakter pertama (denganт£
). " Sebagai gantinya? Saya kira salah ketik, tetapi jika seharusnya seperti ini saya bingung ..Dennis: 140,033
,;Martin: 140,003
, tapi saya mencoba kode Anda di sini tio.run/nexus/05ab1e#@/... , hasilnyatie
. Bukankah seharusnya ouputD
saja?.w
memerlukan akses web, yang dibatasi pada TIO (ini menjalankan 05AB1E dalam mode aman). Di penerjemah offline, itu harus bekerja.PowerShell v3 +,
14712311910310196 BytesDisimpan 24 byte menggunakan true / false output, bukan nama.
Menyimpan 4 lainnya dengan merestrukturisasi cek akhir.
disimpan 16 dengan hanya mendapatkan reputasi dari dua pengguna dari permintaan, menghemat harus menggunakan
|% r*n
lebih dari sekali, juga berarti kita dapat menyingkirkan seperti sejuta tanda kurung, dan dua variabel tidak berguna.-2 Berkat TessellatingHeckler - menggunakan pelarian karakter alih-alih dua tanda kutip untuk url, juga menghapus
@
dari array yang tidak diperlukan (oopsi)menggunakan
.ToString
trik aneh yang saya tidak pernah tahu ada sampai sekarang direkomendasikan oleh TessellatingHeckler -5, dan akhirnya di bawah 100.Versi yang mengembalikan nama:
ini terlihat cukup berantakan karena pemendekan nama parameter.
di mana pun
|% r*n
muncul, kami mendapatkanReputatioN
, dan|% d*
adalahDisplay_name
menggunakan
Invoke-RestMethod
(aliasirm
) untuk menanyakan API, menyimpan hasil bernamaItems
(menggunakan|% I*
), ke dalam dua variabel$a
&$b
, satu untuk setiap pegolf pro, trikToString
(|% T*g
) menghasilkan salah satu nilaiD
,M
atauTie
jika jumlahnya ganjil / genap / nol.sumber
103! = 9.902900716486180407546715254581773349090165822114492483005280554699... × 10^163
panjang kode Anda adalah byte? : PToString
bekerja seperti itu dengan angka +/-, akan mengingat untuk masa depan.Python 2 , 160 byte
Bukan jawaban Python terpendek, tapi yang terpendek sejauh ini yang tidak membuat asumsi.
Mencetak
1
jika Martin memiliki lebih banyak perwakilan,-1
jika saya melakukannya.sumber
JavaScript (ES6),
167156146144141132103 byteBodoh
fetch
dan itu bodoh, mahalPromise
!Diasumsikan, seperti yang diperbolehkan saat ini, bahwa Dennis & Martin akan selalu menjadi 2 pengguna teratas. Perlu dijalankan dari tingkat root
api.stackexchange.com
. MengembalikanPromise
objek (seperti yang sekarang diizinkan oleh konsensus ) yang mengandungtie
atau objek JSON untuk siapa pun yang memiliki perwakilan paling banyak pada saat itu. Jika objek JSON tidak dianggap sebagai output yang valid, tambahkan 5 byte untuk.link
.link
daripada huruf pertamadisplay_name
, yang juga memberikan pemeriksaan lebih baik di masa depan terhadap mereka mengubah nama pengguna mereka untuk memulai dengan huruf yang sama!Cobalah
Alternatif
Jika suatu saat tiba bahwa Dennis & Martin tidak di atas dan kami masih ingin tahu siapa yang memiliki perwakilan paling banyak di antara mereka maka kami akan membutuhkan yang berikut, dengan biaya tambahan 10 byte.
sumber
.display_name[0]
ke.display_name
, atau alternatif bahkan lebih pendek yang masih unik bagi mereka berdua:.link
. ;) Atau hanya seluruh JSON, tapi saya tidak yakin apakah itu cocok dengan popup peringatan.link
, saya menggunakan permintaan API yang difilter untuk hanya mengembalikan informasi yang saya butuhkan.alert
meskipun objek JSON, hanya akan ditampilkan[object Object]
.Python 3,
160157151 byte-3 byte terima kasih kepada @KevinCruijssen
Mencetak tautan ke pengguna yang memiliki reputasi lebih
Asumsikan mereka berada di # 1 dan # 2
Tanpa membuat asumsi apa pun, Python 2, 157 byte :
sumber
Python,
226225221 byteSaya merasa ini terlalu panjang.
Mencetak
"True"
jika Martin memiliki lebih banyak perwakilan daripada Dennis,"False"
jika Dennis memiliki lebih banyak rep daripada Martin, dan"tie"
jika mereka memiliki yang sama (secara teoritis. Saya tidak dapat menguji ini: P).https
->http
untuk 1 byte berkat @KevinCruijssen!re as r, r.sub
->re, re.sub
untuk 4 byte, terima kasih kepada @ovs!sumber
https
kehttp
? Saya tahu PPCG benar-benar https sekarang, tapi mungkin itu mengarahkan otomatis ke HTTPS ketika Anda menavigasi ke HTTP dengan Python, seperti halnya di browser?re as R
. Cukup gunakanimport requests as r,re
danre.sub
cmp
fungsi untuk menyimpan beberapa byte dengan mengganti tiga baris terakhir dengan sesuatu sepertiprint['tie',0,1][cmp(f('8478'),f('12012'))]
PHP, 167 Bytes
mencetak -1 untuk Dennis, 1 untuk Martin Ender. dasi jika ada dasi
sumber
Python 2 ,
228223204199 byteSaya melakukan ini di hotspot seluler jadi ... itu tidak bagus ...
Asumsikan keduanya akan selalu sama dalam seratus ribu.Tidak menganggap apa pun sekarang. : DMencetak
True
jika Dennis memiliki reputasi lebih dari Martin,False
sebaliknya danTie
jika mereka ... terikat.sumber
Bash + jq ,
140133 byteDiformat dan dijelaskan
Pertama, kami
meringkukw3m API(dan menggunakan:--compressed
, atau singkat--com
untuk un-gzip)Itu beberapa JSON. Perhatikan bahwa urutannya stabil, tidak berdasarkan pada reputasi. JQ kemudian memproses JSON, yang dibuat untuk itu.
Kami menggunakan di
1/x
atas untuk menghasilkan kesalahan pembagian-oleh-nol ketika min == maks, jadi dalam situasi seri. The||echo tie
bash menangkap itu.Perhatikan bahwa peringatan dicetak pada stderr oleh JQ dalam kasus itu, tetapi kami menganggap hanya stdout hasil aktual dari program;)
sumber
w3m
alih-alihcurl --com
menyimpan beberapa byte. Juga, saya pikir perlu disebutkan bahwa ini membutuhkan jq 1.5, karena jq 1.4 tidak meningkatkan kesalahan pembagian dengan nol.Stackexchange API Data Explorer ,
184180 byteTerima kasih kepada @Kevin Cruijssen untuk -4 byte
Cetakan 1 untuk Dennis dan 2 untuk Martin
Karena saya baru kemarin mengetahui tentang SEADE, ini seharusnya sangat mudah dikalahkan.
Coba di sini
sumber
'D'
dan'M'
ke0
dan1
.