Otomatis Menyimpan Dunia

63

Anda adalah Desmond Hume. Selama 3 tahun terakhir, Anda dan pasangan Anda, Kelvin, telah menjadi budak komputer yang membutuhkan urutan yang sangat spesifik untuk dimasukkan ke dalamnya setiap 108 menit untuk menyelamatkan dunia.

4 8 15 16 23 42

Pasangan Anda meninggal 40 hari yang lalu (karena kecelakaan yang tidak menyenangkan yang melibatkan kepala dan batu besar Kelvin), dan Anda tidak memiliki siapa pun untuk diajak bicara. Tidak ada yang memasukkan angka untuk Anda. Tidak ada yang memecahkan kebodohan. Pada awalnya itu tidak terlalu buruk, tetapi Anda tidak bisa menangani keheningan lagi. Dan jika Anda harus mendengarkan "Jadikan Musik Sendiri Sendiri" sekali lagi, Anda akan menjerit.

Anda memutuskan bahwa Anda harus keluar. Untuk melarikan diri. Anda memutuskan bahwa Anda akan membangun rakit dan berlayar di luar pulau. Tetapi kemudian Anda menyadari berita buruknya: Anda terjebak di sini. Anda harus terus menyelamatkan dunia.

Tetapi kemudian Anda menyadari kabar baiknya: Anda adalah seorang programmer! Anda dapat secara otomatis menyelamatkan dunia! Bersemangat, Anda berlari ke komputer, dan, menggunakan keterampilan python terpercaya Anda, Anda menyiapkan skrip cepat untuk memasukkan angka untuk Anda.

import time

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

Cepat, sederhana, andal, pendek, dan mudah. Segala sesuatu yang seharusnya menjadi skrip python bagus. Tetapi kemudian, ketika Anda mencoba mengujinya, Anda mendapatkan kesalahan.

Bad command or file name.

Hah, aneh. Oh well, mari kita coba c ++.

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

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

Tidak! C ++ juga tidak ditemukan. Anda mencoba setiap bahasa yang dapat Anda pikirkan. Javascript, Ruby, Perl, PHP, C #. Tidak ada. Komputer ini dibuat sebelum semua bahasa populer saat itu.

Tantangan

Anda harus menulis sebuah program yang akan:

1) Cetak persis ini: "4 8 15 16 23 42" (tanpa tanda kutip)

2) Tunggu beberapa saat antara 104 dan 108 menit. (Menurut The Lost Wiki )

3) Ulangi selamanya. (Atau sampai Anda menyadari bahwa ini semua adalah penipuan yang rumit, dan bahwa Anda terjebak dalam limbo aneh karena malas menulis, dan mengajukan pertanyaan yang tidak ada jawabannya. Terima kasih JJ Abrams!)

Namun ada masalah: Anda HARUS menggunakan bahasa bahwa komputer di stasiun angsa benar-benar akan mampu berjalan. Berasumsi bahwa

A) Komputer sudah mutakhir pada saat konstruksi,

B) Belum ada pembaruan untuk perangkat lunak komputer, dan

C) Tidak ada koneksi internet yang tersedia (Artinya Anda tidak dapat mengunduh Golfscript ...),

dan membuat perkiraan terbaik kami untuk tanggal pembangunan The Swan Station, (Lagi-lagi, The Lost Wiki. )

Ini berarti Anda harus menggunakan bahasa yang pertama kali dirilis pada atau sebelum 31 Desember 1977.


Beberapa klarifikasi aturan:

  • Termasuk pustaka adalah OK, tetapi aturan yang sama berlaku (pustaka harus pra-1977).

  • Anda tidak perlu khawatir tentang kompatibilitas OS.

  • Jika Anda menggunakan system, atau bahasa Anda setara, Anda harus membuktikan bahwa perintah sistem apa pun yang Anda gunakan akan tersedia sebelum 1978. Artikel wikipedia mungkin merupakan cara terbaik untuk membuktikan ini.

  • Tidak masalah ketika Anda memulai program, asalkan berakhir dengan pola pencetakan dan tidur bergantian. (print-sleep-print-sleep ... dan sleep-print-sleep-print ... keduanya dapat diterima.)

Ini adalah Code-Golf, jadi jawaban tersingkat dalam byte menang.

DJMcMayhem
sumber
Apakah baris baru diperlukan di akhir setiap output?
Mego
3
@Mego Ya, jika tidak, angka-angka itu tidak akan dimasukkan .
DJMcMayhem

Jawaban:

11

APL , 28 24 25 24 byte

Ini bekerja di APL * PLUS STSC dan di SharpAPL IPSA pada tahun 1977, dan sementara APL modern memiliki banyak fitur baru, ini masih bekerja pada semua APL utama saat ini:

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

Baris pertama mencetak jumlah kumulatif dari angka yang ditampilkan, yang merupakan angka yang diperlukan. Baris kedua d e l ays 6360 detik (106 menit), kemudian mengambil signum itu (1, jelas), dan pergi ke baris yang (yaitu sebelumnya, nomor-mencetak satu).

Namun, APL \ 360 (APL untuk IBM System / 360 ) dari tahun 1966 sebenarnya mengalahkannya dengan satu byte (diuji pada emulator IBM / 370 gratis ):

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

Tidur I-beam ( " IBM " -? Mendapatkannya) mengambil menunggu waktu di jiffies dari 1 / 300 th dari kedua, jadi kami menunggu 19 × 10 5 jiffies = 105 menit dan 33 1 / 3 detik.

Adm
sumber
Saya memberikan semua pengukuran waktu saya dalam kilojiffies dan megajiffies mulai sekarang.
Pavel
+\⎕A⍳'EEHBHT'(jika ⎕IO=0)
ngn
@ngn APL * PLUS tidak punya ⎕A.
Adám
@ Adim +\4 4 7 1 7 19kemudian?
ngn
@ Adám ping ^
ngn
26

MUMPS - 30 karakter, sekitar tahun 1966 (standar ANSI pertama pada tahun 1977)

Upaya pertama saya di kode golf, ini dia!

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

MUMPS masih merupakan bahasa populer untuk perangkat lunak EHR, dibuat oleh Massachusetts General Hospital di Boston. Implementasi yang paling dikenal adalah Sistem Epik di Verona, WI.

Andrew Robinson
sumber
6
Kerja bagus! MUMPS sebenarnya ideal untuk bermain golf kode jika Anda ingin memasuki lingkaran neraka tertentu ...
2
Jika dunia dipertaruhkan saya bisa menempatkan "U 0" di awal ...
psr
5
@psr, apa yang lebih penting: menyelamatkan dunia atau golf kode ?!
Andrew Robinson
2
@psr Bisakah Anda menjelaskan lelucon ini kepada seseorang yang belum pernah mendengar tentang MUMPS sebelumnya? Bukan aku, hanya ... secara hipotesis. Jika seseorang yang belum pernah mendengar tentang MUMPS menemukan ini. ;)
DJMcMayhem
3
@DJMcMayhem - Pernyataan tulis ("W") menulis ke perangkat output saat ini (perangkat mana yang saat ini memegang nilai global apakah Anda suka ide itu atau tidak). Perangkat saat ini mungkin akan menjadi output standar. Tapi U 0 akan mengaturnya ke output standar (eh, biasanya, tetapi pergi ke yang tidak lagi lucu bagi siapa pun).
psr
20

TECO, 53 byte

TECO (Teks [sebelumnya Tape] Editor dan Korektor) adalah editor teks yang berasal pada tahun 1962. Ini juga dapat digunakan untuk menjalankan program mandiri. Ini adalah editor canggih untuk PDP, VAXen, dll.

Menurut manual TECO, ^Hperintah memberi waktu. Pastikan untuk memeriksa sistem operasi dan catu daya Anda, karena satuan waktu dapat bervariasi sesuai dengan mesin Anda:

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)

Program berikut ini bekerja pada sistem yang waktu waktunya diukur dalam detik / 2:

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

Perhatikan bahwa ^Hdan $harus dimasukkan dengan memukul, masing-masing, CONTROL-H dan ESCAPE.

Angka-angka dalam program ini dapat disesuaikan untuk mesin-mesin berikut:

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

Bourne shell, 47 45 byte

while echo 4 8 15 16 23 42;do sleep 6420;done
Gagang pintu
sumber
2
Kalahkan aku untuk itu. Saya mencoba menemukan bukti yang sleepsebenarnya tersedia saat itu - apakah Anda menemukannya? en.wikipedia.org/wiki/…
Digital Trauma
Anda dapat menggunakan sleepsebagai whilekondisi. Menghemat 2 byte
ThinkChaos
@ lpl Itu akan tidur sebelum mengeluarkan urutan nomor, yang tampaknya tidak diizinkan (harus mencetak urutan segera setelah menjalankan program, lalu tidur).
Gagang Pintu
5
Jadi, Anda memulai program segera setelah terakhir kali Anda memasukkan angka secara manual. ;)
Roger
1
Unix versi 6 menyertakan perintah sleep (lihat man.cat-v.org/unix-6th/1/sleep ).
Matteo Italia
17

C, 54 52 byte

main(){while(1)puts("4 8 15 16 23 42"),sleep(6360);}
Jeff Stevens
sumber
38
main(){for(;;sleep(6360))puts("4 8 15 16 23 42");}
Trauma Digital
13

FORTRAN 66 ( 108 98 Bytes)

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

Sudah pasti bahwa komputer tersebut memiliki kompiler FORTRAN, karena mendominasi bidang ilmiah dan teknik di zaman itu. Saya lahir 18 tahun setelah tahun eponymous, tetapi selama program matematika saya di universitas kami belajar FORTRAN. Satu ceramah yang menyenangkan kami pelajari cara memprogram kartu meninju. Tidak mudah untuk memformatnya dengan benar di sini, harus ada 6 spasi kosong sebelum setiap perintah dan saya hanya bisa menemukan referensi ke fungsi Sleep untuk Fortran 77 tetapi seharusnya sudah ada di Fortran IV dan 66.

PS: Kita bisa menghapus satu Byte dengan menggunakan label 1 bukan label 42.

PPS: Jika komputer tersebut menggunakan kartu punching untuk input program, Anda semua kurang beruntung dan byte tidak penting lagi: D.

Bersaelor
sumber
@proudhaskeller Tidak, 7 kolom kiri dicadangkan sehingga Anda hanya menyimpan satu byte pada akhir baris 4.
frodoskywalker
1
Tepat, saya hanya akan menyelamatkan satu byte, itulah sebabnya saya tidak mengubahnya;)
Bersaelor
3
Ah, ruang putih wajib menempatkan air mata nostalgia di mata saya: D
Yves Klett
Anda bisa mencukur habis byte dengan mengganti 60*107dengan 80**2, juga.
Mark
Ok, tapi kemudian kita juga bisa menggunakan 6420.
Bersaelor
11

MacLisp, 47 46 byte

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

Semua konstruksi diambil dari manual referensi 1974 (PDF) . Tidak diuji karena saya tidak punya juru bahasa MacLisp.

Uri Granta
sumber
1
simpan satu byte, nilbisa ditulis()
coredump
10

Altair Basic

Yang pasti, Desmond dan Kelvin akan memiliki Altair 8800 (atau emulator) hanya untuk bersenang-senang. Altair Basic (dari seorang lelaki bernama Bill Gates, dari beberapa lelaki kecil pemula yang disebut Micro-Soft) mencicit dengan rilis tahun 1975.

Desmond perlu sedikit menyempurnakan untuk memastikan FORlingkaran dalam berlangsung satu menit. Saat itu, semua orang tahu loop sibuk salah, tetapi semua orang menggunakannya!

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

Sebagai alternatif, Desmond dapat memasang papan 88-RTC (dirakit dari komponen !: http://www.classiccmp.org/altair32/pdf/88-virtc.pdf ) dan mendapatkan akses melalui interupsi ke jam waktu nyata yang hilang saluran listrik atau kristal internal.

Dia perlu menulis rutin interupsi untuk menangani input jam, yang pada gilirannya dapat memperbarui port, mengatakan setiap 59 detik dibawa ke darat selama satu detik, lalu naikkan tinggi.

Altair Basic memiliki WAITfungsi, jadi kodenya akan disederhanakan menjadi seperti ini (saya tidak dapat menemukan daftar port, jadi saya hanya memilih 125 dengan harapan tidak akan digunakan.):

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

Ini sebenarnya pertanyaan kecil yang menyenangkan, kembali ke beberapa komputer yang benar-benar belum sempurna. Kesabaran yang dimiliki oleh orang-orang tua (termasuk saya)!


sumber
2
Ah, loop sibuk ... +1
Geobits
4
Hmm, Desmond, Altair ... Apakah ada bahasa yang disebut "Ezio"?
Kroltan
10

Assembler PDP-11 untuk Unix System 6 - 73 68 74 karakter

Berbicara tentang tahun 70-an, wajib menghormati Unix dan perangkat keras tempat semuanya dimulai!

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

Anda dapat dengan mudah menjalankannya di sini (tetapi pertama-tama Anda harus menemukan kembali kesenangan menggunakan eduntuk memasukkan teks - dalam kasus khusus saya, saya bahkan harus menemukan cara untuk benar-benar mengedit teks di dalamnya :)).

Dirakit menjadi 108 byte.

# 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
sumber
1
Hapus \ n untuk 2 karakter lebih sedikit, dia tidak mengatakan itu harus berada di baris terpisah. :)
Andrew Robinson
@AndrewRobinson: tampaknya agak tidak adil, semua output yang mengikuti akan memiliki 4 dihancurkan bersama dengan 42 ... Saya malah bisa mengubah \ n (dua karakter) dengan tanda koma. Juga, msgboros, saya bisa pergi dengan m(mencukur 4 byte lainnya).
Matteo Italia
1
Anda akan menyimpan surat dan kata instruksi dengan menggunakan brbukan jmp, bukan? Juga, menulis membutuhkan deskriptor file di r0 - Anda tampaknya memiliki 1 (atau 2) di dalamnya untuk loop pertama Anda, tetapi Anda menghancurkannya dengan waktu tidur Anda.
Acak832
@ Random832: wops, mungkin berhasil ketika saya mengujinya karena saya menggunakan 1 atau 2 sebagai waktu tidur untuk dengan cepat mencoba jika berhasil. Benar tentang br, berkat yang satu dan beberapa trik lainnya (terutama memotong spasi putih dan menggunakan oktal bila memungkinkan) kami mendapat 74 karakter bahkan menambahkan yang pertama mov.
Matteo Italia
8

LOGO, 61 byte (mungkin) atau 48 byte (mungkin tidak)

Sayangnya, saya belum berhasil menemukan salinan online The LOGO System: Preliminary Manual (1967) oleh BBN, atau referensi apa pun oleh MIT Logo Group (1960-an +). Logo Apple oleh LCSI agak terlalu baru (~ 1980). Namun, berdasarkan buku online, beberapa variasi berikut ini mungkin berhasil pada saat itu. Perhatikan bahwa TUNGGU 60 menunggu selama 1 detik, bukan 60.

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

Kami dapat melakukan sedikit lebih baik dengan optimasi panggilan ekor, meskipun ini mungkin tidak tersedia pada saat itu.

TO a
PRINT [4 8 15 16 23 42]
WAIT 381600
a
END
a
Uri Granta
sumber
3
TCO benar-benar tersedia saat itu. (Ya, saya tahu dari pengalaman.) TCO adalah norma untuk Lisp (dan kemudian Skema); hanya baru-baru ini telah dianggap sebagai eksotis.
rici
7

CBM BASIC 1.0, 52 38 karakter, ditautkan hingga 45 31 byte

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

CBM BASIC 1.0 diperkenalkan dengan Commodore PET pada Oktober 1977. Perintah biasanya akan ditampilkan dalam huruf besar dan karakter grafik CBM, tetapi saya telah mendaftarkannya di sini dalam huruf kecil + huruf besar demi kemudahan (baik milik saya dan milik Anda! :-) ). Perhatikan juga bahwa ^ sebenarnya akan ditampilkan sebagai as. Diturunkan, setelah mendaftar ini dengan LISTini akan menghasilkan:

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

6502 PET berjalan pada 1MHz, jadi ini akan memakan waktu sekitar 105 menit atau lebih untuk menyelesaikannya.

Sunting : Menyadari bahwa loop bersarang tidak benar-benar diperlukan dan saya salah menghitung token saya. Masih belum cukup untuk menang (dan sudah terlambat, untuk boot), tapi setidaknya lebih baik.

Menandai
sumber
7

Pascal - 107 95 byte

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

Versi tidak disatukan:

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
sumber
4

Keempat , 50 byte

Meskipun FORTH-79 adalah versi standar paling awal, bahasa ini dalam pengembangan mulai tahun 1968, dan dapat digunakan pada IBM 1130. Ini digunakan pada sistem lain juga sebelum 1977 muncul. Saya mungkin melakukan sedikit riset lebih lanjut untuk memastikan semua kata-kata ini tersedia, tetapi saya cukup yakin ini cukup mendasar untuk ada pada saat itu. Ini semua tersedia oleh FORTH-79, pasti.

Loops selamanya, menunggu 6420000 milidetik di antara pencetakan string. Tidak ada baris baru yang dicetak.

: F 0 1 DO 6420000 MS ." 4 8 15 16 23 42" LOOP ; F
mbomb007
sumber
4

Smalltalk, 95 (atau 68 jika celah diizinkan)

Sudah ada sejak 1972

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

Tidak ada pengalaman dengan yang ini, lihat di wikipedia: P
Melihat secara online cara mengulang dan menunda, sintaksisnya harus benar tetapi tidak dapat menemukan cara untuk menjalankannya.

Kemungkinan celah

Seharusnya mencetak urutan setiap 108 menit, tetapi tidak menyatakan bahwa itu harus 108 menit.
Ini bisa membuat kode lebih pendek

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

Kode akan mencetak urutan tanpa interval, sehingga dijamin bahwa ia akan mencetak setelah 108 menit juga.

Teun Pronk
sumber
9
Tapi masalahnya memang Wait some time between 104 and 108 minutes, jadi saya tidak berpikir celah itu mungkin.
matsjoyce
@matsjoyce Itulah sebabnya saya memposting satu dengan timer dan satu tanpa :)
Teun Pronk
3
Meskipun celah Anda tidak berfungsi untuk tantangan, saya ingin tahu apakah Desmond bisa lolos begitu saja. Saya cukup yakin komputer tidak melakukan apa-apa kecuali ada di antara jendela 104-108 menit, jadi itu akan mengabaikan tambahan "4 8 15 16 23 42" yang sedang dimasukkan. Namun, saya yakin Walt akan sangat bingung dengan semua nomor yang dikirimkan seseorang kepadanya. = 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;

Bukan bahasa golf yang khas, tapi saya pikir itu memenuhi syarat untuk tantangan ini, dengan asumsi file stdoutitu berlaku di SAS era 1977.

Perbaikan:

  • data _null_;-> data;menyimpan 7 karakter (dan sekarang menghasilkan dataset kosong serta mencetak ke stdout).
  • Loop do-while yang diganti dengan goto - menyimpan 6 karakter
pengguna3490
sumber
3

Thompson shell, 1971 (1973 untuk perintah tidur)

43 byte

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

Karena shell Bourne, meskipun ada pada tahun 1977, tidak ada dalam versi Unix yang dirilis sampai v7 pada tahun 1979. Shell Unix yang asli tidak memiliki perintah kontrol loop mewah. (Jika Anda ingin mengakhiri satu lingkaran, Anda dapat menggunakan ifperintah untuk melewati goto.)

Random832
sumber
Apakah ini akan exec $0menghemat sedikit goto?
Neil
2

C, 50 byte

Lebih pendek dari solusi C lainnya, dan karenanya bukan duplikat. Saya benar-benar menulis ini sebelum saya perhatikan (hampir) komentar identik Digital Trauma pada solusi C lainnya.

main(){for(;;sleep(6240))puts("4 8 15 16 23 42");}
kucing
sumber
Saya berpendapat bahwa ini adalah modifikasi / peningkatan sepele pada solusi lain, dan dengan demikian merupakan penipuan. Apakah Anda melihat komentar sebelum menulis ini tidak relevan.
Mego
1

COBOL, 240 byte

Ya, spasi putih terkemuka sangat penting. Kompilasi dan jalankan like cobc -x save.cob; ./save. ( -xOpsi menghasilkan executable yang bertentangan dengan lib bersama dan dengan demikian saya tidak berpikir itu perlu dihitung.)

       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.

Jika kita ingin menjadi membosankan, kita dapat menambahkan --freeopsi kompilasi untuk kode format bebas, kemudian 158 + 6 = 164 byte tetapi ini tidak mungkin bekerja kembali di '77.

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.
kucing
sumber
1

ALGOL 60/68 / W, 74 47 50 byte

Jalankan program lengkap ini dengan a68g save.a68, menggunakan algol68g.

ALGOL tidak memiliki cara untuk tidur tetapi kita dapat menjalankan dasarnya /bin/sleep:

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

Jawaban lama:

ALGOL tidak memiliki sleep builtin, jadi kita dapat menyalahgunakan pingyang pasti pada Unix waktu (ide dari sini ) untuk 74 69 byte .

DO print("4 8 15 16 23 42");system("ping 1.0 -c1 -w6240>/dev/null")OD
kucing
sumber
1
Itu pintar! Bisa dibilang programnya adalah "sleep-ping". : P
DJMcMayhem
@DrGreenEggsandIronMan Ha!
kucing
@DrGreenEggsandIronMan Di mana garis untuk mana systembaik-baik saja dan tidak baik-baik saja? Anda baik-baik saja system("ping ...")tetapi tantangannya mengatakan saya tidak dapat menggunakan systemdari C untuk mis. Perintah bash. ALGOL melakukan pencetakan, tapi saya tidak punya cara lain selain ping(8)atau sleep(1)tidur.
kucing
Nah, ketika saya menulis tantangan, saya mencari di Google dan melihat bash keluar di 89, jadi saya pikir "Menggunakan bash itu curang!". Saya kira masalah yang lebih besar adalah apakah system("sleep")akan berfungsi pada OS dari waktu itu. Saya akan mengedit posting.
DJMcMayhem
1
Saya tidak berpikir ada ping untuk NCP. Internet tidak bertransisi ke TCP / IP hingga awal 80-an, dan penyebutan pertama ICMP Echo Request tampaknya berada di RFC777, tertanggal April 1981.
ninjalj