Desafío políglota cíclico
Este es el hilo policial. Puedes encontrar el hilo de los ladrones aquí .
Políglota cíclica
Un políglota cíclico de elemento N es un programa completo que se puede ejecutar en N idiomas diferentes. En cada idioma, cuando el programa se ejecuta sin entrada (posiblemente sujeto a esta excepción ), debe imprimir el nombre de un idioma en STDOUT. Específicamente, si el programa se ejecuta en el idioma K, debe imprimir el nombre del idioma (K + 1). Si el programa se ejecuta en el enésimo idioma (es decir, el idioma final en un ciclo de N elementos), debe imprimir el nombre del primer idioma.
Un ejemplo puede ser útil.
a = [[ v = 7, puts('Befunge') ]]
__END__
= print("Ruby")
-->*+:292*++,,@
--3 9
--7 *
--^,:-5<
Ejecutar este programa con Lua imprime la cadena "Ruby". Ejecutar este programa en Ruby imprime la cadena "Befunge". Ejecutar este programa en Befunge imprime la cadena "Lua", completando el ciclo. Este programa constituye un ciclo de 3 que consta de Lua, Ruby y Befunge.
El mismo idioma no puede aparecer dos veces en un ciclo, y las diferentes versiones del mismo idioma (como Python 2 y Python 3) no pueden aparecer en el mismo ciclo entre sí.
Policías
Su desafío es escribir un políglota N-cíclico, donde N es al menos 2. Luego, debe agregar, reemplazar y eliminar cierto número de caracteres al programa para producir un políglota M-cíclico, donde M es estrictamente mayor que N Luego, debe publicar el políglota N-cíclico más corto (y los idiomas en los que se ejecuta), así como la cantidad de caracteres que cambió para producir el políglota más largo. Su puntaje es N, la cantidad de idiomas en su ciclo más corto.
Los ladrones intentarán identificar tu ciclo más largo. Si, después de siete días, nadie ha descifrado con éxito su solución, debe editar su respuesta declarando que es segura. También debe publicar su políglota M-cíclico más largo en este momento.
Ladrones
Dado el políglota N-cíclico de un policía y la cantidad de caracteres que agregaron para producir un ciclo políglota más grande, su objetivo es producir ese ciclo más grande. Si puede producir un ciclo más largo agregando, eliminando o reemplazando tantos caracteres como lo hizo el policía o menos caracteres , habrá descifrado el políglota del policía. Su puntaje es la duración del nuevo ciclo que ha creado. Su nuevo políglota no tiene por qué ser igual o similar al políglota secreto del policía; solo necesita ser más grande que el existente.
Su solución también puede estar agrietada. Si aparece otro ladrón y produce un ciclo estrictamente más largo que el tuyo, comenzando desde el políglota del mismo policía, te han robado tus puntos.
Lenguajes de programación válidos
Dado que este desafío implica indirectamente adivinar los lenguajes de programación utilizados por otros participantes, la definición de un lenguaje de programación para los propósitos de este desafío será un poco más estricta que la definición habitual. Un lenguaje de programación utilizado en este desafío debe cumplir con todas las siguientes condiciones.
- El lenguaje debe satisfacer los requisitos habituales de PPCG para un lenguaje de programación .
- El idioma debe tener un artículo de Wikipedia , un artículo de Esolangs o un artículo de Rosetta Code en el momento en que se publicó este desafío.
- El idioma debe tener un intérprete o compilador disponible gratuitamente.
Notas finales
- El código que escriba debe ser un programa independiente en todos los idiomas en los que está destinado a ejecutarse. No se permiten funciones ni fragmentos de código.
- Su programa no recibirá información a través de STDIN. Del mismo modo, su programa no debería imprimir nada en STDERR.
- El puntaje de un policía es la cantidad de idiomas en el ciclo del políglota que publicaron. El policía debe publicar los idiomas en los que se ejecuta correctamente el políglota publicado, así como la cantidad de caracteres que agregaron para producir un políglota más largo. Son no responsable de la publicación de los idiomas, las carreras más largas ocultas en políglotas hasta que su respuesta es seguro.
- El puntaje de un ladrón es la cantidad de idiomas en los que se ejecuta el políglota modificado. Al igual que con el policía, el ladrón debe publicar la lista de idiomas en los que se ejecuta correctamente el políglota.
- El número de caracteres cambiados debe calcularse en la distancia de Levenshtein.
fuente
Respuestas:
C (gcc) , 126 bytes
M=N+1
Levenshtein(polyglot(M),polyglot(N))
es de 36 bytesPruébalo en línea!
fuente