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
наp!_
затем заменить(const.h)
на,(!)
чтобы сохранить 6 байтов.id>>=foldl(!)
.CJam,
2724 байтаПроверьте это здесь.
Это выталкивает неназванный блок, который преобразует список в стеке в новый список.
объяснение
источник
J
2423 байтаИспользование:
Метод похож на решение Мауриса .
Попробуйте это онлайн здесь.
1 байт сохранен благодаря Zgarb.
источник
Mathematica,
77746662 байтаСохранено 12 байтов благодаря Мартину Бюттнеру.
источник
J, 33 байта
Чуть дольше, чем мне бы хотелось.
источник
Python 3.5, 83 байта
Эта функция принимает список целых чисел в Python. Не уверен, что гольфу еще многое осталось, но я бы хотел, чтобы он был конкурентоспособным по крайней мере с другим языком!
Начиная с Python 3.5, PEP 448 позволяет нам распаковывать
s
в0,*s
. Более ранние выпуски требуют дополнительного байта, например так:Кредит решения и объяснения user81655 игровая за помощь мне понять , что мне не нужно , чтобы тест был ли список прекращал меняться; Мне просто нужно перебрать достаточное количество раз, чтобы убедиться, что все нули должны быть покрыты. (Максимальное количество необходимых итераций на единицу меньше длины списка; это делает на одну итерацию больше, потому что для этого требуется меньше кода.)
источник
return
к внутри вfor _ in s
цикле?Matlab, 90 байт
Как насчет некоторых извилин?
пример
источник
Haskell,
6665 байтЭто определяет вызываемую функцию
f
.объяснение
Вместо итерации клеточного автомата я вычисляю окончательные значения напрямую. Определение - это понимание единого списка. Значение
i
варьируется от0
доlength x - 1
, так как мы сжимаемx
с натуральными числами. Для каждого индексаi
составляем список из 2-х элементовИз этого списка мы вычисляем максимальный элемент, вторая координата которого отлична от нуля, и берем этот второй элемент с помощью
!!1
. Это дает ближайшему ненулевое значение индексаi
, разрывая связи, принимая большее значение.источник
Lua, 133 байта
Две петли, вложенные троицы ... Если я захочу еще поиграть в гольф, мне придется найти другой способ сделать это, но я не вижу его.
Пояснения
Часть
будет расширен до
который может быть переведен во вложенный
if
какисточник
Pyth, 17 байт
Принимает список в стиле Python из stdin, выводит в stdout.
объяснение
Это в основном перевод моего ответа на Haskell. Я на самом деле раньше не использовал Pyth, так что подсказки приветствуются.
источник
APL (Dyalog) , 18 байт
Функция анонимного молчаливого префикса.
Попробуйте онлайн!
(
…)⍣≡
Применять следующую молчаливую функцию, пока результат не будет идентичен аргументу:⊢
Аргумент+
плюс~
не сигнум∘
×
×
раз3⌈/
максимумы по каждой группе из трех0,
ноль с последующим,
аргумент следует∘
в0
нолеисточник
Java 8,
155142 байтаИзменяет ввод
int[]
вместо возврата нового, чтобы сохранить байты.Объяснение:
Попробуй это здесь.
источник
Рубин, 81 байт
Я думаю, что внутренняя часть
map
может быть дальше в гольфе.источник
?
и:
.PHP -
301291289288264 символовНе пытался найти ответы на другие вопросы, прежде чем пытаться это сделать. Не вините язык, вините меня. Очень приятный и сложный, тем не менее. Весь кодекс совета по гольфу высоко ценится.
Разъяснения
источник
1
вместоtrue
,split
а неexplode
,for
а неwhile
,join
а неimplode
, удалять ненужные фигурные скобки, ...Python, 71 байт
zip
Создает все длины 3 подсписков элемента и его соседей, лечение за пределами конечных точек как0
. Центральный элементl[1]
подспискаl
, если он равен нулю, заменяется наmax
соседних сl[1]or max(l)
. Вl*all(l)
возвращает список ,l
когда он не имеет0
«S.источник
Рубин, 74 байта
работает путем нахождения ближайшего ненулевого числа.
источник
MATL , 38 байт
Прямой перевод моего ответа Matlab. Использует текущую версию языка / компилятора.
пример
РЕДАКТИРОВАТЬ: попробуйте это онлайн! с
X+
замененY+
иv
на&v
, из - за изменений , сделанных на языке.источник