var QUESTION_ID=64812,OVERRIDE_USER=20260;function answersUrl(e){return"https://api.stackexchange.com/2.2/questions/67346/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>
h p
parp!_
puis remplacer(const.h)
par(!)
pour économiser 6 octets.id>>=foldl(!)
.CJam,
2724 octetsTestez-le ici.
Cela pousse un bloc sans nom qui transforme une liste de la pile en une nouvelle liste.
Explication
la source
J,
2423 octetsUsage:
La méthode est similaire à la solution de Mauris .
Essayez-le en ligne ici.
1 octet économisé grâce à Zgarb.
la source
Mathematica,
77746662 octetsEnregistré 12 octets grâce à Martin Büttner.
la source
J, 33 octets
Un peu plus longtemps que je ne l'aurais souhaité.
la source
Python 3.5, 83 octets
Cette fonction prend une liste Python d'entiers. Je ne suis pas sûr qu'il reste beaucoup de golf, mais j'adorerais le rendre compétitif avec une autre langue au moins!
A partir de Python 3.5, PEP 448 nous permet de déballer
s
en0,*s
. Les versions antérieures nécessitent un octet supplémentaire, comme ceci:Nous remercions la solution et l'explication de user81655 pour m'avoir aidé à réaliser que je n'ai pas besoin de tester si la liste a cessé de changer; J'ai juste besoin d'itérer suffisamment de fois pour être sûr que tous les zéros doivent avoir été couverts. (Le nombre maximal d'itérations nécessaires est inférieur de un à la longueur de la liste; cela fait une itération de plus que cela, car cela prend moins de code.)
la source
return
à l' intérieur de lafor _ in s
boucle?Matlab, 90 octets
Et quelques circonvolutions?
Exemple
la source
Haskell,
6665 octetsCeci définit une fonction appelée
f
.Explication
Au lieu d'itérer l'automate cellulaire, je calcule directement les valeurs finales. La définition est une compréhension de liste unique. La valeur
i
varie de0
àlength x - 1
, car nous zipponsx
avec les nombres naturels. Pour chaque indexi
, nous produisons la liste des listes à 2 élémentsÀ partir de cette liste, nous calculons l'élément maximal dont la deuxième coordonnée est non nulle et prenons ce deuxième élément avec
!!1
. Cela donne la valeur non nulle la plus proche de l'indexi
, rompant les liens en prenant la plus grande valeur.la source
Lua, 133 octets
Deux boucles, ternaires imbriqués ... Si je veux continuer à jouer au golf, je devrai trouver une autre façon de le faire, mais je n'en vois pas.
Explications
La partie
sera étendu à
qui peut être traduit en imbriqué
if
commela source
Pyth, 17 octets
Prend une liste de style Python de stdin, sort vers stdout.
Explication
Il s'agit essentiellement d'une traduction de ma réponse Haskell. Je n'ai pas vraiment utilisé Pyth auparavant, donc les astuces sont les bienvenues.
la source
APL (Dyalog) , 18 octets
Fonction de préfixe tacite anonyme.
Essayez-le en ligne!
(
…)⍣≡
Appliquez la fonction tacite suivante jusqu'à ce que le résultat soit identique à l'argument:⊢
l'argument+
plus~
pas∘
le×
signum×
fois3⌈/
les maxima sur chaque groupe de trois0,
zéro suivi de,
l'argument suivi d'∘
un0
zérola source
Java 8,
155142 octetsModifie l'entrée
int[]
au lieu d'en renvoyer une nouvelle pour enregistrer les octets.Explication:
Essayez-le ici.
la source
Rubis, 81 octets
Je pense que l'intérieur
map
pourrait être encore golfé.la source
?
et:
.PHP -
301291289288264 CaractèresN'a pas atteint d'autres réponses avant de tenter cela. Ne blâmez pas la langue, blâmez-moi. Très agréable et stimulant non moins. Tous les conseils de golf de code fortement appréciés.
Expliqué
la source
1
plutôt quetrue
,split
plutôt queexplode
,for
plutôt quewhile
,join
plutôt queimplode
, supprimez les accolades inutiles,…Python, 71 octets
Le
zip
crée toutes les sous-listes de longueur 3 d'un élément et de ses voisins, en traitant au-delà des points finaux comme0
. L'élément centrall[1]
une sous-listel
, s'il est nul, est remplacé par lemax
de ses voisins avecl[1]or max(l)
. Lal*all(l)
renvoie la listel
quand elle n'a pas0
de.la source
Rubis, 74 octets
fonctionne en trouvant le nombre non nul le plus proche.
la source
MATL , 38 octets
Traduction directe de ma réponse Matlab. Les usages la version actuelle du langage / compilateur.
Exemple
EDIT: Essayez-le en ligne! avec
X+
remplacé parY+
etv
par&v
, en raison des modifications apportées à la langue.la source