/* 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>
Respuestas:
05AB1E , 16 bytes
Utiliza la codificación CP-1252 .
Pruébalo en línea!
Explicación
fuente
[0 ... 23]
o en[0, 24)
lugar de[0 ... 24]
o[0, 24]
?Ruby, 56 bytes
Programa completo No creo que una respuesta de función / lambda sea más corta que esta para este lenguaje.
Dangit, sigma
ς
. Por eso no podemos tener cosas buenas. Y usted también, (carácter irrenunciable que sirve como marcador de posición para "mayúsculas"ς
)fuente
JavaScript (ES6),
898381 bytesSi una matriz de caracteres es aceptable, entonces para
828078 bytes:Editar: ahorró un montón de bytes gracias a @ETHproductions.
fuente
String.fromCharCode(...array)
es nuevamente más corto:(...a)=>String.fromCharCode(...[...Array(24)].map((_,i)=>i+(i>16)+913+32*!!a.length))
String.fromCharCode
pisos, puede guardar otros dos bytes así:(...a)=>String.fromCharCode(...[...Array(24)].map((_,i)=>i*1.06+913+32*!!a.length))
String.fromCharCode(...)
pero me gusta esei*1.06
truco! Lamentablemente, las comprensiones son un byte más largo esta vez por lo que puedo decir.(...a)=>String.fromCharCode(...[for(_ of Array(i=24))i++*42/41+889+32*!!a.length])
(82).!!
, ya que solo habrá cero o un argumento.Haskell,
114108bytesGracias a @xnor por guardar 6 bytes
Esto podría ganar en la categoría de importaciones más largas si nada más ...
fuente
q[a,b]=[a..b]
para usar 4 veces.getArgs>>=putStr.f
Es más corto.CJam , 16 bytes
Pruébalo en línea!
fuente
Pyke,
552120 bytesPruébalo aquí!
fuente
En realidad , 62 bytes
Pruébalo en línea!
Debido a que parte del alfabeto griego en mayúsculas no está presente en CP437, esta solución se codifica en UTF-8 y se califica en consecuencia. Aquí hay un hexdump (reversible con
xxd -r
):Explicación:
fuente
Python 3,
807776 bytesVersión antigua:
Versión antigua:
fuente
[a,a.lower()][len(sys.argv)-1]
porque los comentarios indican que solo habrá un argumento.[a.lower(),a][-len(sys.argv)]
.R,
1049992 bytesJugar al golf en la segunda versión que tenía anteriormente. Trabaja de la misma manera que la versión anterior.
¡Gracias a @JDL por eliminar 7 bytes!
Versiones anteriores a 104 bytes:
Tengo dos soluciones diferentes con el mismo número de bytes:
O:
Explicaciones:
Uso:
Por alguna razón, no funciona en I-violín (cambia
"
a'
por defecto que hace que el código de lanzar un error), pero se puede probar en Ideone .fuente
+'if'(missing(x),0,32)
con+32*!missing(x)
?Japt ,
2119 bytesPruébelo (sin entrada)
Pruébelo (entrada de cadena vacía)
Explicación
fuente
Scala, 82 bytes
Sin golf:
Lamentablemente,
(('Α'to'Ρ')++('Σ'to'Ω'))
es unVector[Char]
, que se imprimiría comoVector('Α', 'Β', ...
, por lo que debe convertirse en una cadena conmkString
. El argumento amap
se llama&
para guardar espacios entre&else
,else&
y& toLower
.fuente
Jalea , 21 bytes
Un programa completo
TryItOnline! - tenga en cuenta que una vez que se ejecuta con un argumento, se requerirá una actualización para ejecutar sin argumento.
¿Cómo?
fuente
PowerShell v2 +, 68 bytes
Solo ASCII, pero salidas en UTF-16. Construye una
char
matriz de los caracteres apropiados,-join
los une en una cadena y los almacena$a
. Luego, se usa!$args.count
como índice en la tupla, para generar resultados$a
si no hay argumentos presentes o$a.ToLower()
si hay al menos un argumento.fuente
PHP, 84 bytes
Versión en línea
PHP, 87 bytes
fuente
$argc>1
es 8 bytes más corto queisset($argv[1])
y no necesita un espacio en blanco.APL (Dyalog Extended) , 26 bytes
La forma normal de pasar múltiples argumentos a los programas APL es a través de una lista. Por lo tanto, este programa solicita dicha lista, que puede tener 0 o 1 argumentos.
Pruébalo en línea!
⎕
solicitud de lista de argumentos≢
cuenta el número de argumentos (0 o 1)~
negar eso (1 o 0)'Ω'×
"multiplica" Omega por eso (1 mantiene mayúsculas, 0 pliegues a minúsculas)⍳
Todos los personajes deΑ
-Ω
oα
-ω
respectivamente'ς'~⍨
eliminar las sigmas finales en minúsculas y "mayúsculas"fuente
Python 2, 108 bytes
Terriblemente golfizado, tal vez :(
Y no, no puedo usar
A.lower()
.Gracias a 13285 (alexwlchan) por -11 bytes.
fuente
A,a
y simplemente usando esas cadenas directamente enprint
.Mathematica, 91 bytes
Guión. Simplemente toma el rango de caracteres de
Α
aΩ
, elimina U + 03A2 /ς
, convierte a minúsculas o no, e imprime.fuente
Perl, 39 + 3 (
-C2
bandera) =4442 bytesfuente
JavaScript, 95 bytes
95 bytes, pero solo 71 caracteres. Contador de bytes . Usando la forma de @Neil para determinar si se pasan argumentos.
fuente
Java 7, 176 bytes
Java 8, 173 bytes
fuente
Python 3, 80 bytes
fuente
C #, 174 bytes
Implementación perezosa, probablemente puede jugar mucho golf
fuente
PHP, 79 bytes
genera entidades html unicode y las decodifica. Corre con
-r
.fuente
Pip ,
2120 bytesEste es un día memorable. ¡Pip ha
atadoa Jelly vencida! 11 Y perdió con otros dos golflangs, pero lo que sea.
Pruébalo en línea!
Explicación
fuente
tcl, 73
manifestación
fuente
Retina , 55 bytes
Pruébalo en línea
fuente
Braingolf , 24 bytes
Pruébalo en línea!
Explicación:
fuente
PowerShell , 81 bytes
Pruébalo en línea!
fuente
Groovy Script,
5451 bytesEditar
Cambiado de
913..937
yit==930?:
a(913..937)-930
fuente
Perl en Windows: la consola no es compatible con Unicode (42 bytes, incluidos los espacios)
Esta no es mi solución, solo estoy adaptando la solución Perl de Denis Ibaev anterior, a la consola de Windows Perl.
El código de la página de la consola debe ser griego, por supuesto:
NOTA: Solo una pequeña idea. En esta página puedo ver que algunas de las respuestas usan CARACTERES que parecen ser Unicode superiores a 255. Por lo tanto, esos caracteres toman al menos 2 bytes para codificar (¿quizás 4 si uno está usando una consola con caracteres Unicode de 32 bits?). ¿No sería mejor si la medida del concurso fuera la unidad CHARACTER (siendo Unicode o ASCII o EBCDIC o lo que sea) en lugar de solo BYTES? ¿No sería más simple y más unificador (me pregunto si este adjetivo existe en inglés, "unificateur" en francés)?
Código anterior por error: no imprime omega en minúsculas.
Código corregido (70 caracteres):
Sé que se supone que no debemos imprimir la forma sigma 'fin de palabra' ('ς') pero como es un error de ortografía en griego antiguo usar sigma regular ('σ') al final de una palabra minúscula, Elijo imprimirlo, ya que el título de este rompecabezas es "Imprime el alfabeto griego" y que este personaje es parte de él ...
fuente