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
porp!_
e substituir(const.h)
por(!)
para salvar 6 bytes.id>>=foldl(!)
.CJam,
2724 bytesTeste aqui.
Isso empurra um bloco sem nome que transforma uma lista na pilha em uma nova lista.
Explicação
fonte
J,
2423 bytesUso:
O método é semelhante à solução de Mauris .
Experimente online aqui.
1 byte economizado graças ao Zgarb.
fonte
Mathematica,
77746662 bytesEconomizou 12 bytes graças a Martin Büttner.
fonte
J, 33 bytes
Um pouco mais do que eu gostaria.
fonte
Python 3.5, 83 bytes
Esta função pega uma lista Python de números inteiros. Não tenho certeza se ainda há muito para jogar golfe, mas eu adoraria competir com outro idioma, pelo menos!
De Python 3.5, PEP 448 nos permite descompactar
s
em0,*s
. As versões anteriores exigem um byte extra, da seguinte forma:Os nossos agradecimentos à solução e explicação do user81655 por me ajudarem a perceber que não preciso testar se a lista parou de mudar; Eu só preciso iterar vezes suficientes para garantir que todos os zeros tenham sido cobertos. (O número máximo de iterações necessárias é um menor que o comprimento da lista; isso faz uma iteração mais que isso, porque isso requer menos código.)
fonte
return
para dentro dofor _ in s
loop?Matlab, 90 bytes
Que tal algumas convoluções?
Exemplo
fonte
Haskell,
6665 bytesIsso define uma função chamada
f
.Explicação
Em vez de iterar o autômato celular, eu computo os valores finais diretamente. A definição é uma compreensão de lista única. O valor
i
varia de0
alength x - 1
, pois zipamosx
com os números naturais. Para cada índicei
, produzimos a lista de listas de 2 elementosNesta lista, calculamos o elemento máximo cuja segunda coordenada é diferente de zero e levamos esse segundo elemento
!!1
. Isso fornece o valor diferente de zero mais próximo do índicei
, rompendo os laços ao obter o valor maior.fonte
Lua, 133 bytes
Dois loops, ternários aninhados ... Se eu quiser jogar mais, vou ter que encontrar uma outra maneira de fazer isso, mas não vejo um.
Explicações
A parte
será expandido para
que pode ser traduzido em aninhado
if
comofonte
Pitão, 17 bytes
Pega uma lista no estilo Python de stdin, sai para stdout.
Explicação
Esta é basicamente uma tradução da minha resposta Haskell. Eu realmente não usei Pyth antes, então dicas são bem-vindas.
fonte
APL (Dyalog) , 18 bytes
Função de prefixo tácito anônimo.
Experimente online!
(
…)⍣≡
Aplique a seguinte função tácita até que o resultado seja idêntico ao argumento:⊢
o argumento+
mais~
não∘
o×
signum×
vezes3⌈/
os máximos sobre cada grupo de três de0,
zero seguido por,
o argumento seguido por∘
um0
zerofonte
Java 8,
155142 bytesModifica a entrada em
int[]
vez de retornar uma nova para salvar bytes.Explicação:
Experimente aqui.
fonte
Ruby, 81 bytes
Eu acho que o interior
map
poderia ser ainda mais jogado.fonte
?
e:
.PHP -
301291289288264 caracteresNão deu pico em outras respostas antes de tentar isso. Não culpe a língua, culpe-me. Muito agradável e desafiador, não obstante. Todos os conselhos sobre códigos de golfe são muito apreciados.
Explicado
fonte
1
ao invés detrue
,split
em vez deexplode
,for
ao invés dewhile
,join
em vez deimplode
, remover chaves inúteis, ...Python, 71 bytes
A
zip
cria todos Comprimento-3 sublists de um elemento e os seus vizinhos, o tratamento para além dos pontos de extremidade como0
. O elemento central no quall[1]
uma sublistl
, se zero, é substituída pelomax
de seus vizinhos porl[1]or max(l)
. Asl*all(l)
retorna a listal
quando ele não tem0
's.fonte
Ruby, 74 bytes
funciona encontrando o número diferente de zero mais próximo.
fonte
MATL , 38 bytes
Tradução direta da minha resposta do Matlab. Usa a versão atual do idioma / compilador.
Exemplo
EDIT: Experimente online! com
X+
substituído porY+
ev
por&v
, devido a mudanças feitas no idioma.fonte