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
conp!_
luego reemplazar(const.h)
con(!)
para guardar 6 bytes.id>>=foldl(!)
.CJam,
2724 bytesPruébalo aquí.
Esto empuja un bloque sin nombre que transforma una lista en la pila en una nueva lista.
Explicación
fuente
J,
2423 bytesUso:
El método es similar a la solución de Mauris .
Pruébelo en línea aquí.
1 byte guardado gracias a Zgarb.
fuente
Mathematica,
77746662 bytesGuardado 12 bytes gracias a Martin Büttner.
fuente
J, 33 bytes
Un poco más de lo que me hubiera gustado.
fuente
Python 3.5, 83 bytes
Esta función toma una lista de enteros de Python. No estoy seguro de que quede mucho para el golf, ¡pero al menos me encantaría hacerlo competitivo con otro idioma!
A partir de Python 3.5, PEP 448 nos permite deshacer las maletas
s
en0,*s
. Las versiones anteriores requieren un byte extra, de esta manera:El crédito a la solución y la explicación de user81655 por ayudarme a darse cuenta de que no necesito a prueba si la lista ha dejado de cambiar; Solo necesito iterar suficientes veces para asegurarme de que todos los ceros deben haber sido cubiertos. (El número máximo de iteraciones necesarias es uno menos que la longitud de la lista; esto hace una iteración más que eso, porque eso requiere menos código).
fuente
return
al interior delfor _ in s
bucle?Matlab, 90 bytes
¿Qué tal algunas convoluciones?
Ejemplo
fuente
Haskell,
6665 bytesEsto define una función llamada
f
.Explicación
En lugar de iterar el autómata celular, calculo los valores finales directamente. La definición es una lista única de comprensión. El valor
i
varía de0
alength x - 1
, ya que comprimimosx
con los números naturales. Para cada índicei
, producimos la lista de listas de 2 elementosA partir de esta lista, calculamos el elemento máximo cuya segunda coordenada no es cero y tomamos ese segundo elemento con
!!1
. Esto proporciona el valor distinto de cero más cercano al índicei
, rompiendo lazos al tomar el valor más grande.fuente
Lua, 133 bytes
Dos bucles, ternar anidados ... Si quiero seguir jugando al golf, tendré que encontrar otra forma de hacerlo, pero no veo una.
Explicaciones
La parte
se ampliará a
que se puede traducir en anidado
if
comofuente
Pyth, 17 bytes
Toma una lista de estilo Python de stdin, salidas a stdout.
Explicación
Esto es básicamente una traducción de mi respuesta de Haskell. Realmente no he usado Pyth antes, así que las sugerencias son bienvenidas.
fuente
APL (Dyalog) , 18 bytes
Función de prefijo tácito anónimo.
Pruébalo en línea!
(
...)⍣≡
aplique la siguiente función tácita hasta que el resultado sea idéntico al argumento:⊢
el argumento+
más~
no∘
el×
signum×
veces3⌈/
los máximos sobre cada grupo de tres de0,
cero seguido de,
el argumento seguido de∘
un0
cerofuente
Java 8,
155142 bytesModifica la entrada en
int[]
lugar de devolver una nueva para guardar bytes.Explicación:
Pruébalo aquí.
fuente
Ruby, 81 bytes
Creo que el interior
map
podría ser más golfizado.fuente
?
y:
.PHP -
301291289288264 caracteresNo alcanzó su punto máximo en otras respuestas antes de intentar esto. No culpes al lenguaje, culpame a mí. Muy agradable y desafiante, no obstante. Todos los consejos de golf de código muy apreciados.
Explicado
fuente
1
lugar detrue
, ensplit
lugar deexplode
, enfor
lugar dewhile
, enjoin
lugar deimplode
, elimine las llaves inútiles, ...Python, 71 bytes
El
zip
crea todas longitud-3 sublistas de un elemento y sus vecinos, el tratamiento más allá de los criterios de valoración como0
. El elemento central del[1]
una sublistal
, si es cero, se reemplaza por elmax
de sus vecinos conl[1]or max(l)
. Ell*all(l)
devuelve la listal
cuando no tiene0
's.fuente
Ruby, 74 bytes
funciona encontrando el número distinto de cero más cercano.
fuente
MATL , 38 bytes
Traducción directa de mi respuesta de Matlab. Utiliza la versión actual del idioma / compilador.
Ejemplo
EDITAR: ¡ Pruébelo en línea! con
X+
reemplazado porY+
yv
por&v
, debido a los cambios realizados en el idioma.fuente