/* 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
est un nom officiel :)False
"?Réponses:
Pyth,
161312 octetsMerci à @Thomas Kwa de m'avoir rappelé Titlecase.
Suite de tests .
la source
Rétine, 13 octets
Essayez-le en ligne | Suite de tests (La sortie
0
signifie qu'aucune des chaînes ne correspond, ce qui est attendu.)Lorsque Retina n'est fourni qu'avec une seule ligne de code, il renvoie le nombre de fois où l'expression correspond à la chaîne d'entrée, donc il sortira
1
(véridique) s'il correspond et est donc un nom officiel et0
(faux) si ce n'est pas le cas.Panne
la source
TeaScript, 12 octets
Abuse la
O
fonction.Essayez ceci en ligne
Suite de tests
Explication
La
O
fonction fait ceci:Ensuite, la fonction O vérifie si l'expression régulière correspond
x
.Alternativement, une réponse TeaScript 3 non concurrente à 7 octets :
la source
isChar
fonction que vous avez ajoutée. Mais vous voudrez peut-être expliquer plus en détail pour ceux qui ne sont pas au courant.JavaScript (ES6), 26
Par: Edcsixtyfive
la source
n=>n.match`^[A-Z][a-z]+$`
/./.test.bind(/^[A-Z][a-z]+$/)
Python,
5958 octetsJe suis sûr qu'il n'y a pas de véritable moyen de battre la version Retina, car il s'agit essentiellement de cela dans Python. Mais je pense que c'est ma première soumission;)
C'est une valeur véridique très étrange :
(Et cela nécessite
""
autour de chaînes avec des espaces, s'il est passé via le shell)la source
^
n'est pas nécessaire carre.match()
ne correspond qu'au début de la chaîne.lambda s:re.match('[A-Z][a-z]+$',s) import re
Java, 53 octets
la source
s->s.matches("[A-Z][a-z]+")
Python,
50454341 octetsRenvoie
True
s'il s'agit d'un nom officiel ouFalse
s'il ne l'est pas.la source
f=
en compte, en économisant deux octets. En outre,(len(s)>1)
enregistre 5 octets de pluss[1:].islower()
. :)BotEngine ,
20318029x6 = 174Je devrais vraiment ajouter des fonctions intégrées pour identifier les lettres majuscules et minuscules. Ce serait beaucoup plus concis que de vérifier chaque lettre individuellement.
Traduction approximative:
la source
C,
129122121 121111 octetsEssayez-le en ligne
la source
VB6, 48 octets
la source
MATL , 18 octets
La version actuelle ( 4.0.0 ) de la langue est utilisée.
Cela applique la même expression régulière que la réponse de NinjaBearMonkey :
La sortie est la chaîne (qui est véridique ) si c'est un nom officiel, et rien (qui est faux ) si ce n'est pas le cas.
Exemples
la source
Haskell, 61 octets
la source
Gema, 17 personnages
Exemple d'exécution:
la source
Rubis, 28 octets
-2 octets (grâce au manatwork)
la source
p
conseils liés à Conseils pour jouer au golf dans Ruby .p !!gets[/^[A-Z][a-z]+$/]
Code machine IA-32, 19 octets
Une fonction qui reçoit le pointeur vers une chaîne se terminant par null
ecx
et renvoie 0 ou 1 danseax
(selon lafastcall
convention).Hexdump du code:
En langage assembleur:
Le premier octet du nom d'entrée a son 5ème bit inversé (
xor
avec32
) pour le convertir de la casse majuscule en petite casse. Cela charge 32 danseax
, en utilisant 3 octets de code:Pour vérifier si l'octet est une petite lettre:
Sinon, ce code échoue. Pour retourner 0 dans ce cas, il met 0
al
avant de faire le saut conditionnel:Le 0 dans
al
sert également de masque xor (ou d'absence) pour les octets suivants du nom d'entrée.Une sortie réussie se produit lorsqu'elle rencontre un octet zéro, qui reste nul après
xor
:Il suppose que le nom d'entrée n'est pas vide. Je suppose que c'est une hypothèse raisonnable sur un nom (pas une chaîne arbitraire)!
la source
grep
, 16 octetsVoici le schéma:
Si vous utilisez les commutateurs
-E
et-x
et imprimera un nombre de lignes d'entrée correspondantes. Donc, si vous lui donnez une ligne, vous obtenez un 1 ou un 0. Je pense que c'est ainsi que fonctionne cet endroit.-c
grep
Le modèle est de 11 caractères, toute la ligne de commande est de 23. J'ai vu des gens utiliser des
sed
scripts sans la commande, donc je ne sais pas quoi. Mais, il lit stdin, et vous pouvez donc simplement taper dessus. Voiciecho
:la source
grep -Exc
afin que vous n'ayez pas besoin de compter autant d'octets pour les commutateurs.Mathematica 10.1, 46 octets
Utilise un octet de moins que la solution d'expression régulière standard. Il fait trois vérifications.
LetterQ@#
garantit que la chaîne est entièrement composée de lettres etStringLength@#>1
invalide les chaînes d'une seule lettre.#==ToCamelCase@#
est cependant moins logique.ToCamelCase
est une fonction non documentée que j'ai trouvée qui prend une chaîne d'entrée AndOutputsItLikeThis. Puisqu'il n'y a qu'un seul mot, il mettra en majuscule la première lettre, donc nous vérifions si la chaîne est égale à cela.la source
ToCamelCase
nouveau dans 10.3? Ne semble pas fonctionner dans 10.2.ToCamelCase["foo bar baz"]
?ToCamelCase[foo bar baz]
). Étrange! Peut-être que quelqu'un peut vérifier 10,3?bash / zsh / ksh, 25 octets
Pour réellement l'utiliser, créez un fichier avec lui comme seule ligne et rendez le fichier exécutable; les fichiers exécutables non reconnus comme un type binaire connu sont traités comme des scripts shell (pour
/bin/sh
spécifiquement).la source
bash
,ksh
etzsh
, mais n'a aucune chance de fonctionner dans POSIX standardsh
ou compatibledash
etyash
. Pour éviter toute confusion, je suggère de modifier le titre de la réponse.printf
au lieu deecho
pour créer le fichier et vous obtiendrez 25 octets.C # 4, 89 octets
Ma première tentative au Code Golf. Ça vient:
Voyez-le en action sur Dot Net Fiddle .
la source
bool o(string i)=>System.Text.RegularExpressions.Regex.IsMatch(i,"^[A-Z][a-z]+$");
Java, 28 octets
Utilise l'expression régulière pour s'assurer que la chaîne se compose d'un caractère majuscule suivi d'au moins un caractère minuscule.
-1 octets grâce à Benjamin Urquhart
la source
k4, 39 octets
Le premier caractère est supérieur, tous les autres sont inférieurs, comptent plus d'un.
Par exemple:
la source
Sérieusement, 16 octets
Vidage hexadécimal:
Essayez-le en ligne
Sérieusement n'a pas encore de support regex, donc le mieux que nous pouvons faire est:
la source
OCaml,
231216197166 octetsExemple d'utilisation:
Non golfé (avec de vrais noms de fonction):
la source
if … then 0 else
par… ||
. Et d'ailleurs en utilisant des opérateurs booléens au lieu dematch
et des gammes, par exemplen.[0]>'@'&n.[0]<'['&e(l-1)
SpecBAS - 39 octets
SpecBAS gère les expressions régulières via la
MATCH
commande. La sortie est 0 pour faux et 1 si vrai.la source
Swift 2, 116 octets
Regex est tellement verbeux dans Swift que cela est beaucoup plus court
Cela renverra
0
ou-1
(en cas d'absence de saisie) pour les noms non officiels, et un nombre> 0
(qui est égal à la longueur de la chaîne - 1) si le nom est officielNon golfé
la source
C #, 188 octets
Les expressions régulières auraient été le bon moyen de résoudre ce problème, mais voici une tentative sans cela.
Écriture normale
J'adorerais avoir des conseils sur la façon de raccourcir la vérification des minuscules, peut-être sans la boucle. J'ai juste commencé à apprendre la langue et je l'ai utilisé comme pratique, j'ai pensé partager mon résultat de toute façon.
la source
Perl 5
-p
, 18 octetsEssayez-le en ligne!
la source
PowerShell , 29 octets
Essayez-le en ligne!
Est-ce que le même regex trompe tout le monde utilise. Doit utiliser
c
ase-sensitivematch
pour le faire correctement au prix d'un octet.la source
Japt , 9 octets
Renvoie
1
ou0
.Essayez-le
la source
Perl 6 , 17 octets
Renvoie un
Match
objet s'il s'agit d'un nom officiel ouNil
autre.Essayez-le en ligne!
la source
m