var QUESTION_ID=49876;function answersUrl(e){return"http://api.stackexchange.com/2.2/questions/"+QUESTION_ID+"/answers?page="+e+"&pagesize=100&order=desc&sort=creation&site=codegolf&filter="+ANSWER_FILTER}function getAnswers(){jQuery.ajax({url:answersUrl(page++),method:"get",dataType:"jsonp",crossDomain:!0,success:function(e){answers.push.apply(answers,e.items),e.has_more?getAnswers():process()}})}function shouldHaveHeading(e){var a=!1,r=e.body_markdown.split("\n");try{a|=/^#/.test(e.body_markdown),a|=["-","="].indexOf(r[1][0])>-1,a&=LANGUAGE_REG.test(e.body_markdown)}catch(n){}return a}function shouldHaveScore(e){var a=!1;try{a|=SIZE_REG.test(e.body_markdown.split("\n")[0])}catch(r){}return a}function getAuthorName(e){return e.owner.display_name}function process(){answers=answers.filter(shouldHaveScore).filter(shouldHaveHeading),answers.sort(function(e,a){var r=+(e.body_markdown.split("\n")[0].match(SIZE_REG)||[1/0])[0],n=+(a.body_markdown.split("\n")[0].match(SIZE_REG)||[1/0])[0];return r-n});var e={},a=1,r=null,n=1;answers.forEach(function(s){var t=s.body_markdown.split("\n")[0],o=jQuery("#answer-template").html(),l=(t.match(NUMBER_REG)[0],(t.match(SIZE_REG)||[0])[0]),c=t.match(LANGUAGE_REG)[1],i=getAuthorName(s);l!=r&&(n=a),r=l,++a,o=o.replace("{{PLACE}}",n+".").replace("{{NAME}}",i).replace("{{LANGUAGE}}",c).replace("{{SIZE}}",l).replace("{{LINK}}",s.share_link),o=jQuery(o),jQuery("#answers").append(o),e[c]=e[c]||{lang:c,user:i,size:l,link:s.share_link}});var s=[];for(var t in e)e.hasOwnProperty(t)&&s.push(e[t]);s.sort(function(e,a){return e.lang>a.lang?1:e.lang<a.lang?-1:0});for(var o=0;o<s.length;++o){var l=jQuery("#language-template").html(),t=s[o];l=l.replace("{{LANGUAGE}}",t.lang).replace("{{NAME}}",t.user).replace("{{SIZE}}",t.size).replace("{{LINK}}",t.link),l=jQuery(l),jQuery("#languages").append(l)}}var ANSWER_FILTER="!t)IWYnsLAZle2tQ3KqrVveCRJfxcRLe",answers=[],page=1;getAnswers();var SIZE_REG=/\d+(?=[^\d&]*(?:<(?:s>[^&]*<\/s>|[^&]+>)[^\d&]*)*$)/,NUMBER_REG=/\d+/,LANGUAGE_REG=/^#*\s*([^,]+)/;
body{text-align:left!important}#answer-list,#language-list{padding:10px;width:290px;float:left}table thead{font-weight:700}table td{padding:5px}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script><link rel="stylesheet" type="text/css" href="//cdn.sstatic.net/codegolf/all.css?v=83c949450c8b"><div id="answer-list"> <h2>Leaderboard</h2> <table class="answer-list"> <thead> <tr><td></td><td>Author</td><td>Language</td><td>Size</td></tr></thead> <tbody id="answers"> </tbody> </table></div><div id="language-list"> <h2>Winners by Language</h2> <table class="language-list"> <thead> <tr><td>Language</td><td>User</td><td>Score</td></tr></thead> <tbody id="languages"> </tbody> </table></div><table style="display: none"> <tbody id="answer-template"> <tr><td>{{PLACE}}</td><td>{{NAME}}</td><td>{{LANGUAGE}}</td><td>{{SIZE}}</td><td><a href="{{LINK}}">Link</a></td></tr></tbody></table><table style="display: none"> <tbody id="language-template"> <tr><td>{{LANGUAGE}}</td><td>{{NAME}}</td><td>{{SIZE}}</td><td><a href="{{LINK}}">Link</a></td></tr></tbody></table>
A+
danA-
? Saya tidak mengerti mengapa kita mengabaikan mereka.+
Jawaban:
Python 2,
727062 byteIni adalah fungsi anonim yang mengambil int dan mengembalikan nilai sebagai string.
(terima kasih kepada @ MartinBüttner, @grc dan @TheNumberOne untuk tips)
sumber
"EDCB"[n/10-6]
->chr(75-n/10)
CJam,
34 3332 byteOke, saya sudah mencoba beberapa pendekatan sekarang dan saya tidak bisa mendapatkan ini di bawah 33, jadi begini penjelasannya:
UPDATE : 1 byte disimpan berkat pointer oleh Dennis
Cobalah online di sini
sumber
s
dilakukan?<
Character String -
mendorong string.Retina, 43 + 15 = 58 byte
Retina adalah bahasa regex yang dibuat oleh Martin Büttner, di mana file bernomor ganjil adalah regex yang cocok dengan, dan file genap genap adalah apa yang harus diganti. Setiap baris adalah file terpisah, jadi saya telah menambahkan 15 byte untuk setiap file tambahan.
Penjelasan
Dimulai dengan membuat apa pun dengan 3 atau lebih digit A. Itu menambahkan
-
jika itu adalah angka dua digit yang diakhiri dengan 0, 1, atau 2, dan+
jika berakhir dengan 7, 8, atau 9. Angka-angka tersebut kemudian dipetakan ke nilai mereka (misalnya angka yang dimulai dengan 9 diberikan nilai B). Jumlah yang tersisa secara otomatis adalah F.Sayangnya,Pembaruan: versi 0.5.0 memiliki output antara mati secara default, memungkinkan saya untuk menyimpan beberapa byte.;`
harus ditambahkan terlebih dahulu ke semua kecuali ke regex terakhir untuk menekan output antara.sumber
\d.*
cocok dan menggantikan seluruh string,+
termasuk.C, 99 byte
Saya baru di sini, saya harap saya mengikuti aturan.
Fungsi ini mengambil tanda sebagai parameter dan mengembalikan nilai sebagai string yang diakhiri NULL.
Penjelasan
Menambahkan spasi putih:
Variabel global secara otomatis diinisialisasi ke nol, sehingga b diisi dengan NULLs. Karena hanya dua karakter pertama yang pernah disentuh, kita hanya perlu khawatir tentang menempatkan NULL dalam b [1] jika nilai hanya memiliki satu karakter. NULL ini disisipkan di awal fungsi. Parameter n secara implisit int. Jika nilainya kurang dari 60, maka nilainya diatur ke 'F', jika nilainya lebih besar dari 99 maka akan ditetapkan ke 'A'. Dalam kasus lain, nilai dasar diberikan oleh
'E' - (n - 60) / 10
, yang disederhanakan menjadi75 - n / 10
.n % 10
mendapat digit satuan tanda. Jika kurang dari 3 maka a - ditambahkan, jika lebih besar dari 6 a + ditambahkan, jika tidak b [1] dibatalkan (yang sudah ada).Uji kasus
sumber
Pyth, 33 byte
Cobalah online: Demonstrasi atau Test Suite
Penjelasan:
sumber
> <> (Ikan),
7871 byteMetode:
x,y,z
dari input. Jika sebuah karakter tidak ada, nilai variabelnya akan secara-1
implisit. (ord(c)
akan menandai titik kode karakterc
)z > 0
(3 digit input) cetakA
dan keluar.x < ord('6') or y < 0
(input <60) mencetakF
dan keluar.123 - x
.y < ord('4') print
-` dan keluar.y > ord('6') print
+ `dan keluar.sumber
C,
6765Anehnya, ini cukup dekat dengan solusi python.
Tetapi agar program ini, untuk menjadi sangat singkat, pengorbanan harus dilakukan:
Jika sebuah
F
atau anA
dicetakprintf
bahkan tidak melihat argumen lain yang diberikan. Ini adalah hack yang cukup jahat.Jika
(i%10+1)/4
dievaluasi ke1
(tidak+
atau-
harus ditambahkan ke tingkat),%s
formatter menerima pointer ke\0
byte, sehingga tidak ada yang dicetak. Juga cukup lucu, karena saya tidak tahu bahwa Anda bisa mengambil alamat dari string literal yang diindeks. (mis.&"string"[i]
) ( sunting :"string"+i
bahkan lebih singkat ! Terima kasih @nutki)Di sini keluaran program untuk angka 57 hingga 102. Saya membuatnya menjadi hexdump, jadi bisa dipastikan tidak ada
\0
byte aneh yang telah dicetak.The
main
Metode yang digunakan:sumber
&"string"[i]
tidak perlu karena ini setara dengan yang lebih pendek"string"+i
yang dapat digunakan untuk menyimpan 2 byte.CJam,
41393734 byteIni terlalu lama, tapi saya pikir saya tidak akan bermain golf lebih jauh untuk saat ini.
Uji di sini. Atau jalankan semua test case di sini.
Tiga byte disimpan oleh Pengoptimal.
Penjelasan
(Sedikit ketinggalan jaman)
sumber
GNU sed, 73 + 1 = 74 byte
+1 untuk parameter -r.
sumber
Python 2,
94888469 bytesumber
JavaScript (ES6), 66 byte
Lurus.
sumber
R,
10710599 byteAku bukan usaha yang sangat bagus, tapi aku akan mencoba dan bermain golf nanti.
Edit Menjatuhkan beberapa
if
s. Memperbaiki kasing dan hasil yang salah untuk 100.Sekarang untuk menyingkirkan. Singkirkanifelse
sifelse
.sumber
LETTERS
daripadaletters
.Perl,
6662 byteIni mungkin bisa lebih banyak golf. Juga cara yang berbeda mungkin lebih baik.
+1 untuk
-p
Jalankan dengan:
sumber
-p
dan menjatuhkansay
?Javascript (ES6),
7879 byteIni sebenarnya bukan pilihan yang paling cerdas, tetapi saya melakukan apa yang saya bisa.
Cukup lulus nilai sebagai string , dan itu akan mengembalikan nilai surat itu.
Bagian string dalam sangat penting.
Anda dapat memeriksa testcase di sini:
Jika ruang tambahan setelah surat tidak diizinkan, saya akan dengan senang hati menghapusnya.Bukan itu! Ini meningkatkan kode saya sebesar 1 byte, tetapi tidak ada yang terlalu serius.sumber
One newline after output is fine, but keep it consistent.
". Saya pikir itu cukup konsisten.C #,
14312711288 byteSaya mencoba menjadi pandai dengan melakukan mod nomor ASCII, tetapi sepertinya saya tidak sendirian!
Terima kasih kepada Tim untuk saran pada daftar alih-alih seandainya.
Terima kasih kepada DarcyThomas karena telah menunjukkan bahwa saya dapat menggunakan operator ternary yang bersarang.
sumber
[item1,item2][condition]
. Jika kondisinya Benar itu memberikan item ke-2, jika Salah yang pertama.return <condition> ? <true result> : <false result>
Perhatikan Anda juga dapat membuat sarangreturn <condition> ? <true result> : <condition> ? <2nd true result> : < 2nd false result>
Haskell, 78 byte
Baris pertama terasa boros, menghabiskan biaya 14 byte, tetapi saya tidak dapat menemukan versi yang lebih pendek tanpa itu.
Penjelasan
Operator
#
adalah singkatan untuk membuat n salinan argumen kedua. Daftara
adalah daftar tak terbatas dari Strings "A".f
Indeks fungsi menjadi daftar semua nilai untuk n = 0,1, ... Pemahaman daftar membangun "bagian tengah" dari daftar ini (nilai E ke B);g
adalah Char tunggal yang ditambahkan ke Strings
(yang mungkin kosong).Pemakaian
sumber
C, 102 byte
}
Pemakaian
sumber
dc, 52
Keluaran
sumber
TI-Basic,
797476 Bytessumber
1+
TI-BASIC,
696866 byteTI-BASIC tidak baik untuk manipulasi string.
Masukan pada layar beranda kalkulator, dalam bentuk [angka]: [nama program].
Diformat:
Ini mungkin bisa golf lebih lanjut.
sumber
C #, 82 byte
Ini biola dengan beberapa kasus uji.
sumber
JavaScript (ES6),
8683 byteYang benar-benar memakan karakter adalah
String.fromCharCode
kondisi +/- ... Saya sangat curiga ada cara pintar untuk mempersingkat setidaknya satu dari mereka.sumber
~~(.1*-n+75.9)
->75.9-n/10|0
PHP5.5, 73 byte
Sekali lagi, bukan yang terpendek.
Tapi berhasil!
Saya sudah mengklasifikasikannya di bawah PHP5.5 bukan hanya PHP karena ini menggunakan sintaks yang hanya berlaku untuk PHP5.5 dan PHP5.6.
Anda dapat membaca tentang string dan array dereferencing dalam manual:
http://php.net/manual/en/migration55.new-features.php
sumber
Perl, 52
sumber
Ruby, 58 Bytes
Tidak percaya bahwa tidak ada yang Ruby di sini. Pada refleksi itu cukup mirip dengan beberapa yang sudah ada di sini tetapi tetap:
Coba di sini
sumber
Excel, 100 byte
sumber