/* 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>
Lolololololololololololes un nombre oficial :)False"?Respuestas:
Pyth,
161312 bytesGracias a @Thomas Kwa por recordarme sobre titlecase.
Test Suite .
fuente
Retina, 13 bytes
Pruébalo en línea | Conjunto de pruebas (el resultado
0significa que ninguna de las cadenas coincide, lo que se espera).Cuando Retina solo se proporciona con una sola línea de código, genera la cantidad de veces que la expresión coincide con la cadena de entrada, por lo que generará
1(verdadero) si coincide y, por lo tanto, es un nombre oficial y0(falso) si no lo es.Descompostura
fuente
TeaScript, 12 bytes
Abusa de la
Ofunción.Prueba esto en línea
Banco de pruebas
Explicación
La
Ofunción hace esto:Luego, la función O verifica si la expresión regular coincide
x.Alternativamente, una respuesta de TeaScript 3 no competitiva a 7 bytes :
fuente
isCharfunción que agregaste. Pero es posible que desee explicar con más detalle para aquellos que no lo saben.JavaScript (ES6), 26
Por: Edcsixtyfive
fuente
n=>n.match`^[A-Z][a-z]+$`/./.test.bind(/^[A-Z][a-z]+$/)Python,
5958 bytesEstoy seguro de que no hay una forma real de vencer a la versión Retina, ya que esto es básicamente eso dentro de Python. Pero creo que esta es mi primera presentación;)
Es muy extraño valor de verdad :
(Y requiere
""alrededor de cadenas con espacios, si se pasa a través del shell)fuente
^no es necesario ya quere.match()solo coincide al principio de la cadena.lambda s:re.match('[A-Z][a-z]+$',s) import reJava, 53 bytes
fuente
s->s.matches("[A-Z][a-z]+")Python,
50454341 bytesDevuelve
Truesi es un nombre oficial oFalsesi no lo es.fuente
f=en cuenta el ahorro de dos bytes. Además,(len(s)>1)ahorra 5 bytess[1:].islower(). :)BotEngine ,
20318029x6 = 174Realmente debería agregar builtins para identificar letras mayúsculas y minúsculas. Eso sería mucho más conciso que verificar cada letra individualmente.
Traducción aproximada:
fuente
C,
129122121111 bytesPruébalo en línea
fuente
VB6, 48 bytes
fuente
MATL , 18 bytes
Se utiliza la versión actual ( 4.0.0 ) del idioma.
Esto aplica la misma expresión regular que la respuesta de NinjaBearMonkey :
La salida es la cadena (que es verdadera ) si es un nombre oficial, y nada (que es falso ) si no lo es.
Ejemplos
fuente
Haskell, 61 bytes
fuente
Gema, 17 personajes
Ejecución de muestra:
fuente
Rubí, 28 bytes.
-2 bytes (gracias a manatwork)
fuente
pconsejos relacionados en Consejos para jugar al golf en Rubí .p !!gets[/^[A-Z][a-z]+$/]Código de máquina IA-32, 19 bytes
Una función que recibe el puntero a una cadena de terminación nula
ecxy devuelve 0 o 1 pulgeax(de acuerdo confastcallconvención).Hexdump del código:
En lenguaje ensamblador:
El primer byte del nombre de entrada tiene su quinto bit invertido (
xorcon32) para convertirlo de mayúscula a minúscula. Esto carga 32 eneax, usando 3 bytes de código:Para verificar si el byte es una letra minúscula:
Si no, este código falla. Para devolver 0 en este caso, pone 0
alantes de hacer el salto condicional:El 0 in
altambién sirve como una máscara xor (o ausencia de ella) para los siguientes bytes del nombre de entrada.Una salida exitosa es cuando encuentra un byte cero, que permanece cero después de
xor:Se supone que el nombre de entrada no está vacío. ¡Supongo que es una suposición razonable sobre un nombre (no una cadena arbitraria)!
fuente
grep, 16 bytesEste es el patrón:
Si usa el
-Ey-xe-cinterruptoresgrepse imprimirán un recuento de las líneas de entrada coincidentes. Entonces, si le das una línea, obtienes un 1 o un 0. Creo que así es como funciona este lugar.El patrón es de 11 caracteres, la línea de comando completa es 23. He visto a personas usar
sedscripts sin el comando, así que no sé qué es qué. Pero, lee stdin, por lo que puede escribirlo. Aquí estáecho:fuente
grep -Excpara que no necesite contar tantos bytes para los conmutadores.Mathematica 10.1, 46 bytes
Utiliza un byte menos que la solución estándar de expresiones regulares. Hace tres verificaciones.
LetterQ@#garantiza que la cadena esté completamente compuesta de letras eStringLength@#>1invalida las cadenas de una letra.#==ToCamelCase@#Sin embargo, tiene menos sentido.ToCamelCasees una función no documentada que encontré que toma una cadena de entrada AndOutputsItLikeThis. Dado que solo hay una palabra, capitalizará la primera letra, por lo que verificaremos si la cadena es igual a esa.fuente
ToCamelCasenuevo en 10.3? No parece funcionar en 10.2.ToCamelCase["foo bar baz"]?ToCamelCase[foo bar baz]). ¡Extraño! Tal vez alguien puede verificar 10.3?bash / zsh / ksh, 25 bytes
Para usar esto realmente, cree un archivo con él como la única línea y haga que el archivo sea ejecutable; Los archivos ejecutables que no se reconocen como un tipo binario conocido se tratan como scripts de shell (
/bin/shespecíficamente).fuente
bash,kshyzsh, pero no tiene posibilidad de funcionar en POSIX estándarsho en el compatibledashyyash. Para evitar confusiones, sugiero cambiar el título de la respuesta.printflugar deechocrear el archivo y obtendrá 25 bytes.C # 4, 89 bytes
Mi primer intento en Code Golf. Aquí viene:
Véalo en acción en Dot Net Fiddle .
fuente
bool o(string i)=>System.Text.RegularExpressions.Regex.IsMatch(i,"^[A-Z][a-z]+$");Java, 28 bytes
Utiliza expresiones regulares para asegurarse de que la cadena consta de un carácter en mayúscula seguido de al menos un carácter en minúscula.
-1 bytes gracias a Benjamin Urquhart
fuente
k4, 39 bytes
El primer carácter es superior, todos los demás son inferiores, cuentan más de uno.
P.ej:
fuente
En serio, 16 bytes
Hex Dump:
Pruébalo en línea
En serio, todavía no tiene soporte para expresiones regulares, por lo que lo mejor que podemos hacer es:
fuente
Ocaml,
231216197166 bytesEjemplo de uso:
Sin golf (con nombres de funciones reales):
fuente
if … then 0 elsepor… ||. Y para el caso, utilizando operadores booleanos en lugar dematchy rangos, por ejemplon.[0]>'@'&n.[0]<'['&e(l-1)SpecBAS - 39 bytes
SpecBAS maneja expresiones regulares a través del
MATCHcomando. La salida es 0 para falso y 1 si es verdadero.fuente
Swift 2, 116 bytes
Regex es tan detallado en Swift que hacer esto es mucho más corto
Esto regresará
0o-1(en el caso de no entrada) para nombres no oficiales, y un número> 0(que es igual a la longitud de la cadena - 1) si el nombre es oficialSin golf
fuente
C #, 188 bytes
Las expresiones regulares habrían sido la forma correcta de abordar esto, pero aquí hay un intento sin él.
Escritura común a mano
Me encantaría recibir consejos sobre cómo hacer que la verificación en minúsculas sea más corta, quizás sin el bucle. Recién comencé a aprender el idioma, y usé esto como práctica, pensé que compartiría mi resultado de todos modos.
fuente
Perl 5
-p, 18 bytesPruébalo en línea!
fuente
PowerShell , 29 bytes
Pruébalo en línea!
¿Tiene el mismo truco regex que todos los demás están usando? Tiene que usar
case-sensitivematchpara hacerlo correctamente a costa de un byte.fuente
Japt , 9 bytes
Devoluciones
1o0.Intentalo
fuente
Perl 6 , 17 bytes
Devuelve un
Matchobjeto si este es un nombre oficial y de loNilcontrario.Pruébalo en línea!
fuente
m