/* Configuration */
var QUESTION_ID = 59464; // 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>
Jawaban:
Skrip Vim,
2221 bytePenjelasan:
Peta perintah pertama
Q
ke:vEU
buat kata besarW
pergi ke kata berikutnyavEu
buat kata kecilW
pergi ke kata berikutnyaQ
ulangi pemetaan rekursifdan
|norm Q
menjalankan pemetaanPenggunaan program
Ini adalah bagaimana Anda membuat Vim membaca dari stdin:
Ini akan membuka Vim yang menampilkan ini:
sumber
GNU sed, 28
Skor termasuk +2 untuk
-rz
diteruskan ke GNU sed.Uji keluaran
sumber
Perl, 26 byte
25 byte kode + 1 byte baris perintah
Terima kasih untuk ThisSuitIsBlackNot untuk memperbaiki beberapa bug!
Pemakaian:
sumber
Pyth, 23
Cobalah online atau jalankan test suite
Bergantian antara pyth's
lower
danupper
fungsi, yangr...0
ataur...1
. Ini mungkin akan mempengaruhi karakter unicode, menunggu klarifikasi OP berubah.Saya merasa sesuatu harus golf. Khususnya XOR untuk mengubah saklar yang mana dari
upper
/lower
harus digunakan.sumber
A\nB
harus dicetakA\nb
.A new word is formed when there is a nonzero amount of whitespace after a non-whitespace character.
Output untukA\nB
isA\NB
. Tapi sepertinya jawaban CJAM Anda sudah benar.Perl, 87 byte
Setelah bermain-main dengan ekspresi reguler dan
map
untuk sementara waktu, saya tidak dapat menemukan solusi yang elegan, jadi inilah hasilnya:sumber
lc(<>)
, bisalc<>
dan menggunakan pengubah pernyataan untuk Andawhile
memungkinkan Anda untuk melewati tanda kurung juga misalnya.print$i++while$i<10
vs.while($i<10){print$i++}
. Ada halaman yang berguna yang banyak membantu saya Tip untuk Golf di PerlRuby, 56 byte
sumber
JavaScript ES6,
7471 byte.toUpperCase()
dan.toLowerCase()
benar - benar memotong jumlah byte (menambahkan 32 byte 0.o). Sebagian besar work-around berakhir dengan lebih banyak bytesumber
Groovy,
108125120Tidak sebersih yang kuharapkan, yang tampaknya menjadi tema dengan jawaban Groovy-ku.
sumber
Lua, 96 byte
sumber
Python 3,
10395 bytesumber
[b.upper(),b.lower()][a%2]
untuk menyimpan 4 byte (dengan anggapan saya menghitung dengan benar di ponsel).STATA, 252 byte
Mengharapkan input sebagai file csv (satu kolom) yang disebut ab
Penjelasan:
Baca data dalam (nama variabel default adalah v1, dapat disingkat menjadi v). Buat variabel baru b sama dengan kata pertama (token dipisahkan spasi) dari v untuk setiap baris. Untuk setiap baris, sementara kata berikutnya tidak kosong (hanya terjadi jika tidak ada karakter pada baris itu), ganti kata dalam v dengan versi huruf besar atau kecil dari kata itu di baris saat ini, tergantung pada berapa banyak (mod 2 ) kata-kata telah ditemukan. Kemudian dapatkan kata berikutnya dan ulangi. Cetak seluruh baris setelah selesai.
sumber
Delphi, 290 byte
Bukan bahasa yang baik untuk bermain golf dengan ...
sumber
Lua, 88 byte
sumber
CJam, 28 byte
Saat ini saya sedang mempertimbangkan 33 karakter ASCII / Unicode pertama (dan hanya itu) spasi putih. Saya sedang menunggu klarifikasi untuk mengetahui apakah ini valid atau tidak.
Cobalah online di juru bahasa CJam .
sumber
Pyth,
1722 byteCoba di sini
sumber
C #,
10410099 byteIni 79 byte dengan
sumber