Zautomatyzuj ratowanie świata

63

Jesteś Desmond Hume. Przez ostatnie 3 lata ty i twój partner, Kelvin, byliście niewolnikami komputera, który wymaga wprowadzenia określonej sekwencji co 108 minut, aby uratować świat.

4 8 15 16 23 42

Twój partner zmarł 40 dni temu (z powodu nieszczęśliwego wypadku z głową Kelvina i dużym kamieniem) i nie masz z kim porozmawiać. Nikt nie poda za ciebie liczb. Nikt nie przełamie monotonii. Na początku nie było tak źle, ale nie możesz już dłużej znieść ciszy. A jeśli będziesz musiał jeszcze raz posłuchać „Make Your Own Kind Of Music”, będziesz krzyczeć.

Ty decydujesz, że musisz się wydostać. Uciec. Ty decydujesz, że zbudujesz tratwę i odpłyniesz z wyspy. Ale wtedy uświadamiasz sobie złe wieści: utknąłeś tutaj. Musisz wciąż ratować świat.

Ale wtedy zdajesz sobie sprawę z dobrych wiadomości: jesteś programistą! Możesz zautomatyzować ratowanie świata! Podekscytowany podbiegasz do komputera i, używając swoich sprawdzonych umiejętności python, wymyślasz szybki skrypt, aby wprowadzić liczby.

import time

while True:
    print "4 8 15 16 23 42"
    time.sleep(60 * 107)

Szybki, prosty, niezawodny, krótki i łatwy. Wszystko, czym powinien być dobry skrypt Pythona. Ale wtedy, gdy spróbujesz go przetestować, pojawi się błąd.

Bad command or file name.

Dziwne. No cóż, spróbujmy c ++.

#include <iostream>
#include <unistd.h> 

int main()
{
    while (true)
    {
        std::cout << "4 8 15 16 23 42" << std::endl;
        sleep(60 * 107);
    }
}

Nie! C ++ też nie został znaleziony. Wypróbujesz każdy język, o którym możesz pomyśleć. JavaScript, Ruby, Perl, PHP, C #. Nic. Ten komputer powstał przed wszystkimi popularnymi językami dnia.

Wyzwanie

Musisz napisać program, który:

1) Wydrukuj dokładnie to: „4 8 15 16 23 42” (bez cytatów)

2) Poczekaj od 104 do 108 minut. (Według The Lost Wiki )

3) Powtarzaj na zawsze. (Lub dopóki nie uświadomisz sobie, że to wszystko jest skomplikowane oszustwo i że utknąłeś w dziwnej otchłani z powodu leniwego pisania i zadawania pytań, na które nie masz odpowiedzi. Dzięki JJ Abrams!)

Jest jednak pewien haczyk: MUSISZ użyć języka, który komputer w stacji łabędzi byłby w stanie uruchomić. Przy założeniu, że

A) Komputer był aktualny w momencie budowy,

B) Brak aktualizacji oprogramowania komputerowego oraz

C) Nie ma dostępnego połączenia internetowego (co oznacza, że ​​nie można pobrać Golfscript ...),

i starając się zgadnąć datę budowy The Swan Station, (Again, The Lost Wiki. )

Oznacza to, że musisz używać języka, który został po raz pierwszy wydany 31 grudnia 1977 r.


Kilka wyjaśnień zasad:

  • Dołączanie bibliotek jest OK, ale obowiązuje ta sama zasada (biblioteki muszą być wcześniejsze niż 1977).

  • Nie musisz się martwić kompatybilnością systemu operacyjnego.

  • Jeśli używasz systemjęzyka lub jego odpowiedników w językach, musisz udowodnić, że wszelkie używane polecenia systemowe byłyby dostępne przed 1978 rokiem. Artykuł w Wikipedii jest prawdopodobnie najlepszym sposobem na udowodnienie tego.

  • Nie ma znaczenia, kiedy uruchamiasz program, o ile kończy się to naprzemiennym drukowaniem i snem. (print-sleep-print-sleep ... i sleep-print-sleep-print ... są dopuszczalne.)

To jest Code-Golf, więc wygrywa najkrótsza odpowiedź w bajtach.

DJMcMayhem
źródło
Czy na końcu każdego wyjścia wymagany jest nowy wiersz?
Mego
3
@Mego Tak, inaczej liczby nie zostałyby wprowadzone .
DJMcMayhem

Odpowiedzi:

11

APL , 28 24 25 24 bajtów

Działało to w APL * PLUS STSC i SharpAPL IPSA w 1977 roku i chociaż współczesne APL mają mnóstwo nowych funkcji, nadal działa to na wszystkich głównych APL-ach:

+\4 4 7 1 7 19
→×⎕DL 6360

Pierwszy wiersz wypisuje skumulowaną sumę pokazanych liczb, które są liczbami wymaganymi. Druga linia d e l Ays 6360 sekund (106 minut), a następnie wykonuje się signum z tym, że (1, oczywiście) i trafia do tej linii (tzn poprzedniego, numer drukowania jednego).

Jednak APL \ 360 (APL dla IBM System / 360 ) z 1966 roku faktycznie pokonuje go o jeden bajt (testowany na wolnym emulatorze IBM / 370 ):

+\4 4 7 1 7 19
5⌶19E5
→1

Sleep dwuteownik ( „ IBM ” - dostać) wykonuje się w czasie oczekiwania na jiffies od 1 / 300 TH na sekundę, więc czekać 19 x 10 5 jiffies = 105 minut i 33 1 / 3 sekundy.

Adám
źródło
Odtąd cały swój czas robię w kilojiffies i megajiffies.
Pavel
+\⎕A⍳'EEHBHT'(if ⎕IO=0)
ngn
@ngn APL * PLUS nie ma ⎕A.
Adám
@ Adam +\4 4 7 1 7 19wtedy?
ngn
@ Adám ping ^
ngn
26

MUMPS - 30 znaków, około 1966 r. (Pierwszy standard ANSI w 1977 r.)

Moja pierwsza próba golfa kodowego, zaczynamy!

f  w "4 8 15 16 23 42" h 6420

MUMPS jest nadal popularnym językiem oprogramowania EHR, stworzonym przez Massachusetts General Hospital w Bostonie. Najbardziej znaną implementacją jest Epic Systems w Verona, WI.

Andrew Robinson
źródło
6
Dobra robota! MUMPS jest naprawdę idealny do gry w golfa kodowego, jeśli chcesz wejść do tego szczególnego kręgu piekła ...
2
Gdyby stawką był świat, mógłbym postawić „U 0” na początku ...
psr
5
@psr, co ważniejsze: ratowanie świata czy golfa ?!
Andrew Robinson,
2
@ psr Czy mógłbyś wyjaśnić dowcip komuś, kto nigdy wcześniej nie słyszał o MUMPS? Nie ja, tylko ... hipotetycznie. Jeśli ktoś, kto nie słyszał o MUMPS, natknie się na to. ;)
DJMcMayhem
3
@DJMcMayhem - Instrukcja write („W”) zapisuje na bieżącym urządzeniu wyjściowym (które urządzenie jest aktualne, ma wartość globalną, niezależnie od tego, czy podoba ci się ten pomysł, czy nie). Obecne urządzenie prawdopodobnie będzie standardowym wyjściem. Ale U 0 ustawiłoby to na standardowe wyjście (er, zwykle, ale wchodzenie w to nie byłoby już śmieszne dla nikogo).
psr
20

TECO, 53 bajty

TECO (Text [poprzednio Tape] Editor and Corrector) to edytor tekstowy pochodzący z 1962 roku. Można go również używać do uruchamiania samodzielnych programów. To najnowocześniejszy edytor dla PDP, VAXen itp.

Zgodnie z instrukcją TECO ^Hpolecenie podaje godzinę. Sprawdź system operacyjny i zasilacz, ponieważ jednostka czasu może się różnić w zależności od urządzenia:

OS/8:      ^H = 0
RT-11:     ^H = (seconds since midnight)/2
RSTS/E:    ^H = minutes until midnight
RSX-11:    ^H = (seconds since midnight)/2
VAX/VMS:   ^H = (seconds since midnight)/2
TOPS-10:   ^H = 60ths of a second since midnight
(or 50ths of a second where 50 Hz power is used)

Poniższy program działa w systemach, w których pora dnia jest mierzona w sekundach / 2:

I4 8 15 16 23 42
$<HT^HUA<^H-QAUDQD"L43200%D'QD-3180;>>

Zauważ, że ^Hi $należy wprowadzić, uderzając odpowiednio CONTROL-H i ESCAPE.

Liczby w programie można dostosować dla następujących maszyn:

   (number)        43200     3180
RSTS/E              1440      106
TOPS-10 60 Hz    5184000   381600
TOPS-10 50 Hz    4320000   318000
OS/8             goodbye, world...
feersum
źródło
20

Skorupa Bourne'a, 47 45 bajtów

while echo 4 8 15 16 23 42;do sleep 6420;done
Klamka
źródło
2
Pokonaj mnie do tego. Próbowałem znaleźć dowód, który sleepbył wtedy faktycznie dostępny - znalazłeś to? en.wikipedia.org/wiki/…
Cyfrowa trauma
Możesz użyć sleepjako whilewarunek. Oszczędza 2 bajty
ThinkChaos,
@plg Spałby przed wypisaniem sekwencji liczb, co wydaje się niedozwolone (musi wydrukować sekwencję natychmiast po uruchomieniu programu, a następnie spać).
Klamka
5
Tak więc program uruchamia się natychmiast po ostatnim ręcznym wprowadzeniu liczb. ;)
Roger,
1
Uniksowa wersja 6 zawierała polecenie uśpienia (patrz man.cat-v.org/unix-6th/1/sleep ).
Matteo Italia,
17

C, 54 52 bajtów

main(){while(1)puts("4 8 15 16 23 42"),sleep(6360);}
Jeff Stevens
źródło
38
main(){for(;;sleep(6360))puts("4 8 15 16 23 42");}
Cyfrowa trauma
13

FORTRAN 66 ( 108 98 bajtów)

      PROGRAM D 
2     WRITE (*,*) '4 8 15 16 23 42'
      CALL SLEEP(6420)
      GOTO 2
      END

Pewne jest, że komputer, o którym mowa, miał kompilator FORTRAN, ponieważ zdominował on dziedziny nauki i techniki w tamtych czasach. Urodziłem się 18 lat po tytułowym roku, ale podczas mojego programu matematycznego na uniwersytecie nauczyliśmy się FORTRAN. Podczas jednego zabawnego wykładu nauczyliśmy się programować na kartach do wykrawania. Nie jest łatwo sformatować go poprawnie tutaj, powinno być 6 pustych spacji przed każdym poleceniem i mogłem znaleźć tylko odwołanie do funkcji Sleep dla Fortran 77, ale powinien on istnieć już w Fortran IV i 66.

PS: Możemy zeskrobać jeden bajt, używając etykiety 1 zamiast etykiety 42.

PPS: Jeśli komputer, o którym mowa, używa kart wykrawających do wprowadzania programu, nie masz szczęścia, a bajty nie mają już znaczenia: D.

Bersaelor
źródło
@proudhaskeller Nie, lewych 7 kolumn jest zarezerwowanych, więc zapisujesz tylko jeden bajt na końcu wiersza 4.
frodoskywalker
1
Dokładnie,
wybrałbym
3
Ach, obowiązkowe białe znaki powodują nostalgiczną łzę w moich oczach: D
Yves Klett
Możesz ogolić bajt, zastępując 60*107go 80**2również.
Mark
Ok, ale można też użyć 6420.
Bersaelor,
11

MacLisp, 47 46 bajtów

(do()(())(print"4 8 15 16 23 42")(sleep 6360))

Wszystkie konstrukcje zaczerpnięte z podręcznika z 1974 r. (PDF) . Nie testowałem jednak, ponieważ nie mam interpretera MacLisp.

Uri Granta
źródło
1
z wyjątkiem jednego bajtu, nilmożna zapisać()
rdzeń
10

Altair Basic

Na pewno Desmond i Kelvin mieliby dla zabawy Altair 8800 (lub emulator). Altair Basic (od faceta o nazwisku Bill Gates, z małego, dwuosobowego start-upu o nazwie Micro-Soft) piszczy wraz z wydaniem z 1975 roku.

Desmond musiałby trochę dostroić, aby FORpętla wewnętrzna trwała minutę. Wtedy wszyscy wiedzieli, że zajęte pętle są błędne, ale wszyscy ich używali!

1 REM ADJUST "D" AS REQUIRED
2 LET D = 1000
3 PRINT "4 8 15 16 23 42"
4 FOR A = 0 TO 105 * 60
5 REM THIS LOOP SHOULD LAST ONE MINUTE +/- 0.05 SECONDS
6 FOR B = 0 TO D
7 LET C = ATN(0.25)
8 NEXT
9 NEXT
10 GOTO 3

Alternatywnie Desmond może zainstalować płytę 88-RTC (zmontowaną z komponentów !: http://www.classiccmp.org/altair32/pdf/88-virtc.pdf ) i uzyskać dostęp przez przerwania do wybiegającego zegara czasu rzeczywistego linia energetyczna lub wewnętrzny kryształ.

Będzie musiał napisać procedurę przerwania, aby obsłużyć wejście zegara, co z kolei może zaktualizować port, powiedzmy, że co 59 sekund przyniesie na ziemię na sekundę, a następnie podniesie wysoko.

Altair Basic miał WAITfunkcję, więc kod zostałby uproszczony do czegoś takiego jak poniżej (nie mogłem znaleźć listy portów, więc wybrałem po prostu 125 w nadziei, że będzie nieużywany.):

1 PRINT "4 8 15 16 23 42"
2 FOR A = 0 TO 105 * 60
3 WAIT 125,0
4 WAIT 125,255
5 NEXT
6 GOTO 1

To było naprawdę zabawne małe pytanie, wracając do niektórych naprawdę prymitywnych komputerów. Cierpliwość, którą musieli mieć dawni (łącznie ze mną)!


źródło
2
Ach, zajęte pętle ... +1
Geobits
4
Hmm, Desmond, Altair ... Czy jest przypadkiem język „Ezio”?
Kroltan
10

Asembler PDP-11 dla systemu Unix 6 - 73 68 74 znaków

Mówiąc o latach 70., obowiązkowe jest uhonorowanie Uniksa i sprzętu, od którego wszystko się zaczęło!

s:mov $1,r0
sys write;m;18
mov $6240.,r0
sys 43
br s
m:<4 8 15 16 23 42;>

Możesz go łatwo uruchomić tutaj (ale najpierw musisz odkryć na nowo radość z edwstawiania tekstu - w moim konkretnym przypadku musiałem nawet odkryć, jak właściwie edytować tekst :)).

Po złożeniu staje się 108 bajtów.

# cat mini.as
s:mov $1,r0
sys write;m;18
mov $6240.,r0
sys 43
br s
m:<4 8 15 16 23 42;>
# as mini.as
# ls -l a.out mini.as
-rwxrwxrwx  1 root      108 Oct 10 12:36 a.out
-rw-rw-rw-  1 root       74 Oct 10 12:36 mini.as
# od -h a.out
0000000 0107 0022 0000 0000 0018 0000 0000 0000
0000020 15c0 0001 8904 0012 0010 15c0 0004 8923
0000040 01f7 2034 2038 3531 3120 2036 3332 3420
0000060 3b32 0000 0000 0000 0002 0000 0000 0000
0000100 0000
0000120 0000 0000 0073 0000 0000 0000 0002 0000
0000140 006d 0000 0000 0000 0002 0012
0000154 
# ./a.out
4 8 15 16 23 42;
Matteo Italia
źródło
1
Usuń \ n dla 2 mniej znaków, nie powiedział, że musi być w osobnych wierszach. :)
Andrew Robinson
@AndrewRobinson: wydaje się to trochę niesprawiedliwe, wszystkie następujące dane wyjściowe będą miały 4 wyrównywane razem z 42 ... Mógłbym zamiast tego zmienić \ n (dwa znaki) za pomocą średnika. Ponadto msgjest marnotrawstwem, mogę iść z m(golenie innych 4 bajtów).
Matteo Italia,
1
Zaoszczędziłbyś literę i słowo instrukcji, brzamiast jmp, prawda? Również zapis wymaga deskryptora pliku w r0 - najwyraźniej zdarza się, że masz w nim 1 (lub 2) dla pierwszej pętli, ale rozbijasz go czasem snu.
Random832
@ Random832: wops, prawdopodobnie zadziałało, kiedy go przetestowałem, ponieważ użyłem 1 lub 2 jako czasu snu, aby szybko spróbować, jeśli zadziałało. Poprawnie br, dzięki tej jednej i kilku innym sztuczkom (głównie wycinanie białych znaków i używanie liczb ósemkowych, gdy to możliwe) do 74 znaków, nawet dodając pierwszy mov.
Matteo Italia,
8

LOGO, 61 bajtów (ewentualnie) lub 48 bajtów (prawdopodobnie nie)

Niestety nie udało mi się znaleźć internetowej wersji systemu LOGO: Podręcznik wstępny (1967) BBN ani żadnych referencji grupy MIT Logo Group (1960 +). Logo Apple autorstwa LCSI jest nieco za nowe (~ 1980). Jednak w oparciu o książki online pewna odmiana następujących prawdopodobnie działała w tym czasie. Pamiętaj, że CZEKAJ 60 czeka 1 sekundę, a nie 60.

TO a
LABEL "l
PRINT [4 8 15 16 23 42]
WAIT 381600
GO "l
END
a

Możemy trochę lepiej poradzić sobie z optymalizacją wywołania ogona, chociaż prawdopodobnie nie było to wtedy dostępne.

TO a
PRINT [4 8 15 16 23 42]
WAIT 381600
a
END
a
Uri Granta
źródło
3
TCO absolutnie był wtedy dostępny. (Tak, wiem z doświadczenia.) TCO było normą dla Lisp (a następnie Scheme); dopiero niedawno zaczęło być postrzegane jako egzotyczne.
rici,
7

CBM BASIC 1.0, 52 38 znaków, tokenizowany na 45 31 bajtów

1?"4 8 15 16 23 42":fOa=1to185^3:nE:rU

CBM BASIC 1.0 został wprowadzony wraz z Commodore PET w październiku 1977 roku. Polecenia byłyby zwykle wyświetlane dużymi literami i znakami graficznymi CBM, ale dla ułatwienia wymieniłem je tutaj małymi i dużymi literami (zarówno moje, jak i twoje! :-) ). Zauważ też, że ^ byłoby faktycznie wyświetlane jako ↑. Detokenized, po umieszczeniu tego na liście LISTspowoduje:

1 PRINT "4 8 15 16 23 42":FOR A=1 TO 185^3:NEXT:RUN

PET2502 pracowały z częstotliwością 1 MHz, więc ukończenie powinno zająć około 105 minut.

Edycja : Uświadomiłem sobie, że zagnieżdżone pętle nie były tak naprawdę konieczne i źle przeliczyłem swoje tokeny. Wciąż za mało, aby wygrać (i za późno, aby uruchomić), ale przynajmniej jest lepiej.

znak
źródło
7

Pascal - 107 95 bajtów

PROGRAM S;USES CRT;BEGIN WHILE TRUE DO BEGIN WRITELN('4 8 15 16 23 42');DELAY(6300000);END;END.

Wersja bez golfa:

PROGRAM S;
USES CRT;
BEGIN
    WHILE TRUE DO
    BEGIN
        WRITELN('4 8 15 16 23 42');
        DELAY(6300000); { 105 minutes * 60 seconds * 1000 milisseconds }
    END;
END.
Rodolfo Dias
źródło
4

Dalej , 50 bajtów

Chociaż FORTH-79 jest najwcześniejszą znormalizowaną wersją, język był rozwijany od 1968 roku i był dostępny na IBM 1130. Był używany w innych systemach także przed nadejściem 1977 roku. Mogę przeprowadzić trochę więcej badań, aby upewnić się, że wszystkie te słowa są dostępne, ale jestem całkiem pewien, że jest to wystarczająco podstawowe, aby istniało do tego czasu. Na pewno wszystkie były dostępne w FORTH-79.

Pętle na zawsze, czekając 6420000 milisekund między drukowaniem ciągów. Nie jest drukowana nowa linia.

: F 0 1 DO 6420000 MS ." 4 8 15 16 23 42" LOOP ; F
mbomb007
źródło
4

Smalltalk, 95 (lub 68, jeśli dozwolona jest luka)

Istnieje od 1972 roku

|i|[i:=0.[i<5] whileTrue: [(Delay forSeconds: 6480) wait.Transcript show: '4 8 15 16 23 42'.]]fork

Brak doświadczenia z tym, widziałem go na wikipedii: P
Sprawdziłem online, jak zapętlać i opóźniać, składnia powinna być poprawna, ale nie mogła znaleźć sposobu na uruchomienie.

Możliwa luka

Powinien drukować sekwencję co 108 minut, ale nie oznacza, że ​​musi to być 108 minut.
Może to skrócić kod

|i|[i:=0.[i<5] whileTrue: [Transcript show: '4 8 15 16 23 42'.]]fork

Kod wydrukuje sekwencję bez przerwy, więc gwarantuje, że wydrukuje również po 108 minutach.

Teun Pronk
źródło
9
Ale problem mówi Wait some time between 104 and 108 minutes, więc nie sądzę, że luka jest możliwa.
matsjoyce,
@matsjoyce Dlatego opublikowałem jeden z zegarem, a drugi bez :)
Teun Pronk
3
Chociaż twoja luka nie działa na wyzwanie, zastanawiam się, czy Desmond byłby w stanie uciec. Jestem prawie pewien, że komputer nic nie robi, chyba że znajduje się w przedziale 104-108 minut, więc po prostu zignoruje wprowadzane dodatkowe „4 8 15 16 23 42”. Jestem jednak pewien, że Walt byłby bardzo zdezorientowany przez wszystkie liczby, które ktoś mu wysyła. = D
DJMcMayhem
3

SAS, 82 75 69

data;
file stdout;
a:;
put "4 8 15 16 23 42";
a=sleep(6300,1);
goto a;
run;

Nie jest to typowy język golfowy, ale myślę, że kwalifikuje się do tego wyzwania, zakładając, że file stdoutbył ważny w SAS z 1977 roku.

Ulepszenia:

  • data _null_;-> data;zapisuje 7 znaków (i teraz tworzy pusty zestaw danych, a także drukuje na standardowe wyjście).
  • Zastąpiona pętla „do-while” goto - zapisuje 6 znaków
użytkownik3490
źródło
3

Powłoka Thompson, 1971 (1973 dla polecenia uśpienia)

43 bajty

: x
echo 4 8 15 16 23 42
sleep 6480
goto x

Ponieważ powłoka Bourne'a, choć istniała w 1977 r., Nie była dostępna w wydanej wersji Uniksa aż do wersji 7 w 1979 r. Oryginalna powłoka uniksowa nie miała żadnych fantazyjnych poleceń kontroli pętli. (Jeśli chcesz zakończyć pętlę, możesz użyć ifpolecenia, aby pominąć goto.)

Losowo 832
źródło
Czy miałoby exec $0to niewielką oszczędność goto?
Neil
2

C, 50 bajtów

Krótszy niż inne rozwiązanie C, a zatem nie jest duplikatem. Właściwie to napisałem, zanim zauważyłem (prawie) identyczny komentarz Digital Trauma na temat innego rozwiązania C.

main(){for(;;sleep(6240))puts("4 8 15 16 23 42");}
kot
źródło
Twierdzę, że jest to trywialna modyfikacja / ulepszenie w stosunku do drugiego rozwiązania, a zatem jest duplikatem. To, czy widziałeś komentarz przed jego napisaniem, nie ma znaczenia.
Mego
1

COBOL, 240 bajtów

Tak, wiodące białe znaki są znaczące. Skompiluj i uruchom jak cobc -x save.cob; ./save. (Ta -xopcja tworzy plik wykonywalny w przeciwieństwie do współdzielonej biblioteki lib, dlatego też nie sądzę, że trzeba to policzyć.)

       IDENTIFICATION DIVISION.
       PROGRAM-ID.S.
       PROCEDURE DIVISION.
           PERFORM UNTIL 1<>1
              DISPLAY"4 8 15 16 23 42"
              CALL"C$SLEEP"USING BY CONTENT 6402
           END-PERFORM.
           GOBACK.

Jeśli chcemy się nudzić, możemy dodać --freeopcję kompilacji dla kodu w dowolnym formacie, a następnie 158 + 6 = 164 bajtów, ale prawdopodobnie nie zadziała to w 1977 roku.

IDENTIFICATION DIVISION.
PROGRAM-ID.S.
PROCEDURE DIVISION.
PERFORM UNTIL 1<>1
DISPLAY"4 8 15 16 23 42"
CALL"C$SLEEP"USING BY CONTENT 6402
END-PERFORM.
GOBACK.
kot
źródło
1

ALGOL 60/68 / W, 74 47 50 bajtów

Uruchom ten pełny program za a68g save.a68pomocą algol68g.

ALGOL nie ma wbudowanego sposobu na sen, ale możemy uruchomić w zasadzie /bin/sleep:

DO print("4 8 15 16 23 42");system("sleep 6380")OD

Stara odpowiedź:

ALGOL nie ma wbudowanego trybu uśpienia, więc możemy nadużywać, pingktóre z pewnością jest w Uniksie (pomysł tutaj ) za 74 69 bajtów .

DO print("4 8 15 16 23 42");system("ping 1.0 -c1 -w6240>/dev/null")OD
kot
źródło
1
To sprytne! Można powiedzieć, że program jest „uśpiony”. : P
DJMcMayhem
@DrGreenEggsandIronMan Ha!
kot
@DrGreenEggsandIronMan Gdzie jest linia, gdzie systemjest dobrze, a nie dobrze? Nic ci nie jest, system("ping ...")ale wyzwanie mówi, że nie mogę używać systemC do np. Poleceń bash. ALGOL zajmuje się drukowaniem, ale nie mam innego sposobu ping(8)ani sleep(1)spać.
kot
Cóż, kiedy napisałem wyzwanie, przejrzałem google i zobaczyłem, że bash wyszedł w 89 roku, więc pomyślałem: „Używanie bash to oszukiwanie!”. Przypuszczam, że większym problemem jest to, czy system("sleep")od tego czasu będzie działać na systemie operacyjnym. Zmienię post.
DJMcMayhem
1
Nie sądzę, żeby był ping dla NCP. Internet nie przeszedł na TCP / IP do wczesnych lat 80., a pierwsza wzmianka o żądaniu echa ICMP wydaje się być w RFC777 z kwietnia 1981 r.
ninjalj