Essayez d’écrire du code dans votre langue et faites en sorte qu’il ne réponde plus à notre critère de langage de programmation .
Un langage répond à nos critères (version simplifiée pour ce défi) d’être un langage de programmation si:
- Il peut lire les entrées utilisateur représentant des nuplets d’entiers positifs d’une certaine manière.
- Il peut générer au moins deux résultats possibles différents en fonction de l'entrée.
- Il peut prendre deux entiers positifs et les ajouter (et le résultat peut affecter la sortie).
- Il peut prendre un entier positif et décider s’il s’agit d’un nombre premier (et le résultat peut affecter la sortie).
- Aux fins de ce défi, tout type de sortie qui n'est pas une méthode de sortie autorisée pour un défi normal est ignoré. Donc, peu importe que le programme puisse aussi jouer un morceau de musique, ou poster via HTTP, etc.
- Mise à jour: vous pouvez également choisir une ou plusieurs des méthodes de sortie autorisées et ignorer toutes les autres. Mais vous devez utiliser la même définition partout dans les critères suivants. Et si votre programme peut désactiver plusieurs méthodes de sortie, cela vaut plus de votes positifs.
Des exemples tels que le rendre impossible à sortir ou la désactivation de toutes les constructions de boucle afin qu'il ne puisse pas effectuer de test de primalité et s'assurer que l'utilisateur ne peut pas les réactiver.
Vous devriez laisser une place pour insérer un nouveau code. Par défaut, c'est à la fin de votre code. Si nous envisageons de placer le code source à cet endroit dans votre réponse et d'exécuter le code complet en tant que programme complet interprétant une nouvelle langue, cette langue ne devrait pas satisfaire aux critères.
Mais le code inséré doit être exécuté comme un langage répondant aux critères:
- Le code inséré doit être grammaticalement identique à quelque chose (disons qu'il s'agit d'un bloc de code dans les critères suivants) qui satisfait généralement les critères, du point de vue de quiconque veut écrire un surligneur de syntaxe. Donc, cela ne peut pas être dans une chaîne, un commentaire, etc.
- Le code inséré doit être réellement exécuté, de manière à répondre aux critères. Donc, cela ne peut pas être dans une fonction non utilisée ou
sizeof
en C, vous ne pouvez pas exécuter seulement une partie non fonctionnelle du code, et vous ne pouvez pas la mettre après une boucle infinie, etc. - Vous ne pouvez pas limiter le nombre de programmes grammaticalement corrects générés de cette manière. S'il existe déjà quelque chose comme une limite de longueur dans la langue que vous utilisez, cela ne devrait pas satisfaire aux critères même si cette limite est supprimée.
- Vous ne pouvez pas modifier ou "utiliser" le contenu des entrées / sorties, mais vous pouvez empêcher leur accès.
- Ces critères ne s'appliquent généralement qu'aux langues sans I / O explicite:
- Votre code doit rediriger la saisie de l'utilisateur (qui contient des informations de longueur arbitraire) vers le code inséré, si un bloc de code n'est généralement pas en mesure d'obtenir la saisie de l'utilisateur directement / explicitement dans la langue que vous utilisez.
- Votre code doit imprimer la valeur renvoyée du code inséré, si un bloc de code n'est généralement pas en mesure de produire des éléments directement / explicitement dans la langue que vous utilisez.
- Si vous imprimez la valeur renvoyée et que celle-ci est saisie dans la langue que vous utilisez, le type renvoyé devrait pouvoir avoir 2 valeurs pratiquement possibles. Par exemple, vous ne pouvez pas utiliser le type
struct {}
oustruct {private:int x;}
en C ++.
C'est un concours de popularité. La réponse valide la plus votée (personne n'a donc repéré une erreur ou toutes les erreurs sont corrigées) gagne.
Des clarifications
- Vous ne devez pas modifier le code dans le formulaire texte, mais vous pouvez modifier la syntaxe avant que le code ne soit interprété ou compilé.
- Vous pouvez faire d'autres choses pendant que le code est en cours d'exécution. Mais la raison pour laquelle il ne répond pas aux critères devrait être dans le code inséré lui-même. Cela peut provoquer des erreurs à cause de l'interférence d'un autre thread, mais pas seulement être tué par un autre thread.
- Toutes les spécifications signifient fondamentalement qu'il devrait être grammaticalement conforme aux critères si toutes les fonctions intégrées ne sont pas modifiées mais ne le sont pas réellement. C'est bien si vous trouvez des solutions de contournement non grammaticales, telles que le fait de transmettre correctement les paramètres au bloc de code, mais ne les utilisez pas d'une manière ou d'une autre.
- Encore une fois, le code inséré doit être réellement exécuté. Le code après une boucle infinie ou un crash est considéré comme "non réellement exécuté", donc non valide . Ces réponses pourraient être intéressantes, mais il existe déjà une autre boucle infinie ou des questions bloquantes sur ce site, et vous en trouverez peut-être une plus appropriée. Sinon, envisagez de poser une nouvelle question. Voici des exemples de ces questions:
Classement
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>