Zyklische Zeichenfolgen, versteckte Programme

13

Schreiben Sie 3 Programme, die die folgende Aufgabe ausführen:

A, B, C-Quellcodes dieser drei Programme seien;

  • Wenn A läuft, wird BC als Ausgabe erzeugt.
  • Wenn B läuft, wird CA erzeugt.
  • wenn C läuft, wird AB erzeugt;

Jedes Programm schreibt also einen String (der für jedes Programm durchlaufen wird) und verbirgt sich davor.

Zusätzliche, aber wesentliche Einschränkungen:

  • Standardlücken sind verboten;
  • Jedes Programm muss mindestens 1 Byte lang sein.
  • Jedes der drei Programme muss in einer anderen Sprache geschrieben sein.

Es wäre schön, wenn Ihr Beitrag dieses Format hätte:

Sprache A (Größe von A) - Sprache B (Größe von B) - Sprache C (Größe von C) - Punktzahl

A B C
<extra stuff>

Gewinner ist jemand, der die Mindestpunktzahl, dh die Summe der Größen von drei Programmen, erreicht.

Blex
quelle
Es wäre schöner, wenn das Ergebnis als letztes erscheinen würde (passend zum Bestenlisten-Skript)
Leaky Nun,
1
Verbunden. Verbunden.
Dead Possum
7
Ich würde Termine nicht empfehlen.
Erik der Outgolfer
Jede anforderung über A,B und Cverschieden Strings? Können zum Beispiel die drei Saiten gleich sein? Wenn das Programm nach der Ausgabe eine neue Zeile ausgibt, können wir das nicht zählen?
Luis Mendo
Es ist nicht erforderlich A, B, Canders zu sein. Zeilenumbrüche werden als Teil der Ausgabe gezählt, sodass Zeilenumbrüche in der Zeichenfolge Teil des Programms sind.
Blex

Antworten:

3

Befunge-98 , Gol> <> und Wumpus 47 * 3 = 141 Bytes

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

Probieren Sie es in Befunge! Probieren Sie es in> <>! Probieren Sie es in Wumpus!

Richtig, es ist dreimal dasselbe Programm! Wenn es in einer der oben genannten Sprachen ausgeführt wird, wird der Quellcode zweimal gedruckt. Dies sind die beiden anderen Programme, die verkettet sind.

Wie es funktioniert:

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
Scherzen
quelle
0

JScript, VBScript, Windows Batch, 345 Byte

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)

Nennen Sie die Datei .js, dann wird .vbs und dann .bat erstellt.

Peter Ferrie
quelle