Cordes cycliques, programmes cachés

13

Écrivez 3 programmes qui effectuent la tâche suivante:

Soit A, B, C les codes sources de ces trois programmes;

  • si A court BC est produit en sortie,
  • si B s'exécute CA est produit,
  • si C court AB est produit;

donc chaque programme écrit une chaîne (cyclée pour chaque programme) et s'en cache.

Contraintes supplémentaires mais essentielles:

  • les failles standard sont interdites;
  • chaque programme doit avoir une longueur d'au moins 1 octet;
  • chacun des trois programmes doit être écrit dans une langue différente;

Ce serait bien si votre soumission avait ce format:

Langue A (taille de A) - Langue B (taille de B) - Langue C (taille de C) - Score

A B C
<extra stuff>

Le gagnant est quelqu'un qui obtient le score minimum, qui est la somme des tailles de trois programmes.

Blex
la source
Il serait plus agréable que le score arrive en dernier (pour correspondre au script du classement)
Leaky Nun
7
Je ne recommanderais pas de délais.
Erik the Outgolfer
Toute exigence au sujet A, Bet ce Csont des chaînes différentes? Par exemple, les trois chaînes peuvent-elles être identiques? Si le programme imprime une nouvelle ligne après la sortie, ne pouvons-nous pas compter cela?
Luis Mendo
Il n'est pas nécessaire A, B, Cêtre différent. Les sauts de ligne sont comptés comme faisant partie de la sortie, donc les sauts de ligne dans la chaîne font partie du programme.
Blex

Réponses:

3

Befunge-98 , Gol> <> et Wumpus 47 * 3 = 141 octets

"r75*1-47*0.@o&r84#o&]=74#]=\`/KHj '!_@#,k.'g00

Essayez-le dans Befunge! Essayez-le dans> <>! Essayez-le dans Wumpus!

C'est vrai, c'est le même programme trois fois! Lorsqu'il est exécuté dans l'une des langues ci-dessus, il imprime deux fois le code source, qui est les deux autres programmes concaténés.

Comment ça fonctionne:

Befunge code:
  "r                               j '!_@#,k.'g00

  "   Wrapping string literal over code
   r  Reflect the pointer
  "   Wrapping string literal
                                              g00   Fetch " from cell 0,0 
                                          ,k.'      Print 47 characters
                                       _@#          If the next character is 0, exit
                                      !             Otherwise, set it to 0
                                   j '              And jump back to the beginning


Gol><> code:
  "r75*1-47*0.                \`/KH

  "             Wrapping string literal
   r            Reverse stack
    75*1-       Push "
         47*0.  Jump to cell 28,0
                              \  Continue right
                               `/K   Duplicate the top 47 characters on the stack
                                  H  Halt and output stack contents

Wumpus code:
  "r75*1-47*0.@o&r84#o&]=74#]=\

  "r75*1-47*0.  Exact same function as the ><> code, but with a bouncing string literal
                              \  Reflect left
                            ]=   Push a copy of the " to the bottom of the stack
                         74#     Push 47
                       ]=        Push a copy of the 47 to the bottom of the stack
                     o&          Print the top 47 characters
                  84#            Push a '0' to make up for the missing 0 at the end
               o&r               Reverse the stack and print the top 47 characters
              @                  And terminate
Jo King
la source
0

JScript, VBScript, Windows Batch, 345 octets

a=new ActiveXObject("scripting.filesystemobject");b=a.opentextfile(".js");c=b.readline();d=b.readline();a.createtextfile(".bat").write("@echo "+d.substr(2)+">.vbs\n@echo '"+c+">>.vbs")
//set a=createobject("scripting.filesystemobject"):set b=a.opentextfile(".vbs"):c=b.readline:d=b.readline:a.createtextfile(".js").write(mid(d,2)+chr(10)+"//"+c)

Nommez le fichier .js, puis .vbs puis .bat seront créés.

peter ferrie
la source