Uno de mis tipos favoritos de desafíos en este sitio son los desafíos de fuente restringida . Estos desafíos imponen una restricción manejable por computadora que deben pasar las fuentes de posibles respuestas. Me gustan tanto estos desafíos que llevo algún tiempo trabajando en un lenguaje de golf diseñado para ganar en estos desafíos. Ahora quiero extenderte el desafío. Su tarea es diseñar un lenguaje para resolver una variedad de tareas de origen restringido. Llegará el momento de diseñar e implementar un lenguaje, momento en el que los cambios y las nuevas incorporaciones no serán competitivas y todas las presentaciones se enfrentarán en un desafío de desafíos de fuentes restringidas .
Tanteo
Antes de publicar el desafío, elaboraré una lista de desafíos simples para resolver y una lista de restricciones de origen a seguir. Por cada combinación de desafío y restricciones de fuente, su idioma puede ganar entre 0 y 2 puntos. (Habrá 10 desafíos y 10 restricciones que conducen a 100 combinaciones totales) A puntajes de idioma
- 1 punto si puede completar la tarea con la restricción en menos de 150 bytes
- 2 puntos si la solución es la solución más corta de cualquier idioma que compita (ambos idiomas obtendrán 2 puntos en caso de empate)
- 0 puntos si no pueden crear un programa que complete la tarea bajo la restricción en menos de 150 bytes.
Su puntaje será la suma de todos los puntos ganados en cada posible enfrentamiento. El objetivo es obtener el puntaje más alto. Otras personas pueden ayudarlo a desarrollar sus soluciones para cada desafío y mejorar su puntaje.
Revelaré 4 elementos de cada lista al momento de la publicación y 8 adicionales una semana después de la segunda respuesta. Solo se le permitirá obtener 1 punto (el envío más corto no cuenta) en cualquier coincidencia que tenga ambas partes reveladas antes de la primera semana. De esta manera, puede tener una idea de qué tan bien se acumula su idioma mientras trabaja en él, pero no puede diseñar su idioma simplemente para incorporar todos los desafíos y restricciones.
Incluiré un hash de las categorías previstas con la pregunta para que pueda estar seguro de que no las cambio durante la semana para beneficiar a ninguna de las partes. Además, no le diré a nadie los parámetros ocultos hasta que termine la semana ni competiré en el desafío.
Idiomas preexistentes
Este desafío está abierto a todos los idiomas preexistentes, sin embargo, si usted no es el autor del idioma, haga su respuesta en un wiki de la comunidad para que otros miembros de nuestra comunidad puedan contribuir directamente al puntaje. Las banderas de línea de comando no necesitan obedecer ninguna restricción, sin embargo, cada programa debe ejecutarse con los mismos argumentos de línea de comando (es decir, debe elegir uno y seguirlo). Estos no se suman a su recuento de bytes.
Desafíos y restricciones.
Se aplican restricciones a la codificación ASCII de sus archivos binarios, independientemente de la página de códigos que utilice. Algunos de estos enlaces a una pregunta existente en el sitio del cual heredan sus requisitos de io para desafíos y restricciones de fuente para restricciones. Puede ignorar cualquier cosa que "prohíba las construcciones" o anule los meta consensos existentes en cualquiera de los desafíos vinculados.
Como advertencia: no intente gobernar a un abogado; Sé que es una competencia, pero debido a que hay esencialmente 100 desafíos diferentes de sub-desafíos y simplemente no puedo garantizar que todos sean completamente sin problemas. Solo trata de divertirte.
Desafíos
Restricciones
Los bytes están en orden ascendente (cada byte es mayor que el anterior)
El código fuente es un palíndromo
Los criterios restantes tienen un hash sha512 de:
4de5eca33c6270798606cf1412820c4ce112d8b927ef02877f36795b2b15ffacca51ea598fa89b8d6bc9f4cde53810e0e7ade30e536e52e28f40a6a13841dfc5 -
fuente
Respuestas:
Anchura
El intérprete sigue siendo un trabajo en progreso (todavía tengo varias ranuras de comando no utilizadas). El repositorio, con más documentación, se puede encontrar aquí .
Dennis agregó Width a TIO hace menos de un minuto: ¡ Pruébelo en línea!
El ancho es un lenguaje esotérico basado en la pila que desarrollé recientemente en base a las ideas que arrojé por primera vez en esta pregunta . Se basa completamente en el ancho, más o menos, de una letra en una fuente "regular". Los únicos caracteres que hacen algo son letras, mayúsculas y minúsculas. Todos los demás personajes son ignorados. Dividí las letras en 10 categorías de ancho diferentes, que forman las 10 acciones diferentes posibles en Ancho:
2
,5
y6
proporcionan acceso a los comandos, la mayoría de los cuales interactúan con la pila. Se puede encontrar más información en lainfo.txt
página del repositorio de Github.Este es el código Python del intérprete. Todavía tengo varios comandos para agregar, y estoy considerando cómo trabajar con el manejo de errores, pero de lo contrario debería estar completo. (También voy a agregar una bandera en algún momento para permitir la prueba con una sintaxis más abstracta, porque de lo contrario este lenguaje es un gran dolor para trabajar)
fuente