var QUESTION_ID=92598,OVERRIDE_USER=20260;function answersUrl(e){return"https://api.stackexchange.com/2.2/questions/92598/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>
Ответы:
Python, 32 байта
Анонимная лямбда-функция. Учитывая, что целое число x записывает «- ~» abs (x) раз и удаляет первый символ, если x отрицательно, то в конце добавляется ноль.
источник
n
вместоx
и'
вместо"
:)JavaScript (ES6),
3331 байтРекурсия <встроенные <циклы (по крайней мере, в этом случае). В основном не оценивает входные данные:
~
к строке;-
к строке;Использует преимущества этого шаблона:
источник
Pyth,
141312 байт-2 байта благодаря @StevenH.
тестирование
Решил попробовать Pyth, так что я перевел свой ответ на Python . Любая помощь приветствуется!
Объяснение:
источник
>0
вместо<Q0
tW>0Q_+0sm"~-
_<>0Q+0sm"~-
я надеюсь, что вы хорошо со мной, добавив это к моему решению.C, 46 байтов
В отличие от большинства (всех?) Других ответов, этот выводит операторы
~
и-
один за другим.источник
05AB1E ,
1413 байтобъяснение
Попробуйте онлайн!
источник
Сетчатка,
1917 байтЗамените число на одинарное, с нулем на конце. Заменить каждый
1
на-~
. Удалите двойной негатив, если он есть.Попробуйте онлайн
Все тестовые случаи одновременно (слегка измененная программа для поддержки нескольких тестовых случаев)
источник
Perl
38 35 33(23 + 1 для -p) 24-13 благодаря Дада
источник
-p
а не-r
. Также вы можете избавиться от тех последних скобок и точки с запятой:if$h<0
достаточно.$h<0&&s;.;
вместоs/.// if $h<0
. (-p
добавляет;
в конце кода, так что нет необходимости в последнем;
изs;.;;
. Иa if b
примерно эквивалентноb && a
, но в этом случае это экономит вам один байт, потому что вы можете удалить пробел);
тоже.Дьялог АПЛ , 18 байт
'0',⍨
нулевой символ добавляется к0∘>
отрицательность (то есть 1 для чисел ниже 0; 0 для нуля и выше)↓
упал с'-~'⍴⍨
строка "~ -" циклически преобразуется в длину2×
два раза|
абсолютное значение+
плюс0∘<
положительность (то есть 1 для чисел выше 0)Попробуй APL онлайн!
источник
Haskell, 41 байт
f n=['-'|n>0]++(tail$[1..abs n]>>"-~")++"0"
Спасибо Ними за 3 байта
источник
tail
терпит неудачу дляn=0
. Вы можете использоватьdrop 1
вместо этого.f n|n<0=tail.f$abs n|x<-[1..n]>>"-~"=x++"0"
....|n<0=tail$f(-n)|...
.V , 21 байт
Попробуйте онлайн!
У V очень ограниченная числовая поддержка, и он на самом деле не имеет понятия отрицательных чисел. Это означает, что для поддержки негативов (или даже 0) мы должны использовать некоторые обходные пути.
Объяснение:
источник
JavaScript (ES6),
3937 байтСохранено 2 байта благодаря @Neil
источник
Желе , 10 байт
Это полная программа. Попробуйте онлайн!
Как это работает
источник
Java 7,
9579 байт79 байтов:
Ungolfed:
Старая версия (95 байт):Использование:
Попробуй это здесь!
Выход:
источник
Рубин, 34 байта
источник
EXCEL:
5533 байтаВвод осуществляется в форме помещения числа в ячейку A1. Формула может пойти куда угодно, кроме А1.
источник
T-SQL, 87 байт
x*x+1
Условие подстроки достаточно, так какx^2+1>=2*abs(x)
для всехx
.Как обычно в SQL, входные данные хранятся в таблице:
источник
CJam ,
1814 байтовПолучил вдохновение от ответа Эминьи, чтобы сэкономить 4 байта.
Попробуйте онлайн! (Как набор тестов с разделением строк).
объяснение
источник
Vim - 31 нажатие клавиш
Первый vim golf, пропустил кучу вещей.
источник
:s/^-
вместо:s/-\~/\~-
иD
вместоd$
<C-a>
а затем удаляя два символа в конце.0i
не работает?0
перемещает курсор на первый символ в текущей строке. Вы можете использовать 0 как счет в V, хотя.Matlab, 61 байт
источник
Пайк,
1413 байтПопробуй это здесь!
источник
Perl 6 , 25 байт
Объяснение:
источник
Желе,
1412 байт-2 байта благодаря @Dennis (верните 0 вместо конкатенации "0", делая это только полной программой.)
Проверьте это в TryItOnline
Как?
источник
> <>, 18 + 3 = 22 байта
Попробуйте онлайн! +3 байта для
-v
флага для инициализации стека с помощью ввода. Если предположить, что STDIN пуст, то все в порядке, тогда следующий код будет короче:Программа продолжает перелистывать ввод по
n
мере необходимости, пока он не достигнет 0, после чего произойдет ошибка.источник
Октава, 51 байт
Сначала откровенно скопируйте подход Matlab с помощью @pajonk, а затем измените некоторые детали, переписав как «внешний продукт» между вектором единиц и символами «- ~» и злоупотребляя индексацией «на лету» (или чем она может быть Позволяет нам сохранить несколько байтов. Мне все еще немного больно, что я не могу заставить индексное выражение занимать меньше байтов.
Octave позволяет (i1) (i2) или даже (...) (i1) (i2) для индексации, где Matlab хочет, чтобы мы хранили переменные между индексами.
слишком долго, чтобы описать «пропустить сначала, если». Должен быть лучший способ.
источник
PseudoD ,
688579521 байтОбъясните:
источник
adquirir e``fijar p a Escribir
)?PHP, 61 байт
источник
PHP, 58 байт
источник
Лабиринт , 25 байт
Попробуйте онлайн!
объяснение
Мне действительно нравится поток управления в этом. IP проходит через цифру 8 (или, я думаю, фактически ∞) по коду, чтобы медленно уменьшить ввод
0
при печати соответствующих символов.Код начинается в левом верхнем углу и идет вправо. Сейчас
`
ничего не делает.?
читает входные данные и+
добавляет их к неявному нулю ниже. Конечно, это тоже ничего не делает, но когда мы снова запустим этот код, он?
будет выдвигать ноль (потому что мы находимся в EOF), а+
затем избавимся от этого ноля.Затем
#
толкает глубину стека, просто чтобы убедиться, что в стеке есть положительное значение, заставляющее IP поворачиваться на юг, и;
снова отбрасывать его.Это
"
неоперация и действует как основная ветвь кода. Можно выделить три случая:Если текущее значение положительное, IP поворачивается направо (запад) и завершает один раунд левого цикла:
Если текущее значение отрицательно, IP поворачивается влево (восток) и запускается следующий код:
Обратите внимание, что эти два будут чередоваться (так как оба меняют знак входа), пока значение входа не уменьшится до нуля. В таком случае...
!
и затем поворачивает на запад на@
.!
печатает0
и@
завершает программу.источник
GolfScript ,
302420 байт~."-~"\abs*\0<{(;}*0
Входные данные:
-5
Выход:
-5 = ~-~-~-~-~0
объяснение
Попробуйте онлайн!
источник
2 =
, только-~-~0
.{(;}*0
вместо{(;}{}if 0
.