Cyclic Polyglot Challenge
Ceci est le fil des flics. Vous pouvez trouver le fil des voleurs ici .
Polyglotte cyclique
Un polyglotte cyclique à N éléments est un programme complet qui peut être exécuté dans N langues différentes. Dans chaque langue, lorsque le programme est exécuté sans entrée (éventuellement sous réserve de cette exception ), il doit afficher le nom d'une langue dans STDOUT. Plus précisément, si le programme est exécuté dans la Kème langue, il doit afficher le nom de la (K + 1) ème langue. Si le programme est exécuté dans la Nième langue (c'est-à-dire la dernière langue dans un cycle à N éléments), il doit afficher le nom de la première langue.
Un exemple pourrait être utile.
a = [[ v = 7, puts('Befunge') ]]
__END__
= print("Ruby")
-->*+:292*++,,@
--3 9
--7 *
--^,:-5<
L'exécution de ce programme avec Lua imprime la chaîne "Ruby". L'exécution de ce programme dans Ruby imprime la chaîne "Befunge". L'exécution de ce programme dans Befunge imprime la chaîne "Lua", terminant le cycle. Ce programme constitue un cycle de 3 composé de Lua, Ruby et Befunge.
La même langue ne peut pas apparaître deux fois dans un cycle, et différentes versions de la même langue (telles que Python 2 et Python 3) ne peuvent pas apparaître dans le même cycle.
Flics
Votre défi est d'écrire un polyglotte N-cyclique, où N est au moins 2. Ensuite, vous devez ajouter, remplacer et supprimer un certain nombre de caractères dans le programme pour produire un polyglotte M-cyclique, où M est strictement supérieur à N Vous devez ensuite publier le polyglotte N-cyclique le plus court (et les langues dans lesquelles il s'exécute), ainsi que le nombre de caractères que vous avez modifiés pour produire le polyglotte le plus long. Votre score est N, le nombre de langues dans votre cycle plus court.
Les voleurs essaieront d'identifier votre cycle plus long. Si, après sept jours, personne n'a réussi à résoudre votre solution, vous devez modifier votre réponse en déclarant qu'elle est sûre. Vous devez également publier votre polyglotte M-cyclique plus long à ce moment.
Voleurs
Étant donné le polyglotte N-cyclique d'un policier et le nombre de caractères qu'il a ajoutés pour produire un cycle polyglotte plus grand, votre objectif est de produire ce cycle plus grand. Si vous pouvez produire un cycle plus long en ajoutant, supprimant ou remplaçant autant de caractères que le flic ou moins de caractères , vous avez craqué le polyglotte du flic. Votre score est la longueur du nouveau cycle que vous avez créé. Votre nouveau polyglotte n'a pas besoin d'être identique ou même similaire au polyglotte secret du flic; il doit seulement être plus grand que celui existant.
Votre solution peut également être fissurée. Si un autre voleur arrive et produit un cycle strictement plus long que le vôtre, à partir du même polyglotte du flic, il vous a volé vos points.
Langages de programmation valides
Comme ce défi implique indirectement de deviner les langages de programmation utilisés par d'autres participants, la définition d'un langage de programmation aux fins de ce défi sera un peu plus stricte que la définition habituelle. Un langage de programmation utilisé dans ce défi doit satisfaire à toutes les conditions suivantes.
- Le langage doit satisfaire aux exigences habituelles de PPCG pour un langage de programmation .
- La langue doit avoir un article Wikipedia , un article Esolangs ou un article Rosetta Code au moment où ce défi a été publié.
- La langue doit avoir un interprète ou un compilateur disponible gratuitement.
Notes finales
- Le code que vous écrivez doit être un programme autonome dans toutes les langues dans lesquelles il est destiné à s'exécuter. Les fonctions ou les extraits de code ne sont pas autorisés.
- Votre programme ne recevra aucune contribution via STDIN. De même, votre programme ne doit rien imprimer sur STDERR.
- Le score d'un flic est le nombre de langues dans le cycle du polyglotte qu'ils ont posté. Le policier doit publier les langues dans lesquelles le polyglotte publié s'exécute correctement, ainsi que le nombre de caractères qu'ils ont ajoutés pour produire un polyglotte plus long. Ils ne sont pas responsables de la publication des langues pendant les périodes de polyglotte cachées plus longues jusqu'à ce que leur réponse soit sûre.
- Le score d'un voleur est le nombre de langues dans lesquelles le polyglotte modifié s'exécute. Comme pour le flic, le voleur doit publier la liste des langues dans lesquelles le polyglotte s'exécute correctement.
- Le nombre de caractères modifiés doit être calculé en distance Levenshtein.
la source
Réponses:
C (gcc) , 126 octets
M=N+1
Levenshtein(polyglot(M),polyglot(N))
est de 36 octetsEssayez-le en ligne!
la source