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.


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

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.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.