Segunda caja de herramientas de MacGyver

16

En esta pregunta, cada respuesta obtendrá una "caja de herramientas" que se puede utilizar para construir un programa / función. La caja de herramientas constará de dos cosas:

  • una lista de lenguajes de programación

  • una lista de caracteres válidos

Debe escribir un programa / función válido en uno de los idiomas proporcionados utilizando solo los caracteres en la caja de herramientas. Su programa / función debería generar el número de respuestas ya presentes en esta pregunta.

Una vez que haya escrito y publicado una respuesta, el idioma y los caracteres que ha utilizado se eliminarán de la caja de herramientas y se agregará aleatoriamente 1 idioma nuevo y 8 caracteres nuevos para usar como caja de herramientas para la próxima respuesta.

Reglas

  • Cada respuesta:

    • Produzca el número de respuestas válidas que se presentan antes.
    • Contiene un subconjunto de los caracteres proporcionados en la caja de herramientas para esa respuesta. (se permiten repeticiones)
    • Estar en uno de los idiomas de la caja de herramientas proporcionada
  • La siguiente caja de herramientas será determinada por este programa de Python. Para generar la siguiente caja de herramientas, coloque los idiomas y caracteres restantes junto con la identificación de la publicación de la última respuesta.

  • La lista de idiomas aquí es todos los idiomas disponibles en probarlo en línea en el momento de esta publicación. Los personajes tienen códigos de caracteres 0-127.

  • Puede escribir un programa completo o una función como respuesta. Dado que los REPL son idiomas diferentes, no se permitirán. (use la versión TIO de cada idioma)

  • Si un idioma usa una codificación especial, los caracteres deben interpretarse como bytes (decodificados desde ASCII y rellenados con un cero).

  • La caja de herramientas inicial se asignará al azar a partir de esta identificación de publicación de preguntas ( 128464 ), habrá 7 idiomas para comenzar y agregaré los caracteres echoprint0y ascii 0-31 de forma gratuita para que la gente comience.

  • No puede responder dos veces seguidas

Puntuación

Cada vez que una persona responde, obtendrá una cantidad de puntos por su respuesta. El objetivo es obtener tantos puntos como sea posible. Para obtener una respuesta en el idioma X, obtendrá tantos turnos como el idioma X no se haya utilizado en la caja de herramientas. Por ejemplo, la primera persona en responder obtendrá 1 punto porque el idioma se acaba de agregar a la caja de herramientas. No necesariamente habrá un final y no aceptaré ninguna respuesta.

Deportivo

Esta es una competencia, pero te animo a que pongas la diversión por encima de ganar sin dejar de ser competitivo (si pudiera hacer que el criterio de ganador sea "divertido", lo haría). Algunas cosas que no son divertidas:

  • Usando intencionalmente caracteres, no necesita evitar futuras respuestas.
  • Intentando jugar con el sistema de identificación posterior para hacer que las futuras cajas de herramientas sean más difíciles de usar.
  • Intentando jugar con el sistema de identificación posterior para hacer que las futuras cajas de herramientas sean más fáciles de usar.

No puedo evitar que nadie haga estas cosas, pero rechazaré cualquier respuesta que sospeche que está haciendo esto.

En una nota más positiva, aquí hay algunas cosas que son deportivas y alentadoras:

  • Coordinación con otros usuarios en el chat.
  • Guardar caracteres para idiomas más duros o restrictivos

Esta es una segunda iteración de un desafío que se encuentra aquí . Mejora una serie de problemas con el primero. Aquí hay un meta discutiendo estas preguntas.

Post Rock Garf Hunter
fuente
¿Cuál es la primera caja de herramientas?
CalculatorFeline
@CalculatorFeline Está vinculado en la pregunta, se siembra con el ID de la pregunta.
Post Rock Garf Hunter
1
@tuskiomi la pregunta anterior y la pregunta nueva son creadas por la misma persona, y es apropiado cerrar las preguntas anteriores como duplicados de preguntas nuevas y mejores.
Stephen
2
@tuskiomi La mayor diferencia es la cantidad de caracteres agregados al sandbox cada vez. Anteriormente eran 12, que rápidamente se descontrolaron, lo que significa que prácticamente todas las respuestas tenían disponible todo el ASCII. Lo bajé a 8, que era el número promedio de caracteres utilizados por todas las respuestas en la última versión. Estoy de acuerdo en que la diferencia en la semilla y la puntuación son cambios menores, pero la disminución en los caracteres es la razón por la que hice una segunda iteración.
Post Rock Garf Hunter
1
Estoy bastante seguro de que esto es imposible. Los programas Str requieren un ;(no en la caja de herramientas) para hacer algo cuando no se le da entrada. Los programas Condit y Tcl requieren un espacio (no en toobox) como parte de la sintaxis. Esquema necesita (. Brain-Flak no puede funcionar por razones obvias (solo el personaje en la caja de herramientas que entiende es )). Java 8 necesita un {(no en la caja de herramientas) para declarar una función. Eso deja solo máximos, que no creo que puedan imprimir cosas sin "imprimir" o declarar una función sin el uso de paréntesis.
pppery

Respuestas:

8

Esto es imposible

Revisando todos los idiomas en el langbox:

  1. El lenguaje de programación tcl consiste en palabras separadas por espacios. El carácter de espacio no está en la caja de herramientas, por lo que no se pueden escribir programas válidos.
  2. Los programas Str por defecto transforman la entrada. Para que puedan hacer algo cuando no se les da entrada, ;se requiere el carácter, que no está en la caja de herramientas.
  3. El único medio para que un programa en schema-chez haga algo es llamar a una función usando paréntesis. Por lo tanto, todos los programas de esquema-chez necesitan el (carácter, que no está en la caja de herramientas
  4. Los programas Brain-Flak necesitan corchetes equilibrados. El único carácter de paréntesis en la caja de herramientas es ), por lo que no es posible ningún programa que contenga paréntesis equilibrados.
  5. Similar al esquema, los programas máximos requieren paréntesis para hacer cualquier cosa.
  6. Los programas Java requieren las secuencias de caracteres {o ->para declarar una función (y todos los programas completos necesitan al menos una función), ninguno de los cuales está en la caja de herramientas.
  7. Los programas Condit requieren la palabra when, que contiene el carácter "e", que no está en la caja de herramientas.

Se permiten pruebas de imposibilidad como respuestas

pppery
fuente