Intente escribir un código en su lenguaje y haga que ya no satisfaga nuestros criterios de ser un lenguaje de programación .
Un lenguaje satisface nuestros criterios (versión simplificada para este desafío) de ser un lenguaje de programación si:
- Puede leer la entrada del usuario que representa tuplas de enteros positivos de alguna manera.
- Puede generar al menos dos resultados posibles diferentes según la entrada.
- Puede tomar dos enteros positivos y agregarlos (y el resultado puede afectar la salida).
- Puede tomar un número entero positivo y decidir si es primo (y el resultado puede afectar la salida).
- Para el propósito de este desafío, se ignora cualquier tipo de salida que no sea un método de salida permitido para un desafío normal . Por lo tanto, no importa si el programa también puede reproducir una pieza musical, o publicar a través de HTTP, etc.
- Actualización: también puede elegir uno o algunos de los métodos de salida permitidos e ignorar todos los demás. Pero debe usar la misma definición en todas partes en los siguientes criterios. Y si su programa puede deshabilitar más de un método de salida, eso merece más votos a favor.
Ejemplos como hacer que no pueda salir, o deshabilitar todas las construcciones de bucle para que no pueda hacer una prueba de primalidad y asegurarse de que el usuario no pueda volver a habilitarlas.
Debe dejar un lugar para insertar un nuevo código. Por defecto, está al final de su código. Si consideramos poner el código fuente en ese lugar en su respuesta y ejecutar el código completo como un programa completo, el intérprete de un nuevo idioma, ese idioma no debería satisfacer los criterios.
Pero el código insertado debe ejecutarse de tal manera que un lenguaje que satisfaga los criterios:
- El código insertado debe ser gramaticalmente igual que algo (digamos que es un bloque de código en los siguientes criterios) que generalmente satisfacen los criterios, desde la perspectiva de quien quiera escribir un resaltador de sintaxis. Por lo tanto, no puede estar en una cadena, comentario, etc.
- El código insertado debe ejecutarse realmente, de una manera que se supone que satisface los criterios. Por lo tanto, no puede estar en una función no utilizada o
sizeof
en C, no puede ejecutar solo una parte no funcional en el código, y no puede colocarla después de un bucle infinito, etc. - No puede limitar el número de posibles programas gramaticalmente correctos generados de esta manera. Si ya hay algo así como un límite de longitud en el idioma que está utilizando, no debería satisfacer los criterios, incluso si se elimina este límite.
- No puede modificar o "usar" el contenido de entrada / salida, pero puede evitar que se acceda a ellos.
- Estos criterios generalmente solo se aplican a idiomas sin E / S explícitas:
- Su código debe redirigir la entrada del usuario (que contiene información de longitud arbitraria) al código insertado, si un bloque de código generalmente no puede obtener la entrada del usuario directa / explícitamente en el idioma que está utilizando.
- Su código debe imprimir el valor devuelto del código insertado, si un bloque de código generalmente no puede generar cosas directamente / explícitamente en el idioma que está utilizando.
- En caso de que imprima el valor devuelto y esté escrito en el idioma que está utilizando, el tipo devuelto debería poder tener 2 valores prácticamente posibles diferentes. Por ejemplo, no puede usar el tipo
struct {}
ostruct {private:int x;}
en C ++.
Este es un concurso de popularidad. La respuesta válida más votada (para que nadie haya detectado un error o se hayan solucionado todos los errores) gana.
Aclaraciones
- No debe modificar el código en forma de texto, pero puede cambiar la sintaxis antes de interpretar o compilar el código.
- Puede hacer otras cosas mientras se ejecuta el código. Pero la razón por la que no cumple con los criterios debería estar dentro del código insertado. Puede producirse un error debido a la interferencia de otro hilo, pero no solo ser eliminado por otro hilo.
- Básicamente, todas las especificaciones significan que debería ser gramaticalmente probable que satisfaga los criterios si no se modificaron todas las funciones incorporadas, pero en realidad no lo hacen. Está bien si encuentra soluciones alternativas no gramaticales, como pasar los parámetros al bloque de código correctamente, pero hacer que no puedan usarse de alguna manera.
- Nuevamente, el código insertado debe ejecutarse realmente. El código después de un bucle infinito o bloqueo se considera "no ejecutado realmente", por lo tanto, no es válido . Esas respuestas pueden ser interesantes, pero ya hay otras preguntas de bucle infinito o fallas en este sitio, y puede encontrar una más adecuada para responder. Si no, considere hacer una nueva pregunta. Ejemplos de esas preguntas son:
Tabla de clasificación
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>