/* Configuration */
var QUESTION_ID = 97049; // Obtain this from the url
// It will be like https://XYZ.stackexchange.com/questions/QUESTION_ID/... on any question page
var ANSWER_FILTER = "!t)IWYnsLAZle2tQ3KqrVveCRJfxcRLe";
var COMMENT_FILTER = "!)Q2B_A2kjfAiU78X(md6BoYk";
var OVERRIDE_USER = 53406; // 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 "https://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 "https://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,]*[^\s,]),.*?(\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,
});
});
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;
if (/<a/.test(lang)) lang = jQuery(lang).text();
languages[lang] = languages[lang] || {lang: a.language, 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 > b.lang) return 1;
if (a.lang < b.lang) 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="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>
Jawaban:
05AB1E , 16 byte
Menggunakan pengodean CP-1252 .
Cobalah online!
Penjelasan
sumber
[0 ... 23]
atau[0, 24)
bukannya[0 ... 24]
atau[0, 24]
?Ruby, 56 byte
Program lengkap. Saya tidak berpikir fungsi / lambda jawaban akan lebih pendek dari ini untuk bahasa ini.
Dangit, sigma
ς
. Inilah mengapa kita tidak bisa memiliki hal-hal yang baik. Dan Anda juga, (karakter tidak dapat diberikan yang berfungsi sebagai pengganti untuk "huruf besar"ς
)sumber
JavaScript (ES6),
898381 byteJika array karakter dapat diterima, maka untuk
828078 byte:Sunting: Menyimpan banyak byte berkat @ETHproductions.
sumber
String.fromCharCode(...array)
lebih singkat lagi:(...a)=>String.fromCharCode(...[...Array(24)].map((_,i)=>i+(i>16)+913+32*!!a.length))
String.fromCharCode
lantai, Anda dapat menyimpan dua byte seperti:(...a)=>String.fromCharCode(...[...Array(24)].map((_,i)=>i*1.06+913+32*!!a.length))
String.fromCharCode(...)
tapi saya sukai*1.06
trik itu! Sedihnya pemahaman adalah byte lebih lama kali ini sejauh yang saya tahu.(...a)=>String.fromCharCode(...[for(_ of Array(i=24))i++*42/41+889+32*!!a.length])
(82).!!
, karena hanya akan ada nol atau satu argumen.Haskell,
114108 byteTerima kasih kepada @xnor karena telah menghemat 6 byte
Ini mungkin menang dalam kategori impor terlama jika tidak ada yang lain ...
sumber
q[a,b]=[a..b]
untuk digunakan 4 kali.getArgs>>=putStr.f
lebih pendek.CJam , 16 byte
Cobalah online!
sumber
Pyke,
552120 byteCoba di sini!
sumber
Sebenarnya , 62 byte
Cobalah online!
Karena beberapa alfabet Yunani huruf besar tidak ada dalam CP437, solusi ini dikodekan dalam UTF-8 dan diberi skor yang sesuai. Berikut ini adalah hexdump (dapat dibalik dengan
xxd -r
):Penjelasan:
sumber
Python 3,
807776 byteVersi lama:
Versi yang lebih lama:
sumber
[a,a.lower()][len(sys.argv)-1]
karena komentar menyatakan bahwa hanya akan ada satu argumen.[a.lower(),a][-len(sys.argv)]
.R,
1049992 byteBermain golf pada versi kedua yang saya miliki sebelumnya. Bekerja dengan cara yang sama seperti versi sebelumnya.
Terima kasih kepada @JDL untuk mencukur 7 byte!
Versi lama pada 104 byte:
Saya punya dua solusi berbeda dengan jumlah byte yang sama:
Atau:
Penjelasan:
Pemakaian:
Untuk beberapa alasan, itu tidak berfungsi pada R-Fiddle (itu berubah
"
menjadi'
secara default yang membuat kode melemparkan kesalahan) tetapi Anda dapat mencobanya di Ideone .sumber
+'if'(missing(x),0,32)
dengan+32*!missing(x)
?Japt ,
2119 byteUji (tanpa input)
Uji (input string kosong)
Penjelasan
sumber
Scala, 82 byte
Tidak Disatukan:
Sayangnya,
(('Α'to'Ρ')++('Σ'to'Ω'))
adalahVector[Char]
, yang akan dicetak sebagaiVector('Α', 'Β', ...
, sehingga harus dikonversi ke string denganmkString
. Argumen kemap
dipanggil&
untuk menghemat ruang antara&else
,else&
dan& toLower
.sumber
Jelly , 21 byte
Program lengkap
TryItOnline! - note sekali dijalankan dengan argumen, refresh akan diperlukan untuk berjalan tanpa argumen.
Bagaimana?
sumber
PowerShell v2 +, 68 byte
Hanya ASCII, tetapi output dalam UTF-16. Membangun
char
-array karakter yang sesuai,-join
s bersama-sama menjadi string, menyimpannya ke dalam$a
. Kemudian, gunakan!$args.count
sebagai indeks ke dalam tuple, untuk menampilkan$a
apakah tidak ada argumen, atau$a.ToLower()
jika ada setidaknya satu argumen.sumber
PHP, 84 Bytes
Versi Online
PHP, 87 Bytes
sumber
$argc>1
8 byte lebih pendek dariisset($argv[1])
dan tidak perlu kosong.APL (Dyalog Extended) , 26 byte
Cara normal untuk menyampaikan beberapa argumen ke program APL adalah melalui daftar. Jadi program ini meminta daftar seperti itu, yang mungkin memiliki 0 atau 1 argumen.
Cobalah online!
⎕
meminta daftar argumen≢
menghitung jumlah argumen (0 atau 1)~
negate that (1 atau 0)'Ω'×
"gandakan" Omega dengan itu (1 membuat huruf besar, 0 lipat ke huruf kecil)⍳
Semua karakter dariΑ
-Ω
atauα
-ω
masing - masing'ς'~⍨
hapus sigma terakhir huruf kecil dan "huruf besar"sumber
Python 2, 108 byte
Sangat golf, mungkin :(
Dan tidak, saya tidak bisa menggunakan
A.lower()
.Berkat 13285 (alexwlchan) untuk -11 byte.
sumber
A,a
, dan hanya menggunakan string itu secara langsung diprint
.Mathematica, 91 byte
Naskah. Hanya mengambil rentang karakter dari
Α
hinggaΩ
, menghilangkan U + 03A2 /ς
, baik dikonversi ke huruf kecil atau tidak, dan dicetak.sumber
Perl, 39 + 3 (
-C2
bendera) =4442 bytesumber
JavaScript, 95 byte
95 byte, tetapi hanya 71 karakter. Penghitung byte . Menggunakan cara @Neil untuk menentukan apakah argumen dilewatkan.
sumber
Java 7, 176 byte
Java 8, 173 byte
sumber
Python 3, 80 byte
sumber
C #, 174 byte
Implementasi malas, mungkin bisa banyak golf
sumber
PHP, 79 byte
menghasilkan entitas html unicode dan menerjemahkannya. Jalankan dengan
-r
.sumber
Pip ,
2120 byteIni adalah hari yang tak terlupakan. Pip telah
mengikatJelly yang sudah dikalahkan! 11 Dan kalah dari dua golf lainnya, tapi apa pun itu.
Cobalah online!
Penjelasan
sumber
tcl, 73
demo
sumber
Retina , 55 byte
Cobalah online
sumber
Braingolf , 24 byte
Cobalah online!
Penjelasan:
sumber
PowerShell , 81 byte
Cobalah online!
sumber
Script Groovy,
5451 byteEdit
Beralih dari
913..937
danit==930?:
ke(913..937)-930
sumber
Perl di bawah Windows - konsol tidak memiliki dukungan Unicode - (42 byte, termasuk spasi)
Ini bukan solusi saya, saya hanya mengadaptasi solusi Perl dari Denis Ibaev di atas, ke konsol Windows Perl.
Kode halaman konsol tentunya harus dalam bahasa Yunani:
CATATAN: Hanya ide kecil. Pada halaman ini saya dapat melihat bahwa beberapa jawaban menggunakan KARAKTER yang tampaknya Unicode di atas 255. Oleh karena itu karakter-karakter tersebut membutuhkan setidaknya 2 byte untuk kode (mungkin 4 jika seseorang menggunakan konsol menggunakan 32bits Unicode chars?). Bukankah lebih baik jika ukuran kontes adalah unit CHARACTER (menjadi Unicode atau ASCII atau EBCDIC ou apa pun) daripada hanya BYTES? Bukankah lebih sederhana dan lebih menyatukan (bertanya-tanya apakah kata sifat ini ada dalam bahasa Inggris, "unificateur" dalam bahasa Prancis)?
Kode sebelumnya salah: Tidak mencetak omega huruf kecil.
Kode yang diperbaiki (70 karakter):
Saya tahu kita tidak seharusnya mencetak 'end-of-word' bentuk sigma ('ς') tetapi karena itu adalah kesalahan ejaan dalam bahasa Yunani kuno untuk menggunakan sigma biasa ('σ') di akhir kata huruf kecil, Saya memilih untuk mencetaknya, karena judul puzzle ini adalah "Cetak alfabet Yunani" dan bahwa karakter ini adalah bagian darinya ...
sumber