/* 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
ist ein offizieller Name :)False
"?Antworten:
Pyth,
161312 BytesVielen Dank an @Thomas Kwa, der mich an den Titel erinnert hat.
Test Suite .
quelle
Retina, 13 Bytes
Versuchen Sie es online | Testsuite (Die Ausgabe
0
bedeutet, dass keine der Zeichenfolgen übereinstimmt, was erwartet wird.)Wenn Retina nur mit einer einzigen Codezeile versehen ist, gibt es die
1
Häufigkeit aus, mit der der Ausdruck mit der Eingabezeichenfolge übereinstimmt, sodass er (wahr) ausgegeben wird, wenn er übereinstimmt und daher ein offizieller Name ist, und0
(falsch), wenn er nicht übereinstimmt.Nervenzusammenbruch
quelle
TeaScript, 12 Bytes
Missbraucht die
O
Funktion.Versuchen Sie dies online
Test Suite
Erläuterung
Die
O
Funktion macht dies:Dann prüft die O-Funktion, ob der reguläre Ausdruck übereinstimmt
x
.Alternativ kann eine nicht konkurrierende TeaScript 3-Antwort mit 7 Bytes erfolgen :
quelle
isChar
Funktion verwendet, die Sie hinzugefügt haben. Aber vielleicht möchten Sie es denjenigen, die nicht Bescheid wissen, genauer erklären.JavaScript (ES6), 26
Von: Edcsixtyfive
quelle
n=>n.match`^[A-Z][a-z]+$`
/./.test.bind(/^[A-Z][a-z]+$/)
Python,
59-58BytesIch bin mir sicher, dass es keinen wirklichen Weg gibt, die Retina-Version zu schlagen, da dies im Grunde genommen genau das in Python ist. Aber ich denke das ist meine erste Vorlage;)
Es ist ein sehr seltsamer Wahrheitswert:
(Und es erfordert
""
um Zeichenfolgen mit Leerzeichen, wenn über die Shell übergeben)quelle
^
wird nicht benötigt, dare.match()
nur Übereinstimmungen am Anfang der Zeichenfolge vorhanden sind.lambda s:re.match('[A-Z][a-z]+$',s) import re
Java, 53 Bytes
quelle
s->s.matches("[A-Z][a-z]+")
Python,
50454341 BytesGibt zurück,
True
ob es ein offizieller Name ist oderFalse
nicht.quelle
f=
berücksichtigen müssen und sparen zwei Bytes. Außerdem(len(s)>1)
spart 5 Byte übers[1:].islower()
. :)BotEngine ,
20318029 x 6 = 174Ich sollte wirklich Builtins hinzufügen, um Groß- und Kleinbuchstaben zu identifizieren. Das wäre viel prägnanter, als jeden Brief einzeln zu prüfen.
Grobe Übersetzung:
quelle
C,
129122121111 BytesProbieren Sie es online
quelle
VB6, 48 Bytes
quelle
MATL , 18 Bytes
Die aktuelle Version ( 4.0.0 ) der Sprache wird verwendet.
Dies gilt für den gleichen regulären Ausdruck wie für die Antwort von NinjaBearMonkey :
Die Ausgabe ist die Zeichenfolge (die wahr ist ), wenn es ein offizieller Name ist, und nichts (was falsch ist ), wenn es nicht ist.
Beispiele
quelle
Haskell, 61 Bytes
quelle
Gema, 17 Zeichen
Probelauf:
quelle
Ruby, 28 Bytes
-2 Bytes (dank Handarbeit)
quelle
p
Tipps unter Tipps zum Golfen in Ruby .p !!gets[/^[A-Z][a-z]+$/]
IA-32 Maschinencode, 19 Bytes
Eine Funktion, die den Zeiger auf eine nullterminierende Zeichenfolge in empfängt
ecx
und 0 oder 1 ineax
(gemäß derfastcall
Konvention) zurückgibt .Hexdump des Codes:
In Assemblersprache:
Das fünfte Bit des ersten Bytes des Eingabenamens wird umgedreht (
xor
mit32
), um es von Groß- und Kleinschreibung in Kleinschreibung umzuwandeln. Dies lädt 32eax
mit 3 Byte Code:So überprüfen Sie, ob das Byte ein kleiner Buchstabe ist:
Wenn nicht, fällt dieser Code durch. Um in diesem Fall 0 zurückzugeben, wird 0 eingegeben,
al
bevor der bedingte Sprung ausgeführt wird:Die 0 in
al
dient auch als XOR-Maske (oder Abwesenheit davon) für die folgenden Bytes des Eingabenamens.Ein erfolgreicher Exit ist, wenn er auf ein Null-Byte stößt, das nach dem
xor
folgenden Wert Null bleibt :Es wird davon ausgegangen, dass der Eingabename nicht leer ist. Ich denke, es ist eine vernünftige Annahme über einen Namen (keine willkürliche Zeichenfolge)!
quelle
grep
16 BytesDas ist das Muster:
Wenn Sie die Schalter
-E
und-x
und verwenden, werden die übereinstimmenden Eingabezeilen gezählt. Wenn Sie also eine Zeile eingeben, erhalten Sie eine 1 oder eine 0. Ich denke, so funktioniert dieser Ort.-c
grep
Das Muster ist 11 Zeichen, die gesamte Befehlszeile ist 23. Ich habe gesehen, dass Leute
sed
Skripte ohne den Befehl verwenden, also weiß ich nicht, was was ist. Aber es liest stdin, und so können Sie es einfach eingeben. Hier istecho
:quelle
grep -Exc
damit Sie nicht so viele Bytes für die Schalter zählen müssen.Mathematica 10.1, 46 Bytes
Verwendet ein Byte weniger als die Standard-Regex-Lösung. Es werden drei Prüfungen durchgeführt.
LetterQ@#
Stellt sicher, dass die Zeichenfolge vollständig aus Buchstaben besteht, und macht Zeichenfolgen mit nur einem BuchstabenStringLength@#>1
ungültig.#==ToCamelCase@#
macht aber weniger sinn.ToCamelCase
ist eine undokumentierte Funktion, die ich gefunden habe und die eine Eingabezeichenfolge AndOutputsItLikeThis annimmt. Da es nur ein Wort gibt, wird der erste Buchstabe in Großbuchstaben geschrieben. Wir prüfen daher, ob die Zeichenfolge mit dieser übereinstimmt.quelle
ToCamelCase
neu in 10.3? Scheint in 10.2 nicht zu funktionieren.ToCamelCase["foo bar baz"]
?ToCamelCase[foo bar baz]
). Seltsam! Vielleicht kann jemand 10.3 überprüfen?Bash / Zsh / Ksh, 25 Bytes
Um dies tatsächlich zu verwenden, erstellen Sie eine Datei mit dieser als einziger Zeile und machen Sie die Datei ausführbar. ausführbare Dateien, die nicht als bekannter Binärtyp erkannt wurden, werden (
/bin/sh
insbesondere) als Shell-Skripte behandelt .quelle
bash
,ksh
undzsh
, hat aber keine Chance auf Arbeit in Standard - POSIXsh
oder kompatibeldash
undyash
. Um Verwirrung zu vermeiden, schlage ich vor, den Titel der Antwort zu ändern.printf
anstelle vonecho
, um die Datei zu erstellen, und Sie erhalten 25 Bytes.C # 4, 89 Bytes
Mein erster Versuch bei Code Golf. Hier kommt es:
Sehen Sie es in Aktion bei Dot Net Fiddle .
quelle
bool o(string i)=>System.Text.RegularExpressions.Regex.IsMatch(i,"^[A-Z][a-z]+$");
Java, 28 Bytes
Verwendet Regex, um sicherzustellen, dass die Zeichenfolge aus einem Großbuchstaben und mindestens einem Kleinbuchstaben besteht.
-1 Bytes dank Benjamin Urquhart
quelle
k4, 39 Bytes
Das erste Zeichen ist höher, alle anderen sind niedriger und zählen mehr als eins.
Z.B:
quelle
Im Ernst, 16 Bytes
Hex Dump:
Probieren Sie es online
Im Ernst, es gibt noch keine Unterstützung für Regex. Das Beste, was wir tun können, ist:
quelle
Ocaml,
231216197166 BytesAnwendungsbeispiel:
Ungolfed (mit echten Funktionsnamen):
quelle
if … then 0 else
durch ersetzen… ||
. Und was das betrifft von Booleschen Operatoren stattmatch
und Bereiche, zBn.[0]>'@'&n.[0]<'['&e(l-1)
SpecBAS - 39 Bytes
SpecBAS behandelt reguläre Ausdrücke über den
MATCH
Befehl. Die Ausgabe ist 0 für false und 1 für true.quelle
Swift 2, 116 Bytes
Regex ist in Swift so ausführlich, dass dies viel kürzer ist
Dies gibt
0
oder-1
(falls keine Eingabe erfolgt) für nicht offizielle Namen und eine Nummer zurück> 0
(die der Länge der Zeichenfolge entspricht - 1) zurück, wenn der Name offiziell istUngolfed
quelle
C #, 188 Bytes
Reguläre Ausdrücke wären der richtige Weg gewesen, dies in Angriff zu nehmen, aber hier ist ein Versuch ohne sie.
Langschrift
Würde gerne Ratschläge dazu erhalten, wie der Kleinbuchstaben-Check kürzer gemacht werden kann, vielleicht ohne die Schleife. Ich habe gerade angefangen, die Sprache zu lernen, und habe dies als Übung verwendet. Ich dachte, ich würde trotzdem mein Ergebnis teilen.
quelle
Perl 5
-p
, 18 BytesProbieren Sie es online!
quelle
PowerShell , 29 Byte
Probieren Sie es online!
Hat derselbe Regex-Trick, den alle anderen verwenden. Muss
c
ase-sensitive verwendenmatch
, um es auf Kosten eines Bytes richtig zu machen.quelle
Japt , 9 Bytes
Rückgabe
1
oder0
.Versuch es
quelle
Perl 6 , 17 Bytes
Gibt ein
Match
Objekt zurück, wenn dies ein offizieller Name istNil
.Probieren Sie es online!
quelle
m