/* Configuration */
var QUESTION_ID = 67554; // 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 = 34388; // 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>
Lololololololololololol
adalah nama resmi :)False
"?Jawaban:
Pyth,
161312 byteTerima kasih kepada @Thomas Kwa untuk mengingatkan saya tentang titlecase.
Test Suite .
sumber
Retina, 13 byte
Cobalah online | Test suite (Output
0
berarti tidak ada string yang cocok, yang diharapkan)Ketika Retina hanya disediakan dengan satu baris kode, itu menghasilkan berapa kali ekspresi cocok dengan string input, sehingga akan menghasilkan
1
(kebenaran) jika cocok dan karenanya adalah nama resmi dan0
(falsy) jika tidak.Kerusakan
sumber
TeaScript, 12 byte
Menyalahgunakan
O
fungsi.Coba ini secara online
Test Suite
Penjelasan
The
O
fungsi membuat ini:Kemudian, fungsi O memeriksa apakah regex cocok
x
.Atau, jawaban TeaScript 3 yang tidak bersaing pada 7 byte :
sumber
isChar
fungsi yang Anda tambahkan. Tetapi Anda mungkin ingin menjelaskan secara lebih rinci bagi mereka yang tidak tahu.JavaScript (ES6), 26
Oleh: Edcsixtyfive
sumber
n=>n.match`^[A-Z][a-z]+$`
/./.test.bind(/^[A-Z][a-z]+$/)
Python,
5958 byteSaya yakin tidak ada cara nyata untuk mengalahkan versi Retina, karena ini pada dasarnya hanya itu di dalam Python. Tapi saya pikir ini adalah pengiriman pertama saya;)
Ini adalah nilai kebenaran yang sangat aneh :
(Dan itu membutuhkan
""
sekitar string dengan spasi di dalamnya, jika dilewatkan melalui shell)sumber
^
tidak diperlukan karenare.match()
hanya cocok pada awal string.lambda s:re.match('[A-Z][a-z]+$',s) import re
Java, 53 byte
sumber
s->s.matches("[A-Z][a-z]+")
Python,
50454341 byteMengembalikan
True
jika itu nama resmi atauFalse
jika tidak.sumber
f=
memperhitungkannya, menghemat dua byte. Juga,(len(s)>1)
menghemat 5 byte lebihs[1:].islower()
. :)BotEngine ,
20318029x6 = 174Saya benar-benar harus menambahkan builtin untuk mengidentifikasi huruf besar dan kecil. Itu akan jauh lebih ringkas daripada memeriksa setiap huruf secara individual.
Terjemahan kasar:
sumber
C,
129122121111 byteCobalah secara Online
sumber
VB6, 48 byte
sumber
MATL , 18 byte
Versi bahasa saat ini ( 4.0.0 ) digunakan.
Ini berlaku persamaan reguler yang sama dengan jawaban NinjaBearMonkey :
Outputnya adalah string (yang benar ) jika itu nama resmi, dan tidak ada (yang salah ) jika tidak.
Contohnya
sumber
Haskell, 61 byte
sumber
Gema, 17 karakter
Contoh dijalankan:
sumber
Ruby, 28 byte
-2 byte (terima kasih kepada manatwork)
sumber
p
kiat terkait di Tips untuk bermain golf di Ruby .p !!gets[/^[A-Z][a-z]+$/]
Kode mesin IA-32, 19 byte
Fungsi yang menerima pointer ke string null-terminating
ecx
dan mengembalikan 0 atau 1 ineax
(sesuai denganfastcall
konvensi).Hexdump kode:
Dalam bahasa assembly:
Byte pertama dari nama input memiliki bit ke-5 terbalik (
xor
dengan32
) untuk mengubahnya dari huruf kapital menjadi huruf kecil. Ini memuat 32 ke dalameax
, menggunakan 3 byte kode:Untuk memeriksa apakah byte adalah huruf kecil:
Jika tidak, kode ini akan gagal. Untuk mengembalikan 0 dalam kasus ini, ia menempatkan 0
al
sebelum melakukan lompatan bersyarat:0 in
al
juga berfungsi sebagai xor-mask (atau tidak ada) untuk byte berikut dari nama input.Keluar yang berhasil adalah ketika bertemu dengan nol byte, yang tetap nol setelah
xor
:Diasumsikan bahwa nama input tidak kosong. Saya kira itu asumsi yang masuk akal tentang sebuah nama (bukan string yang arbitrer)!
sumber
grep
, 16 byteInilah polanya:
Jika Anda menggunakan
-E
dan-x
dan-c
switchgrep
akan mencetak hitungan garis input yang cocok. Jadi, jika Anda memberikannya satu baris, Anda mendapat 1 atau 0. Saya pikir itulah cara tempat ini bekerja.Polanya adalah 11 karakter, seluruh baris perintah adalah 23. Saya telah melihat orang menggunakan
sed
skrip tanpa perintah jadi saya tidak tahu apa itu apa. Tapi, itu berbunyi stdin, dan kamu bisa mengetiknya saja. Inilahecho
:sumber
grep -Exc
sehingga Anda tidak perlu menghitung banyak byte untuk switch.Mathematica 10.1, 46 byte
Menggunakan satu byte lebih sedikit daripada solusi regex standar. Itu melakukan tiga pemeriksaan.
LetterQ@#
memastikan bahwa string seluruhnya terdiri dari huruf, danStringLength@#>1
membatalkan string huruf tunggal.#==ToCamelCase@#
namun kurang masuk akal.ToCamelCase
adalah fungsi tidak berdokumen yang saya temukan yang mengambil string input AndOutputsItLikeThis. Karena hanya ada satu kata, itu akan menjadi huruf besar untuk huruf pertama, jadi kami memeriksa apakah stringnya sama dengan itu.sumber
ToCamelCase
baru dalam 10.3? Tampaknya tidak berfungsi di 10.2.ToCamelCase["foo bar baz"]
?ToCamelCase[foo bar baz]
). Aneh! Mungkin seseorang bisa memeriksa 10.3?bash / zsh / ksh, 25 byte
Untuk benar-benar menggunakan ini, buat file dengan itu sebagai satu-satunya baris dan buat file tersebut dapat dieksekusi; file yang dapat dieksekusi yang tidak dikenali sebagai tipe biner yang dikenal diperlakukan sebagai skrip shell (
/bin/sh
khusus).sumber
bash
,ksh
danzsh
, tetapi tidak memiliki kesempatan untuk bekerja di POSIX standarsh
atau yang kompatibeldash
danyash
. Untuk menghindari kebingungan, saya sarankan untuk mengubah judul jawaban.printf
alih-alihecho
untuk membuat file dan Anda akan mendapatkan 25 byte.C # 4, 89 byte
Upaya pertama saya di Code Golf. Ini dia:
Lihat beraksi di Dot Net Fiddle .
sumber
bool o(string i)=>System.Text.RegularExpressions.Regex.IsMatch(i,"^[A-Z][a-z]+$");
Java, 28 byte
Gunakan regex untuk memastikan string terdiri dari karakter huruf besar diikuti oleh setidaknya satu karakter huruf kecil.
-1 byte, terima kasih kepada Benjamin Urquhart
sumber
k4, 39 byte
Char pertama di atas, yang lainnya lebih rendah, lebih besar dari satu
Misalnya:
sumber
Serius, 16 byte
Hex Dump:
Cobalah secara Online
Serius belum memiliki dukungan regex, jadi yang terbaik yang bisa kita lakukan adalah:
sumber
Ocaml,
231216197166 byteContoh penggunaan:
Tidak digabungkan (dengan nama fungsi sebenarnya):
sumber
if … then 0 else
dengan… ||
. Dan dalam hal ini dengan menggunakan operator boolean alih-alihmatch
dan berkisar, misalnyan.[0]>'@'&n.[0]<'['&e(l-1)
SpecBAS - 39 byte
SpecBAS menangani ekspresi reguler melalui
MATCH
perintah. Output adalah 0 untuk false dan 1 jika benar.sumber
Swift 2, 116 byte
Regex begitu verbose di Swift sehingga melakukan ini jauh lebih pendek
Ini akan mengembalikan
0
atau-1
(jika tidak ada input) untuk nama yang tidak resmi, dan angka> 0
(yang sama dengan panjang string - 1) jika nama tersebut resmiTidak disatukan
sumber
C #, 188 byte
Ekspresi reguler akan menjadi cara yang tepat untuk mengatasi ini, tetapi inilah upaya tanpa itu.
Tulisan tangan
Senang saran tentang cara membuat cek huruf kecil lebih pendek, mungkin tanpa loop. Saya baru mulai belajar bahasa, dan menggunakan ini sebagai latihan, berpikir saya akan tetap membagikan hasil saya.
sumber
Perl 5
-p
, 18 byteCobalah online!
sumber
PowerShell , 29 byte
Cobalah online!
Apakah trik regex yang sama digunakan semua orang. Harus menggunakan
c
ase-sensitifmatch
untuk melakukannya dengan benar dengan biaya satu byte.sumber
Japt , 9 byte
Pengembalian
1
atau0
.Cobalah
sumber
Perl 6 , 17 byte
Mengembalikan
Match
objek jika ini adalah nama resmi danNil
sebaliknya.Cobalah online!
sumber
m