var QUESTION_ID=71735,OVERRIDE_USER=31516;function answersUrl(e){return"https://api.stackexchange.com/2.2/questions/"+QUESTION_ID+"/answers?page="+e+"&pagesize=100&order=desc&sort=creation&site=codegolf&filter="+ANSWER_FILTER}function commentUrl(e,s){return"https://api.stackexchange.com/2.2/answers/"+s.join(";")+"/comments?page="+e+"&pagesize=100&order=desc&sort=creation&site=codegolf&filter="+COMMENT_FILTER}function getAnswers(){jQuery.ajax({url:answersUrl(answer_page++),method:"get",dataType:"jsonp",crossDomain:!0,success:function(e){answers.push.apply(answers,e.items),answers_hash=[],answer_ids=[],e.items.forEach(function(e){e.comments=[];var s=+e.share_link.match(/\d+/);answer_ids.push(s),answers_hash[s]=e}),e.has_more||(more_answers=!1),comment_page=1,getComments()}})}function getComments(){jQuery.ajax({url:commentUrl(comment_page++,answer_ids),method:"get",dataType:"jsonp",crossDomain:!0,success:function(e){e.items.forEach(function(e){e.owner.user_id===OVERRIDE_USER&&answers_hash[e.post_id].comments.push(e)}),e.has_more?getComments():more_answers?getAnswers():process()}})}function getAuthorName(e){return e.owner.display_name}function process(){var e=[];answers.forEach(function(s){var r=s.body;s.comments.forEach(function(e){OVERRIDE_REG.test(e.body)&&(r="<h1>"+e.body.replace(OVERRIDE_REG,"")+"</h1>")});var a=r.match(SCORE_REG);a&&e.push({user:getAuthorName(s),size:+a[2],language:a[1],link:s.share_link})}),e.sort(function(e,s){var r=e.size,a=s.size;return r-a});var s={},r=1,a=null,n=1;e.forEach(function(e){e.size!=a&&(n=r),a=e.size,++r;var t=jQuery("#answer-template").html();t=t.replace("{{PLACE}}",n+".").replace("{{NAME}}",e.user).replace("{{LANGUAGE}}",e.language).replace("{{SIZE}}",e.size).replace("{{LINK}}",e.link),t=jQuery(t),jQuery("#answers").append(t);var o=e.language;/<a/.test(o)&&(o=jQuery(o).text()),s[o]=s[o]||{lang:e.language,user:e.user,size:e.size,link:e.link}});var t=[];for(var o in s)s.hasOwnProperty(o)&&t.push(s[o]);t.sort(function(e,s){return e.lang>s.lang?1:e.lang<s.lang?-1:0});for(var c=0;c<t.length;++c){var i=jQuery("#language-template").html(),o=t[c];i=i.replace("{{LANGUAGE}}",o.lang).replace("{{NAME}}",o.user).replace("{{SIZE}}",o.size).replace("{{LINK}}",o.link),i=jQuery(i),jQuery("#languages").append(i)}}var ANSWER_FILTER="!t)IWYnsLAZle2tQ3KqrVveCRJfxcRLe",COMMENT_FILTER="!)Q2B_A2kjfAiU78X(md6BoYk",answers=[],answers_hash,answer_ids,answer_page=1,more_answers=!0,comment_page;getAnswers();var SCORE_REG=/<h\d>\s*([^\n,]*[^\s,]),.*?(\d+)(?=[^\n\d<>]*(?:<(?:s>[^\n<>]*<\/s>|[^\n<>]+>)[^\n\d<>]*)*<\/h\d>)/,OVERRIDE_REG=/^Override\s*header:\s*/i;
body{text-align:left!important}#answer-list,#language-list{padding:10px;width:290px;float:left}table thead{font-weight:700}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>
long int
no es suficiente, lo necesitassuper long int
.Respuestas:
Jolf,
1816 bytesPruébalo aquí! ¡Sabía que la función upperLower sería útil algún día! Reemplace
ó
con
, o simplemente use el enlace del intérprete. Esto está codificado en ISO 8859-7.fuente
Perl,
3938 bytes(1 byte agregado para la
-p
bandera).Herramienta adecuada para el trabajo ™.
La explicación está desactualizada después de una pequeña optimización (¡gracias dev-null !) Que lo hace un byte más corto (pero un poco menos elegante): la
$"
variable representa qué hacerjoin
cuando se interpola una matriz en una cadena, por lo que la configuración$"="|"
elimina la necesidad dejoin
.Manifestación:
fuente
$"="|"
lugar de unirse?$"="|";s/@{[65..90,97..122]}/chr$&/ge
Javascript, 80 bytes
Vea regex en acción aquí: https://regex101.com/r/iX8bJ2/1
Mostrar fragmento de código
Solo por curiosidad, una cosa que aprendí aquí:
No puedo cambiar
x=>String.fromCharCode(x)
aString.fromCharCode
porque ...fuente
CJam, 22 bytes
Pruébalo en línea!
Fondo
Simplemente reemplazar todas las ocurrencias de grupos de dígitos con las letras correspondientes (en el orden que elijamos) no cumplirá con la regla de izquierda a derecha.
En cambio, podemos generar todos los prefijos de la cadena de entrada e intentar hacer todas las sustituciones posibles mientras las generamos. Como ningún punto de código está contenido en otro punto de código, el orden de estos intentos no es importante.
Por ejemplo:
Cómo funciona
fuente
PHP,
1101021016867 bytesDesafío bastante difícil.
Esto es lo mejor que se me ocurrió.Esta es una versión completamente nueva.Corre así:
ctype_alpha
depreg_match
thx en manatwork0
a la cadena en lugar de verificar la cadena no vacía: cuando el último carácter de la entrada es un 0, la subcadena que estoy tomando sería "0", que es falso, mientras que "00" es verdadero, para que no se salte la impresión de los últimos 0.strtr
después de construir una matriz con pares de conversiónfuente
#[A-Z]#i
como la actual permitirá felizmente que "92" se transforme en "\". O intente enctype_alpha()
lugar depreg_match()
. Hasta ahora parece funcionar."0", which is falsy, whereas "00" is truthy
Bien hecho, PHP.Python 3,
211189188 bytesSe guardaron 23 bytes reemplazando \ n con; gracias a Dennis
Prueba
fuente
;
lugar de saltos de línea, puede colocar todo el bucle while en una sola línea. Además, la primera línea puede convertirsedef f(c,i=0,n=""):
.a=1;a=2 if 64<x<91 or 96<x<100 else a
->a=1+(64<x<91or 96<x<100)
etcPyth,
2018 bytesMismo algoritmo que @Dennis. Es mucho más fácil codificar en Pyth en mi teléfono que en Jelly.
Gracias @isaacg
Probarlo aquí .
fuente
05AB1E , 12 bytes
Pruébelo en línea o verifique todos los casos de prueba .
Explicación:
Alternativa de 12 bytes usando reducir por:
Pruébelo en línea o verifique todos los casos de prueba o vea una reducción paso a paso con solo los primeros 10 bytes .
fuente