Попробуйте написать какой-нибудь код на вашем языке и сделать так, чтобы он больше не отвечал нашим критериям быть языком программирования .
Язык удовлетворяет нашим критериям (упрощенная версия для этой задачи) быть языком программирования, если:
- Он может читать пользовательский ввод, представляющий наборы натуральных чисел в некотором роде.
- Он может выводить как минимум два разных возможных результата в зависимости от ввода.
- Он может взять два положительных целых числа и добавить их (и результат может повлиять на вывод).
- Он может взять положительное целое число и решить, является ли оно простым (и результат может повлиять на результат).
- Для этой задачи любой вид вывода, который не является допустимым методом вывода для обычного вызова , игнорируется. Таким образом, не имеет значения, может ли программа воспроизводить музыкальные произведения или отправлять сообщения через HTTP и т. Д.
- Обновление: вы также можете выбрать один или несколько разрешенных методов вывода и игнорировать все остальные. Но вы должны использовать одно и то же определение везде в следующих критериях. И если ваша программа может отключить более одного метода вывода - это стоит больше голосов.
Примеры, такие как отключение вывода или отключение всех конструкций цикла, чтобы он не смог выполнить тест на простоту, и проверка того, что пользователь не сможет их повторно включить.
Вы должны оставить место для вставки нового кода. По умолчанию это в конце вашего кода. Если мы рассмотрим возможность добавления исходного кода в это место в вашем ответе и запуска полного кода в качестве полной программы, переводчика нового языка, этот язык не должен удовлетворять критериям.
Но вставленный код должен быть выполнен таким образом, как язык, удовлетворяющий критериям:
- Вставленный код должен быть грамматически таким же, как что-то (скажем, это кодовый блок в следующих критериях), который обычно удовлетворяет критериям с точки зрения того, кто хочет написать подсветку синтаксиса. Так что это не может быть в строке, комментарии и т. Д.
- Вставленный код должен быть фактически выполнен таким образом, чтобы он удовлетворял критериям. Таким образом, это не может быть в неиспользуемой функции или
sizeof
в C, вы не можете просто выполнить только нефункциональную часть в коде, и вы не можете поместить ее после бесконечного цикла и т. Д. - Вы не можете ограничить количество возможных грамматически правильных программ, сгенерированных таким образом. Если в используемом языке уже есть что-то вроде ограничения длины, оно не должно удовлетворять критериям, даже если это ограничение будет снято.
- Вы не можете изменять или «использовать» содержимое ввода / вывода, но вы можете предотвратить доступ к ним.
- Эти критерии обычно применяются только к языкам без явного ввода-вывода:
- Ваш код должен перенаправить пользовательский ввод (который содержит информацию произвольной длины) на вставленный код, если блок кода обычно не может получить пользовательский ввод прямо / явно на языке, который вы используете.
- Ваш код должен напечатать возвращенное значение вставленного кода, если блок кода обычно не может выводить вещи прямо / явно на языке, который вы используете.
- Если вы печатаете возвращаемое значение, и оно набрано на языке, который вы используете, возвращаемый тип должен иметь 2 разных практически возможных значения. Например, вы не можете использовать тип
struct {}
илиstruct {private:int x;}
в C ++.
Это популярность-конкурс. Наибольшее количество голосов правильного ответа (так что никто не заметил ошибку или все ошибки исправляются) выигрывает.
Разъяснения
- Вы не должны изменять код в текстовой форме, но можете изменить синтаксис, прежде чем код будет интерпретирован или скомпилирован.
- Вы можете делать другие вещи во время работы кода. Но причина, по которой он не удовлетворяет критериям, должна быть в самом вставленном коде. Это может привести к ошибке из-за вмешательства другого потока, но не может быть просто уничтожено другим потоком.
- Все спецификации в основном означают, что оно должно быть грамматически вероятно удовлетворяющим критериям, если все встроенные модули не были изменены, но на самом деле не изменились . Это хорошо, если вы найдете какие-либо грамматические обходные пути, например, правильно передали параметры в блок кода, но не можете их использовать каким-либо образом.
- Опять же, вставленный код должен быть действительно выполнен. Код после бесконечного цикла или сбоя считается «фактически не выполненным», поэтому недействительным . Эти ответы могут быть интересными, но на этом сайте уже есть некоторые другие вопросы с бесконечным циклом или сбои, и вы можете найти более подходящий для ответа. Если нет, подумайте над тем, чтобы задать новый вопрос. Примеры этих вопросов:
Leaderboard
var QUESTION_ID=61115/*,OVERRIDE_USER=8478*/;function answersUrl(e){return"https://api.stackexchange.com/2.2/questions/"+QUESTION_ID+"/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()*/(more_answers?getAnswers():process())}})}/*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),score:s.score,language:a[1],lang:jQuery('<div>').html(a[1]).text(),link:s.share_link})}),e.sort(function(e,s){var r=e.score,a=s.score;return a-r});var s={},r=1,a=null,n=1;e.forEach(function(e){e.score!=a&&(n=r),a=e.score,++r;var t=jQuery("#answer-template").html();t=t.replace("{{PLACE}}",e.n=n+".").replace("{{NAME}}",e.user).replace("{{LANGUAGE}}",e.language).replace("{{SIZE}}",e.score).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=e/*[];for(var o in s)s.hasOwnProperty(o)&&t.push(s[o])*/;t.sort(function(e,s){return (e.lang.toUpperCase()>s.lang.toUpperCase())-(e.lang.toUpperCase()<s.lang.toUpperCase())||(e.lang>s.lang)-(e.lang<s.lang)});for(var c=0;c<t.length;++c){var i=jQuery("#language-template").html(),o=t[c];i=i.replace("{{PLACE}}",o.n).replace("{{LANGUAGE}}",o.language).replace("{{NAME}}",o.user).replace("{{SIZE}}",o.score).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|(?!.*<h\d>)p)>\s*((?:[^,;(\s]| +[^-,;(\s])+)(?=(?: *(?:[,;(]| -).*?)?\s*<\/(h\d|p)>)/,OVERRIDE_REG=/^Override\s*header:\s*/i;
body{text-align:left!important}#answer-list,#language-list{padding:10px;float:left}table{width:250px}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="https://cdn.sstatic.net/Sites/codegolf/all.css?v=7509797c03ea"> <div id="answer-list"> <h2>Leaderboard</h2> <table class="answer-list"> <thead> <tr><td></td><td>Author</td><td>Language</td><td>Score</td></tr></thead> <tbody id="answers"> </tbody> </table> </div><div id="language-list"> <h2>Sorted by Language</h2> <table class="language-list"> <thead> <tr><td></td><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>{{PLACE}}</td><td>{{LANGUAGE}}</td><td>{{NAME}}</td><td>{{SIZE}}</td><td><a href="{{LINK}}">Link</a></td></tr></tbody> </table>