var QUESTION_ID=80196,OVERRIDE_USER=20260;function answersUrl(e){return"https://api.stackexchange.com/2.2/questions/80196/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>
/
и\
. Может быть, для другого вопроса ...Ответы:
Улитки , 19 байт
Спецификация для этого может быть реализована в буквальном смысле, насколько это возможно, без необходимости думать.
источник
udlr
установите направление улитки вверх / вниз / влево / вправо.|
работает так же, как и в регулярных регулярных выражениях, и)
не требует соответствующих открытых скобок. Таким образом, код довольно точно переводится как «Найти один из нихv<>^
и установить направление соответствующим образом, а затем попытаться найти букву О в этом направлении».,
походит на*
регулярное выражение.Retina,
565242383130 байтСохранено 1 байт благодаря @ MartinBüttner
Злоупотребляет свойствами прямоугольников. Требует ввода, чтобы иметь завершающий перевод строки.
Попробуйте онлайн
объяснение
Это работает в трех частях:
>
<
^
иv
это потому, что логика^
иv
на самом деле одинаковы, только символы.Пользователи
<
Это просто:
Это соответствует
O
, опционально сопровождаемый символами без перевода строки, затем<
Пользователи
>
Это почти то же самое, что и предыдущий способ, но только наоборот. Сначала
>
сопоставляется, а затемO
Проверка
^
иv
Это было трудно для гольфа, и реклама всегда была действительной. Сначала мы сопоставляем, является ли это
v
илиO
:Если это
^
, первый встреченный символ должен бытьO
. Итак, это соответствует первому символу, чтобы соответствовать. Далее мы посчитаем количество.
s, следующих за ним до новой строки:Далее это можно разбить на две части, я расскажу о первой:
Итак, сначала мы сопоставим до следующего
O
, используя:Это необязательно соответствует всем не
O
символам, пока неO
встретится, если это успешно, то это продолжается ... если нет, то происходит следующее ...Теперь он пытается найти
^
использование:^
это специальный символ в регулярном выражении, поэтому его необходимо экранировать.[^^]
соответствует всем символам за исключением того^
, что это работает так же, как указано выше, если это успешно, то происходит следующее ...Итак, теперь одно из вышеперечисленного успешно совпало,
\1
проверяет и видит, была ли группа захвата из предыдущей(.*\n)
, эта группа захвата хранила количество.
s, которые были послеv
илиO
после, поэтому теперь\1
просто проверяет, есть ли количество точек в одно и тоже.источник
¶
вместо этого\n
(Retina может обрабатывать исходный код в ISO 8859-1.)¶
только \ n в замен, спасибо за совет!¶
везде перед выполнением дальнейшего анализа.Java (без регулярных выражений),
413412246242212211209198 байтСоревноваться в соревнованиях по гольфу с использованием Java меньше смысла, чем принимать участие в гонках Формулы 1 на велосипеде, но я не всегда делаю мысли, которые имеют какой-то смысл.
Вот мое чрезвычайно длинное Java-решение Golfed версия
и разгул
Кажется, что вся моя концепция была неправильной, вот мое более короткое решение
и негольфированная версия
РЕДАКТИРОВАТЬ Я переписал код для поиска 'O', теперь он содержит один цикл намного короче, и я также использовал предложение @Frozn для замены некоторых символов их значениями ascii.
В результате, еще 30 байтов кусает пыль.
Еще одно предложение от @Frozn, и мы на пару байтов ближе к решению Python
Другой переписать отбросить один цикл и объединить два оператора if
источник
return
и,(
чтобы сохранить байт. Пробел не нужен, если возвращаемое значение находится в скобках (или в кавычках для строк). Исходный код из Java-кода игры в гольф.'O' = 79
,'>' = 62
,'<' = 60
,'^' = 94
. Для «v» это 118, но это не сокращает код.MATL (без регулярных выражений),
26252422 байтаПопробуйте онлайн!
Модифицированная версия для всех тестовых случаев
объяснение
источник
J
'O'
, а не число0
. ASCII код для письма'O'
это79
CJam (без регулярных выражений), 25
Более ранние версии были неправильными, это нужно сделать сейчас:
Попробуйте онлайн
Объяснение:
Я попробовал несколько математических формул для разграничения между «хорошими» и «плохими» строками, и для каждого типа формул я попытался вставить различные числа. Я закончил с
HbI%
вышеизложенным.«хорошими» строками для исходной сетки являются «> O» и «O <», и они дают результат 17
«хорошими» строками для транспонированной сетки являются «vO» и «O ^», и они дают результат 15
«плохой» Строки для обеих сеток: «>», «<», «^», «v», «O», «», «O>», «Ov», «<O», «^ O», и они дают результаты 8, 6, 4, 10, 7, 0, 1, 3, 1, 3
источник
Python 3 (без регулярных выражений), 184 байта.
Ура для взлома!
источник
TSQL (sqlserver 2012) (без регулярных выражений), 358 байт
Пришлось использовать funky linechange в объявлении, чтобы принудительно выполнить онлайн-версию (присвоение значений входным переменным в любом случае не влияет на вычисление длины)
Попробуйте онлайн!
источник
Pyth, 43 байта
Живая демоверсия.
источник
JavaScript (ES6), 78 байт
Регулярное выражение конечно. Оказалось, что в принципе похоже на ответ Ruby.
источник
Рубин,
715554 байтаРешение Regex, что означает, что его, вероятно, легко победят Retina или Perl.
Возвращает порядковый номер (правда), если есть совпадение.
Теперь с трюком, похожим на ответ @Downgoat Retina, совмещая лучи вниз и вверх одновременно.
источник
JavaScript (ES6) (без регулярных выражений), 126 байт
Где
\n
представляет буквальный символ новой строки.источник
Clojure (без регулярных выражений), 293 байта
Не чувствует себя прекрасно. Простое решение, поиск индекса соответствующих символов и вычисление, если они находятся на одной строке.
Вы можете попробовать это здесь https://ideone.com/m4f2ra
источник
Python (без регулярных выражений), 105 байт
возвращает True или False
Сначала полоски "." и '\ n' с концов, чтобы интересующие символы, '0 <> v ^', были первым и последним символами.
'>O<vO^'.find(t[0]+t[-1])//3
- проверяет, являются ли символы потенциально допустимым расположением. Значение 0 для «> O» или «O <», 1 для «vO» или «O ^» и «-1» для всего остального.'\n'in t
- проверяет, находятся ли символы в разных строках,len(t)%(s.find('\n')+1)!=1
- проверяет, находятся ли они в разных столбцах, и1
- используется по умолчаниюВ
not
инвертирует результат выбирается из списка, так чтоreturn
выражение эквивалентно:источник
Юлия (без регулярных выражений), 98
Функция, работающая с массивом символов, нормализующаяся с помощью поворота, удаляющая строки и столбцы, содержащие только точки, путем индексации диапазона и, наконец, проверяющая местоположение «O», принимая во внимание, является ли остаток b вектором столбца или строки с использованием умножения матриц.
Попробуйте онлайн
источник
Python 2 (без регулярных выражений), 268 байт
Значения Truthy и Falsy, возвращаемые функцией, равны 1 и 0 соответственно.
У меня еще не было возможности поиграть в гольф. Честно говоря, я не слишком надеюсь на это ...
Любые предложения будут ценны!
источник
C # (без регулярных выражений), 282 байта
Работает как версия Java, но переносится и уменьшается
Расширенный (Объяснение включено):
источник
C (ANSI) (без регулярных выражений), 237 байт
Expanded:
Я думаю, что я использовал совершенно другой подход по сравнению с реализациями Java или C #. Я получил координаты «O» и стрелки ((c, d) и (x, y)), а затем сравнил их, чтобы увидеть, указала ли стрелка в правильном направлении.
Возвращает 0, если ложь, и 1, если правда
источник
Grime v0.1 , 31 байт
Не очень интересное решение. Отпечатки
1
для правдивых и ложных экземпляров0
. Попробуйте онлайн!объяснение
Мы просто ищем во входном прямоугольнике шаблон минимального размера (n × 1 или 1 × n), который содержит лазер и цель в правильном порядке.
n`
Флаг делает интерпретатор печать количества матчей, из которых всегда будет в основном один. Остальная часть строки состоит из четырех шаблонов, разделенных|
символами -ch, что означает логическое ИЛИ: прямоугольник сопоставляется, если он соответствует одному из шаблонов. Шаблоны работают следующим образом:источник