Cykliczne ciągi, ukryte programy

13

Napisz 3 programy wykonujące następujące zadanie:

Niech kody źródłowe A, B, C tych trzech programów;

  • jeśli A działa BC jest produkowany jako dane wyjściowe,
  • jeśli B uruchamia CA, jest produkowany,
  • jeśli C działa AB, produkowany jest AB;

więc każdy program zapisuje ciąg znaków (cyklicznie dla każdego programu) i ukrywa się przed nim.

Dodatkowe, ale istotne ograniczenia:

  • standardowe luki są zabronione;
  • każdy program musi mieć co najmniej 1 bajt;
  • każdy z trzech programów musi być napisany w innym języku;

Byłoby miło, gdyby Twoje zgłoszenie miało ten format:

Język A (rozmiar A) - Język B (rozmiar B) - Język C (rozmiar C) - Wynik

A B C
<extra stuff>

Zwycięzcą jest ktoś, kto uzyska minimalny wynik, który jest sumą rozmiarów trzech programów.

Blex
źródło
Byłoby lepiej, gdyby wynik był ostatni (pasujący do skryptu tabeli liderów)
Leaky Nun
7
Nie polecałbym terminów.
Erik the Outgolfer,
Wszelkie wymagania o A, Bi Csą różne struny? Na przykład, czy trzy ciągi mogą być takie same? Jeśli program wypisuje nowy wiersz po wyjściu, czy nie możemy tego policzyć?
Luis Mendo,
Nie jest wymagane A, B, Csą różne. Nowe linie są liczone jako część wyniku, więc nowe linie w ciągu są częścią programu.
Blex

Odpowiedzi:

3

Befunge-98 , Gol> <> i Wumpus 47 * 3 = 141 bajtów

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

Wypróbuj w Befunge! Wypróbuj w> <>! Wypróbuj w Wumpus!

Zgadza się, to trzy razy ten sam program! Uruchamiany w jednym z powyższych języków drukuje kod źródłowy dwa razy, czyli dwa pozostałe programy są połączone.

Jak to działa:

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
źródło
0

JScript, VBScript, Windows Batch, 345 bajtów

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)

Nazwij plik .js, następnie .vbs, a następnie .bat zostaną utworzone.

Peter Ferrie
źródło