/* Configuration */
var QUESTION_ID = 61940; // Obtain this from the url
// It will be like http://XYZ.stackexchange.com/questions/QUESTION_ID/... on any question page
var ANSWER_FILTER = "!t)IWYnsLAZle2tQ3KqrVveCRJfxcRLe";
var COMMENT_FILTER = "!)Q2B_A2kjfAiU78X(md6BoYk";
var OVERRIDE_USER = 43444; // This should be the user ID of the challenge author.
/* App */
var answers = [], answers_hash, answer_ids, answer_page = 1, more_answers = true, comment_page;
function answersUrl(index) {
return "http://api.stackexchange.com/2.2/questions/" + QUESTION_ID + "/answers?page=" + index + "&pagesize=100&order=desc&sort=creation&site=codegolf&filter=" + ANSWER_FILTER;
}
function commentUrl(index, answers) {
return "http://api.stackexchange.com/2.2/answers/" + answers.join(';') + "/comments?page=" + index + "&pagesize=100&order=desc&sort=creation&site=codegolf&filter=" + COMMENT_FILTER;
}
function getAnswers() {
jQuery.ajax({
url: answersUrl(answer_page++),
method: "get",
dataType: "jsonp",
crossDomain: true,
success: function (data) {
answers.push.apply(answers, data.items);
answers_hash = [];
answer_ids = [];
data.items.forEach(function(a) {
a.comments = [];
var id = +a.share_link.match(/\d+/);
answer_ids.push(id);
answers_hash[id] = a;
});
if (!data.has_more) more_answers = false;
comment_page = 1;
getComments();
}
});
}
function getComments() {
jQuery.ajax({
url: commentUrl(comment_page++, answer_ids),
method: "get",
dataType: "jsonp",
crossDomain: true,
success: function (data) {
data.items.forEach(function(c) {
if (c.owner.user_id === OVERRIDE_USER)
answers_hash[c.post_id].comments.push(c);
});
if (data.has_more) getComments();
else if (more_answers) getAnswers();
else process();
}
});
}
getAnswers();
var SCORE_REG = /<h\d>\s*([^\n,<]*(?:<(?:[^\n>]*>[^\n<]*<\/[^\n>]*>)[^\n,<]*)*),.*?(\d+)(?=[^\n\d<>]*(?:<(?:s>[^\n<>]*<\/s>|[^\n<>]+>)[^\n\d<>]*)*<\/h\d>)/;
var OVERRIDE_REG = /^Override\s*header:\s*/i;
function getAuthorName(a) {
return a.owner.display_name;
}
function process() {
var valid = [];
answers.forEach(function(a) {
var body = a.body;
a.comments.forEach(function(c) {
if(OVERRIDE_REG.test(c.body))
body = '<h1>' + c.body.replace(OVERRIDE_REG, '') + '</h1>';
});
var match = body.match(SCORE_REG);
if (match)
valid.push({
user: getAuthorName(a),
size: +match[2],
language: match[1],
link: a.share_link,
});
else console.log(body);
});
valid.sort(function (a, b) {
var aB = a.size,
bB = b.size;
return aB - bB
});
var languages = {};
var place = 1;
var lastSize = null;
var lastPlace = 1;
valid.forEach(function (a) {
if (a.size != lastSize)
lastPlace = place;
lastSize = a.size;
++place;
var answer = jQuery("#answer-template").html();
answer = answer.replace("{{PLACE}}", lastPlace + ".")
.replace("{{NAME}}", a.user)
.replace("{{LANGUAGE}}", a.language)
.replace("{{SIZE}}", a.size)
.replace("{{LINK}}", a.link);
answer = jQuery(answer);
jQuery("#answers").append(answer);
var lang = a.language;
lang = jQuery('<a>'+lang+'</a>').text();
languages[lang] = languages[lang] || {lang: a.language, lang_raw: lang, user: a.user, size: a.size, link: a.link};
});
var langs = [];
for (var lang in languages)
if (languages.hasOwnProperty(lang))
langs.push(languages[lang]);
langs.sort(function (a, b) {
if (a.lang_raw.toLowerCase() > b.lang_raw.toLowerCase()) return 1;
if (a.lang_raw.toLowerCase() < b.lang_raw.toLowerCase()) return -1;
return 0;
});
for (var i = 0; i < langs.length; ++i)
{
var language = jQuery("#language-template").html();
var lang = langs[i];
language = language.replace("{{LANGUAGE}}", lang.lang)
.replace("{{NAME}}", lang.user)
.replace("{{SIZE}}", lang.size)
.replace("{{LINK}}", lang.link);
language = jQuery(language);
jQuery("#languages").append(language);
}
}
body { text-align: left !important}
#answer-list {
padding: 10px;
width: 290px;
float: left;
}
#language-list {
padding: 10px;
width: 290px;
float: left;
}
table thead {
font-weight: bold;
}
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="language-list">
<h2>Shortest Solution 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>
<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>
<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>
Hello, World!
?Jawaban:
Pyth, 19 byte
Cobalah online: Demonstrasi atau Test Suite
Penjelasan
sumber
Python 2.7,
1009896 bytesumber
TeaScript , 24 byte
2628TeaScript adalah JavaScript untuk bermain golf
Cukup singkat
Cobalah online
Penjelasan
sumber
Ruby,
1378782766755 byteTidak disatukan, tetapi Anda dapat melihat polanya.
Sunting: golf hanya ke satu regex.
Sunting 2: memiliki banyak ruang ekstra.
Sunting 3: Berkat manatwork untuk bermain golf 12 byte!
sumber
$><<gets.gsub(/[a-z0-9]/i){[*" 0Aa"[$&.ord/32]..$&]*""}
Python 2,
145140133103102 BytesFungsi anonim yang tidak terlalu ramping menggunakan pemahaman daftar. Saya merasa logikanya harus jauh lebih pendek, saya akan mencoba dan memikirkan sesuatu.
Harus diberi nama untuk digunakan, yaitu
f=...
sumber
Haskell,
95918660 byteContoh penggunaan:
f "pi=3.14159"
->"abcdefghijklmnopabcdefghi=0123.0101234010123450123456789"
Cara kerjanya: salin setiap karakter c dalam string input kecuali jika c berada di antara salah satu dari
A
/Z
,a
/z
atau0
/9
dan jika demikian ambil daftar[<first char in pair> ... <c>]
.Sunting: @Zgarb menyimpan banyak byte. Terima kasih!
sumber
c#_=[c]
dan melewatit
seluruhnya.s
juga berlebihan. Terima kasih banyak!JavaScript (ES6),
143138 byteMenggunakan perbandingan string untuk menguji karakter mana yang akan digunakan.
Demo online. Diuji di Firefox dan Chrome.
Sunting: Disimpan 5 byte dengan menggantinya
a='0123456789abcdefghijklmnopqrstuvwxyz'
dengansumber
PHP, 146 byte
Golf
Revisi 1: menempatkan rentang ord langsung ke foreach. menambahkan batas maksimum ord dan diubah
$d<=$m
menjadi$d<$m
. gunakanfor
untuk beralih karakter bukanforeach
danstr_split
. Dihapus semua{}
dengan memindahkan kode kefor
Tidak disatukan
Penjelasan: pisahkan string menjadi array. Jika nilai ascii jatuh ke dalam rentang (untuk az, AZ, 0-9), lalu tambahkan penghitung dari min rentang ke nilai ascii char, tambahkan setiap nilai hingga Anda mencapai nilai ascii char.
Saya melewati
&$var
sehingga output dilakukan dengan referensi daripada areturn
sumber
foreach
.range()
? pastebin.com/k2tqFEgD$z
dan membuat beberapa perubahan lainnya.range()
mungkin akan lebih baik. Saya mungkin mencoba sesuatu dengan jangkauan nanti.range
, saya dapatkanfunction f($n,&$l){$o=['a'=>'z','A'=>'Z','0'=>'9'];foreach(str_split($n) as $c){$b=0;foreach($o as $m=>$x)!($c>$m&&$c<=$x)?:$b=$l.=implode(range($m,$c));$b?:$l.=$c;}}
, yaitu 166.range()
kurang menguntungkan. Tetapi 166 itu terlalu panjang: $ o untuk array literal sudah kembali, ada ruang tambahan di sekitaras
kata kunci,join()
alias untukimplode()
. (?. Diperiksa kode pastebin saya terhubung sebelumnya Shows kemungkinan lain untuk menyimpan titik akhir rentang) Mengenai solusi 146 karakter Anda, Anda dapat memindahkan tugas ke $ c dalamord()
panggilan:$d=ord($c=$n[$r])
.Python, 143 byte
Cobalah online
sumber
Perl 6, 101 byte
Ini pass pertama untuk itu:
119
Menggunakan
.trans
pada$_
untuk menghapusis copy
.106
Bertindak
@*ARGS
langsung bukan mendefinisikanMAIN
sub.(jika tidak identik dengan contoh sebelumnya)
101
sumber
Scala,
11191 bytesumber
pi=3.14159
. Mungkinkah solusinya adalahval f=(_:String).flatMap(x:String=>if(x.isDigit)('0'to x)else if(x.isUpper)('A'to x)else if(x.isLower)('a'to x)else x.toString)
untuk 128 karakter?Julia,
102989084 byteIni menciptakan fungsi tanpa nama yang menerima string dan mengembalikan string.
Tidak Disatukan:
sumber
PowerShell, 155 Bytes
Secara teknis satu-liner, dan PowerShell adalah semua tentang itu ;-)
Pisahkan input, pipa yang menjadi
ForEach-Object
loop, mengaktifkan nilai integer dari karakter pemain, lalu menghasilkanchar[]
rentang baru yang sesuai. Perhatikan bahwa kita harus menghabiskan byte untuk mengatur variabel temp$b
karena tindakan casting input$_
dalam pernyataan switch berarti kita tidak bisa terus menggunakan$_
atau kita akan mendapatkan output yang funky.EDIT - Saya harus menunjukkan bahwa ini akan membuang kesalahan karena objek pertama yang dimasukkan ke dalam
%{...}
adalah objek nol. Karena STDERR diabaikan secara default , ini seharusnya tidak menjadi masalah. Jika masalah, ubah bit pertama($args-split''-ne''|...
untuk menghilangkan objek nol.sumber
JavaScript (ES6),
340258273271 bytesumber
("")
danf=i=""
dalam for loop. Anda mungkin dapat menyimpan beberapa byte lagi.C (269 bytes)
(jeda baris ditambahkan untuk kejelasan)
Tidak disatukan
sumber
Perl 5 ,
6661(51 Bytes + 1) 52Menggabungkan regex dengan operator bersyarat berhasil dengan baik dalam kasus ini.
Dengan gabunganMenggunakan peta untuk menggabungkan rentang ke dalam array.Uji
Penjelasan
sumber
JavaScript (ES7), 125 byte
Sudah ada dua jawaban JS yang berfokus pada penyandian string, jadi saya memutuskan untuk menggunakan pendekatan yang lebih algoritmik menggunakan
String.fromCharCode()
:Bonus menggunakan metode ini adalah dibutuhkan sejumlah kode char, jadi
join
daftar tidak diperlukan. Ini ternyata lebih pendek dari teknik lainnya, jadi saya senang dengan hasilnya.sumber
MUMPS, 131 byte
Saya berhasil menyimpan beberapa byte yang baik di sini berkat pelingkupan dinamis MUMPS . Berikut adalah versi ungolfed yang kurang lebih setara, yang saya yakin akan senang dengan sintaks, jika hanya dukungan untuk modul Prettify MUMPS yang tersedia .
sumber
Perl 6,
7877 bytesumber
'a'..'z'
dan'A'..'Z'
kasus, saya harus berusaha lebih keras.<!-- language-all: lang-perl6 -->
setelah itu## Perl 6
sehingga akan menyorot dengan benar. (Perubahan sudah tertunda pada jawaban ini){[~](0..$/)}
ke{[~] 0..$/}
yang akan menghemat satu byte.Mathematica, 102 byte
Baiklah...
sumber
CJam,
3231 byteCobalah online di juru bahasa CJam .
Bagaimana itu bekerja
sumber
Python 2,
135117 bytesumber
PHP - 291 byte
Lewati string ke
GET["s"]
.sumber
C #,
251201184157154 Bytessunting: Strike! Lebih pendek dari PowerShell;)
sumber
string[]i
?