Versuchen Sie, Code in Ihrer Sprache zu schreiben, der unseren Kriterien als Programmiersprache nicht mehr entspricht.
Eine Sprache erfüllt unsere Kriterien (vereinfachte Version für diese Herausforderung), eine Programmiersprache zu sein, wenn:
- Es kann Benutzereingaben lesen, die Tupel positiver Ganzzahlen darstellen.
- Es können je nach Eingabe mindestens zwei verschiedene mögliche Ergebnisse ausgegeben werden.
- Es können zwei positive ganze Zahlen verwendet und addiert werden (und das Ergebnis kann die Ausgabe beeinflussen).
- Es kann eine positive ganze Zahl annehmen und entscheiden, ob es eine Primzahl ist (und das Ergebnis kann die Ausgabe beeinflussen).
- Für diese Herausforderung wird jede Art von Ausgabe ignoriert , die keine zulässige Ausgabemethode für eine normale Herausforderung ist. Es spielt also keine Rolle, ob das Programm auch ein Musikstück abspielen oder über HTTP posten kann.
- Update: Sie können auch eine oder mehrere der zulässigen Ausgabemethoden auswählen und alle anderen ignorieren. In den folgenden Kriterien müssen Sie jedoch überall dieselbe Definition verwenden. Und wenn Ihr Programm mehr als eine Ausgabemethode deaktivieren kann, ist dies mehr Gegenstimmen wert.
Beispiele dafür sind, dass es nicht in der Lage ist, alle Schleifenkonstrukte auszugeben, oder dass es nicht in der Lage ist, Primalitätstests durchzuführen und sicherzustellen, dass der Benutzer sie nicht wieder aktivieren kann.
Sie sollten einen Platz zum Einfügen von neuem Code lassen. Standardmäßig befindet es sich am Ende Ihres Codes. Wenn wir in Betracht ziehen , den Quellcode an dieser Stelle in Ihrer Antwort abzulegen und den vollständigen Code als vollständiges Programm auszuführen, sollte der Interpreter einer neuen Sprache die Kriterien nicht erfüllen.
Aber der eingegebene Code muss in einer solchen Art und Weise ausgeführt werden , wie eine Sprache , die Kriterien erfüllen:
- Der eingefügte Code muss grammatikalisch mit etwas identisch sein (sagen wir, es ist ein Codeblock in den folgenden Kriterien), das im Allgemeinen die Kriterien erfüllt, aus der Perspektive derjenigen, die einen Syntax-Textmarker schreiben möchten. Es kann also nicht in einer Zeichenfolge, einem Kommentar usw. sein.
- Der eingefügte Code muss tatsächlich so ausgeführt werden, dass er die Kriterien erfüllen soll. Es kann also nicht in einer nicht verwendeten Funktion oder
sizeof
in C sein, Sie können nicht nur einen nicht funktionalen Teil im Code ausführen und Sie können ihn nicht nach einer Endlosschleife usw. setzen. - Sie können die Anzahl möglicher grammatikalisch korrekter Programme, die auf diese Weise generiert werden, nicht begrenzen. Wenn es in der von Ihnen verwendeten Sprache bereits so etwas wie ein Längenlimit gibt, sollte es die Kriterien nicht erfüllen, auch wenn dieses Limit entfernt wird.
- Sie können den Inhalt der Eingabe / Ausgabe nicht ändern oder "verbrauchen", aber Sie können verhindern, dass auf sie zugegriffen wird.
- Diese Kriterien gelten normalerweise nur für Sprachen ohne explizite E / A:
- Ihr Code sollte die Benutzereingabe (die Informationen beliebiger Länge enthält) an den eingefügten Code umleiten, wenn ein Codeblock die Benutzereingabe normalerweise nicht direkt / explizit in der von Ihnen verwendeten Sprache abrufen kann.
- Ihr Code sollte den zurückgegebenen Wert des eingefügten Codes ausgeben, wenn ein Codeblock normalerweise nicht in der Lage ist, Dinge direkt / explizit in der von Ihnen verwendeten Sprache auszugeben.
- Wenn Sie den zurückgegebenen Wert drucken und er in der von Ihnen verwendeten Sprache eingegeben ist, sollte der zurückgegebene Typ 2 verschiedene, praktisch mögliche Werte haben können. Beispielsweise können Sie den Typ
struct {}
oderstruct {private:int x;}
in C ++ nicht verwenden .
Dies ist ein Beliebtheitswettbewerb. Die Antwort mit der höchsten gültigen Bewertung (damit niemand einen Fehler entdeckt oder alle Fehler behoben werden) gewinnt.
Klarstellungen
- Sie sollten den Code nicht in der Textform ändern, sondern können die Syntax ändern, bevor der Code interpretiert oder kompiliert wird.
- Sie können andere Dinge tun, während der Code ausgeführt wird. Der Grund dafür, dass es die Kriterien nicht erfüllt, sollte im eingefügten Code selbst liegen. Es kann an der Störung eines anderen Threads liegen, aber nicht nur von einem anderen Thread getötet werden.
- Alle Spezifikationen bedeuten im Grunde genommen, dass es grammatikalisch wahrscheinlich ist, dass sie die Kriterien erfüllen, wenn nicht alle eingebauten Funktionen geändert wurden, dies jedoch nicht tatsächlich tun. Es ist in Ordnung, wenn Sie nicht-grammatikalische Problemumgehungen finden, z. B. die korrekte Übergabe der Parameter an den Codeblock, aber dafür sorgen, dass sie nicht in irgendeiner Weise verwendet werden können.
- Auch hier muss der eingefügte Code tatsächlich ausgeführt werden. Code nach einer Endlosschleife oder einem Absturz wird als "nicht tatsächlich ausgeführt" betrachtet und ist daher nicht gültig . Diese Antworten mögen interessant sein, aber es gibt bereits einige andere Endlosschleifen- oder Absturzfragen auf dieser Website, und Sie finden möglicherweise eine passendere Antwort. Wenn nicht, stellen Sie eine neue Frage. Beispiele für diese Fragen sind:
Bestenliste
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>