<style>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; }</style><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><script>var QUESTION_ID = document.referrer.split("/")[4]; var ANSWER_FILTER = "!t)IWYnsLAZle2tQ3KqrVveCRJfxcRLe"; var COMMENT_FILTER = "!)Q2B_A2kjfAiU78X(md6BoYk"; var OVERRIDE_USER = 0; var answers = [], answers_hash, answer_ids, answer_page = 1, more_answers = true, comment_page; function answersUrl(index) { return "//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 "//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.toLowerCase(42), 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 > b.lang_raw) return 1; if (a.lang_raw < b.lang_raw) 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); } }</script>
1
et9
!!@#$%^&*()
; quelque chose qui devrait revenir*
.Réponses:
Matlab, 121 octets
Matlab n'est tout simplement pas fait pour les chaînes = (
la source
disp
déclaration?Mathematica,
174168163 octetsEffectue la première étape, puis calcule la racine numérique.
la source
Ruby,
9774 caractèresExemple d'exécution:
la source
Perl,
91 89 7674 octets73 + 1 pour
-p
interrupteurLes tests
Merci @manatwork de m'avoir aidé à sauver
2 14 16 1517 caractères !!... J'ai réfléchi:
N % 32 + Y
peut remplacer( N & 31 ) + Y
!la source
$1
est égal à$&
. Il vaut donc mieux supprimer la capture et changer le nom de la variable.while
le bloc pourrait être$t="*";s/\d/$t+=$&/eg;$_=$t
.-p
commutateur dans le nombre.echo -n "$test" | perl -pe '…'
pour voir ce que je veux dire.) Vous pouvez le résoudre en changeant lawhile
condition en!/^[\d*]$/
. Bien qu'il y ait, pour réduire la perte de score, vous pouvez remplacer toutwhile
ce:$t="*",s/\d/$t+=$&/eg,$_=$t until/^[\d*]$/
.&
la priorité est inférieure à+
, tandis que la valeur%
est supérieure, changez&31
→%32
et vous pouvez supprimer les parenthèses autour de cette sous-expression.ES6, 98 octets
Non golfé:
Version 94 octets qui ne fonctionne que sur les chaînes courtes:
Utilisation
match
,map
etjoin
s'est avéré être plus court que l'utilisation dereplace
deux fois:Testez-le ici: https://jsbin.com/zizosayisi/edit?js,console
la source
00 0 00
["0"]
,0
donc je ne pouvais pas faire la différence.> '@'
,& 31
et|| 9
?> '@'
juste la distinction entre les lettres et les chiffres.& 31
est un moyen utile d'ignorer la différence entre les codes de caractères majuscules et minuscules, car il associe également directement les codes de caractères en valeurs 1 à 26.|| 9
est utilisé car% 9
retourne 0 pour des multiples de 9 mais l'ajout répété de chiffres renvoie 9 pour des multiples non nuls de 9. Dans le code golfé que j'utilise à la(t + 8) % 9 + 1
place, ce qui revient à la même chose.Gema, 161 caractères
(Écrit uniquement pour essayer de savoir si les appels de domaine récursifs fonctionnent.)
Exemple d'exécution:
la source
JavaScript (ES6),
162159157 octetsToujours en train de chercher un moyen d'utiliser le retour implicite dans la fonction externe.
Non golfé + non minifié
isNaN
fonction globale (qui transforme son entrée) pour vérifier si ce n'est pas un nombrela source
00 0 00
, sortie*
au lieu de0
!_=>{expr;return expr}
=>_=>(expr,expr)
Haskell, 126 octets
Utilisation:
f "Hello, world!"
->"7"
.l
est une table de recherche de caractères pour lister des entiers (liste singleton, si char est trouvé, liste vide sinon).f
recherche chaque caractère de son argument et aplatit la liste de listes retournée en une simple liste d'entiers et appelleg
pour vérifier la condition de fin (liste vide (->*
) ou entier simple) ou pour appelerf
avec la somme de la liste pour un autre tour.la source
MATL , 64 octets
Cela utilise la version actuelle (4.0.0) de la langue.
J'ai le sentiment que cela pourrait être raccourci ...
Cas de test
la source
Sérieusement, 50 octets
Vidage hexadécimal:
Essayez-le en ligne
Expliqué:
la source
Pyth, 39 octets
Essayez-le en ligne
Je fais juste ça parce que je ne peux pas dormir. Peut-être que je l'expliquerai demain ...
la source
Pure bash,
199194 octets(le deuxième saut de ligne sert uniquement à éviter la barre de défilement)
Règle de test:
la source
JavaScript (ES6), 78
83Solution récursive. Étant la récursivité de queue, les variables t et r ne doivent pas être locales.
Expliqué
Extrait de test
la source
Python, 154 octets
la source
00 0 00
!Mathematica, 133 octets
Un peu différent de LegionMammal978 ci-dessus. Ma fonction transforme tout en un code de caractère, puis filtre les éléments non alphanumériques (en les remplaçant par des chaînes vides). S'il n'y a pas de caractères alphanumériques, il renvoie *, sinon il prend la racine numérique. Cela pourrait être significativement (~ 15B) plus court si je n'avais pas à gérer le cas des chaînes entièrement zéros. C'est la vie.
Mathematica magic, pour les non-initiés:
foo//.a_:>Tr@IntegerDigits@a
est un remplacement répété: il remplace tous les nombresa
dans foo par la somme de leurs chiffres, puis il remplace à nouveau jusqu'à ce qu'il atteigne un point fixe, c'est-à-dire qu'ila
cesse de changer en cours de remplacement.Tests:
la source