Dünyayı Kurtarmayı Otomatikleştirin


63

Sen Desmond Hume'sun. Son 3 yıldır, siz ve eşiniz Kelvin, dünyayı kurtarmak için her 108 dakikada bir kendisine girilen çok özel bir dizilim gerektiren bir bilgisayara köle oldunuz.

4 8 15 16 23 42

Eşiniz 40 gün önce (Kelvin'in başını ve büyük bir kayayı içeren talihsiz bir kaza nedeniyle) öldü ve konuşacak hiç kimseniz yok. Sizin için numaraları girecek kimse yok. Monotonluğu kıracak kimse yok. İlk başta çok kötü değildi, ama artık sessizliği kaldıramazsın. Bir kez daha "Kendi Müziğinizi Yaratın" 'ı dinlemek zorunda kalırsanız, çığlık atacaksınız.

Çıkman gerektiğine karar verdin. Kaçmak. Bir sal inşa etmeye ve adaya yelken açmaya karar veriyorsunuz. Ama sonra kötü haberi anlıyorsun: burada sıkışıp kaldın. Dünyayı kurtarmaya devam etmelisin.

Ama sonra iyi haberi anlıyorsun: Sen bir programcısın! Dünyayı kurtarmayı otomatikleştirebilirsin! Heyecanlı, bilgisayara doğru koşuyorsunuz ve güvenilir python becerilerinizi kullanarak sayıları girmek için hızlı bir komut dosyası hazırlıyorsunuz.

import time

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

Hızlı, basit, güvenilir, kısa ve kolay. İyi bir python betiği olması gereken her şey. Ama sonra test etmeye çalıştığınızda bir hata ile karşılaşıyorsunuz.

Bad command or file name.

Huh, garip. Oh, hadi c ++ 'ı deneyelim.

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

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

Hayır! C ++ da bulunamadı. Aklınıza gelebilecek her dili deneyin. Javascript, Ruby, Perl, PHP, C #. Hiçbir şey değil. Bu bilgisayar, günün bütün popüler dillerinden önce yapıldı.

Meydan okuma

Aşağıdakileri yapacak bir program yazmalısınız:

1) Tam olarak şunu yazdırın: "4 8 15 16 23 42" (tırnak işaretleri olmadan)

2) 104 ila 108 dakika arası bir süre bekleyin. ( Kayıp Wiki'ye göre )

3) Sonsuza dek tekrarlayın. (Ya da tüm bunların ayrıntılı bir aldatmaca olduğunu anlayana ve tembel yazma ve cevaplarını bilmediğiniz sorular sormaktan dolayı garip bir belirsizlik içinde sıkışıp kaldığınızı fark edene kadar. Teşekkürler JJ Abrams!)

Bununla birlikte bir yakalama var: Kuğu istasyonundaki bilgisayarın gerçekten çalışabileceği bir dil kullanmalısınız. Farz et

A) Bilgisayar inşaat sırasında günceldi,

B) Bilgisayar yazılımında herhangi bir güncelleme yapılmamıştır ve

C) İnternet bağlantısı mevcut değil (Anlamı Golfscript'i indiremezsiniz ...),

ve Swan Station'ın inşaatı tarihi için en iyi tahmimizde bulunduk. (Yine, Kayıp Wiki )

Bu, ilk önce 31 Aralık 1977'de veya öncesinde yayımlanan bir dili kullanmanız gerektiği anlamına gelir.


Birkaç kural açıklaması:

  • Kütüphanelerin dahil edilmesi tamam ama aynı kural geçerli (kütüphaneler 1977 öncesi olmalı).

  • İşletim sistemi uyumluluğu konusunda endişelenmenize gerek yok.

  • Eğer kullanırsanız systemveya diller eşdeğeri tutarına gerekir herhangi bir sistem Eğer 1978'de önce bir wikipedia makale muhtemelen bu kanıtlamak için en iyi yoldur mevcut olurdu kullanmak komutları kanıtlamak.

  • Programı ne zaman başlattığınızın bir önemi yoktur, sadece değişmeli baskı ve uyku düzeninde kaldığı sürece. (baskı-uyku-baskı-uyku ... ve uyku-baskı-uyku-baskı ... ikisi de kabul edilebilir.)

Bu Code-Golf, bayt cinsinden en kısa sürede kazanılan cevap.


Her çıktının sonunda bir yeni satır gerekli midir?
Mego

3
@Mego Evet, aksi takdirde sayılar gerçekten girilmez .
DJMcMayhem

Yanıtlar:


11

APL , 28 24 25 24 bayt

Bu, STSC’nin APL * PLUS’unda ve 1977’de IPSA’nın SharpAPL’ında çalıştı ve modern APL’ler bir dizi yeni özelliğe sahipken, bugün hala tüm büyük APL’lerde işe yaramaktadır:

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

İlk satır, gösterilen sayıların kümülatif toplamını, gerekli sayılardır. İkinci satır, d , e l ays 6360 saniye (106 dakika), daha sonra bunun sinyalnum (1, tabii ki) alır, ve bu hat gider (yani önceki, sayısal baskı bir).

Ancak, 1966’dan itibaren APL \ 360 ( IBM System / 360 için APL ) aslında bir bayt atar ( ücretsiz IBM / 370 emülatöründe test edilmiştir ):

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

Uyku -kiriş ( " IBM " - olsun) içinde bekleme süresi alır jiffies arasında 1 / 300 inci saniyenin, bu yüzden 19 x 10 beklemek 5 jiffies = 105 dakika ve 33 1 / 3 saniye.


Tüm zaman ölçümlerimi bundan sonra kilojiffies ve megajiffies olarak veriyorum.
Pavel,

+\⎕A⍳'EEHBHT'(eğer ⎕IO=0)
ngn

@ngn APL * PLUS yoktur ⎕A.
Adám

@ Adám +\4 4 7 1 7 19öyleyse?
ngn

@ Adám ping ^
ngn

26

MUMPS - 1966 dolaylarında 30 karakter (1977'de ilk ANSI standardı)

İlk kod golf denemem, başlıyoruz!

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

MUMPS, Boston'daki Massachusetts General Hospital tarafından oluşturulan EHR yazılımı için hala popüler bir dildir. En bilinen uygulama Verona, WI'daki Epic Systems'dir.


6
İyi iş! MUMPS, kod cehennemi için ideal bir cehennem döngüsüne girmek istemeniz durumunda idealdir ...

2
Eğer dünya tehlikede olsaydı, başlangıçta "U 0" koyabilirdim ...
psr

5
@psr, daha önemli olan: dünyayı kurtarmak mı yoksa golf oynamak mı ?!
Andrew Robinson

2
@psr Şakayı daha önce hiç MUMPS duymamış birine anlatır mısınız? Ben değil, sadece ... varsayımsal olarak. MUMPS'u duymamış birinin bu konuda tökezlemesi durumunda. ;)
DJMcMayhem

3
@DJMcMayhem - write ifadesi ("W"), geçerli çıkış aygıtına yazar (hangi aygıtın güncel olduğu tutulur, bu fikri beğenmek veya beğenmemek). Geçerli cihaz muhtemelen standart çıktı olacak. Fakat U 0 bunu standart çıktıya ayarlayacaktır (genellikle, ama buna girmek artık hiç kimseye komik gelmeyecektir).
psr

20

TECO, 53 bayt

TECO (Metin [önceki Kaset] Editör ve Düzeltici), 1962'de başlayan bir metin editörüdür. Bağımsız programları çalıştırmak için de kullanılabilir. PDP'ler, VAXen, vb. İçin son teknoloji editör.

TECO kılavuzuna göre, ^Hkomut günün saatini verir. İşletim sisteminizi ve güç kaynağını kontrol ettiğinizden emin olun, çünkü zaman birimi makinenize göre değişebilir:

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)

Aşağıdaki program, günün zamanının saniye / 2 olarak ölçüldüğü sistemler üzerinde çalışır:

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

Not ^Hve $çarpıcı sırasıyla KONTROL-H ve kaçış ile girilmelidir.

Programdaki sayılar aşağıdaki makineler için ayarlanabilir:

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

20

Bourne kabuğu, 47 45 bayt

while echo 4 8 15 16 23 42;do sleep 6420;done

2
Beni yen. O sleepzamanlar gerçekten mevcut olan kanıtları bulmaya çalışıyordum - bunu buldunuz mu? en.wikipedia.org/wiki/…
Dijital Travma

Koşul sleepolarak kullanabilirsiniz while. 2 bayt kazandırır
ThinkChaos

@plg Numara sırasını çıkarmadan önce uyuyacak , izin verilmemiş gibi görünüyor (programı çalıştırdıktan hemen sonra diziyi yazdırıp sonra uykuya almak zorunda ).
Doorknob

5
Böylece, programı en son başlattıktan hemen sonra başlatırsınız. ;)
Roger

1
Unix'in 6. sürümü uyku komutunu içeriyordu (bkz. Man.cat-v.org/unix-6th/1/sleep ).
Matteo Italia


13

FORTRAN 66 ( 108 98 Bayt)

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

Söz konusu bilgisayarın, dönemin bilimsel ve mühendislik alanlarına hâkim olduğu için FORTRAN derleyicisine sahip olduğu kesindir. İsimsiz yıldan 18 yıl sonra doğdum, ancak üniversitedeki matematik programımda FORTRAN'ı öğrendik. Eğlenceli bir ders, delme kartlarını nasıl programlayacağımızı öğrendik. Burada doğru şekilde biçimlendirmek o kadar kolay değil, her komuttan önce 6 boşluk olmalıdır ve yalnızca Fortran 77 için Uyku işlevine bir referans bulabildim, ancak Fortran IV ve 66'da zaten mevcut olmalıydı.

Not: Bir Bayt'ı, 42 etiketi yerine 1 etiketi kullanarak kazıyabiliriz.

PPS: Eğer söz konusu bilgisayar program girişi için delikli kart kullanıyorsa, hepsi şansınız kalmaz ve baytlar artık önemli değil: D.


@ proudhaskeller Hayır, sol 7 sütun ayrılmıştır, bu nedenle satır 4'ün sonunda yalnızca bir bayt
kaydedersiniz

1
Tam olarak, sadece bir baytı güvende
tutardım,

3
Ah, zorunlu boşluk, gözüme nostaljik bir göz
Yves Klett

Siz de 60*107onunla değiştirerek bir baytı tıraş edebilirsiniz 80**2.
Mark

Tamam, fakat o zaman kişi sadece 6420'yi kullanabilir.
Bersaelor


10

Altair Basic

Tabii ki, Desmond ve Kelvin sadece eğlence için bir Altair 8800 (ya da emülatör) yapmış olacaklardı. Altair Basic (Bill Gates adındaki birinden, Micro-Soft adlı iki kişilik yeni bir girişimden) 1975 sürümünde sesleniyor.

Desmond'un iç FORdöngünün bir dakika sürmesi için biraz ince ayar yapması gerekir . O zamanlar, herkes meşgul döngülerinin yanlış olduğunu biliyordu, ama herkes onları kullandı!

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

Alternatif olarak, Desmond 88-RTC panosunu kurabilir (bileşenlerden toplanmış !: http://www.classiccmp.org/altair32/pdf/88-virtc.pdf ) güç hattı veya dahili kristal.

Saat girişini idare etmek için bir kesme rutini yazması gerekiyordu, bu da bir portu güncelleyebiliyor, her 59 saniyede bir saniyeye kadar toprağa dönüp sonra yükseleceğini söylüyordu.

Altair Basic'in bir WAITişlevi vardı , bu yüzden kod aşağıdaki gibi bir şeyle basitleştirildi (bir bağlantı noktası listesi bulamadım, bu yüzden kullanılmayacağı umuduyla 125'i seçtim).

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

Bu aslında eğlenceli ve küçük bir soruydu, gerçekten ilkel bilgisayarlara geri dönüyordu. Eski zamanlayıcıların (ben dahil) sabrı olmalı!


2
Ah, yoğun döngüler ... +1
Geobits

4
Hmm, Desmond, Altair ... "Ezio" denilen bir şans var mı?
Kroltan

10

Unix Sistemi 6 - 73 68 74 karakterleri için PDP-11 birleştiricisi

70'ler hakkında konuşurken, Unix'i ve her şeyin başladığı donanımı onurlandırmak zorunludur!

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

Kolayca buradan çalıştırabilirsiniz (ancak önce edmetni eklemek için kullanmanın zevkini yeniden keşfetmeniz gerekir - benim özel durumumda, aslında metni nasıl düzenleyeceğimi keşfetmek zorunda kaldım :)).

Toplanan 108 bayt olur.

# 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;

1
2 karakterden daha az karakter kaldıysa, ayrı satırlarda olması gerektiğini söylemedi. :)
Andrew Robinson

@AndrewRobinson: biraz adaletsiz görünüyor, izleyen tüm çıktılar 42 ile birlikte basacak. Ayrıca, msgsavurgan, ben ile gidebilirim m(diğer 4 byte'ı tıraş).
Matteo Italia

1
Bir mektubu ve bir talimat kelimesini kullanarak bryerine kaydedersiniz jmp, değil mi? Ayrıca, yazma, dosya tanımlayıcısını r0 olarak gerektirir - görünüşe göre ilk döngü için 1 (veya 2) içeriyorsunuz, ancak uyku sürenizle paramparça ediyorsunuz.
Random832

@ Random832: wops, muhtemelen test ettiğimde çalıştı, çünkü işe yaradıysa çabuk denemek için uyku süresi olarak 1 veya 2 kullandım. Bunun hakkında dürüst br, biri ve diğer bazı hileler sayesinde (çoğunlukla boşlukları kesmek ve mümkün olduğunda octal kullanarak) ilkini ekleyerek bile 74 karaktere ulaştık mov.
Matteo Italia

8

LOGO, 61 bayt (muhtemelen) veya 48 bayt (muhtemelen değil)

Ne yazık ki, BBN'in LOGO Sistem: Ön El Kitabının (1967) çevrimiçi bir kopyasını veya MIT Logo Grubunun (1960' +) referanslarını bulamadım . LCSI'nin Apple Logosu biraz daha yeni (~ 1980). Bununla birlikte, çevrimiçi kitaplara dayanarak, aşağıdakilerin bazı varyasyonları muhtemelen o zaman çalıştı. WAIT 60'ın 60 saniye değil 1 saniye beklediğini unutmayın.

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

Kuyruk çağrısı optimizasyonu ile biraz daha iyi yapabiliriz, ancak bu muhtemelen mevcut değildi.

TO a
PRINT [4 8 15 16 23 42]
WAIT 381600
a
END
a

3
TCO kesinlikle o zaman mevcuttu. (Evet, deneyimlerden haberim var.) TCO, Lisp (ve daha sonra Şema) için bir normdu; Sadece son zamanlarda egzotik olarak görülmeye başlandı.
rici,

7

CBM BASIC 1.0, 52 38 karakter, 45 31 bayt olarak belirtildi.

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

CBM BASIC 1.0, Commodore PET ile Ekim 1977'de tanıtıldı. Komutlar normalde büyük harf ve CBM grafik karakterlerinde gösterilecek, ancak ben kolaylığı için onları küçük harf + büyük harf olarak listeleydim (hem benim hem de senin! :-) ). Ayrıca ^ ifadesinin gerçekten ↑ olarak görüntüleneceğini unutmayın. Detokenized, bununla birlikte listeledikten sonra LISTsonuçlanır:

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

PET'in 6502'si 1 MHz'de çalıştı, bu yüzden işlemin tamamlanması yaklaşık 105 dakika sürecek.

Düzenleme : Yuvalanmış döngülerin gerçekten gerekli olmadığının farkına vardım ve jetonlarımı yanlış hesapladım. Hala kazanmak için yeterli değil (ve çok geç, önyükleme yapmak için), ama en azından daha iyi.


7

Pascal - 107 95 bayt

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

Ungolfed versiyonu:

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.

4

İleri , 50 bayt

FORTH-79 en eski standart versiyon olmasına rağmen, dil 1968'den itibaren geliştirildi ve IBM 1130'da kullanılabilirdi. 1977'den önce de diğer sistemlerde kullanılıyordu. Bu kelimelerin hepsinin erişilebilir olmasını sağlamak için biraz daha araştırma yapabilirim, ancak bunun o zamana kadar varolması için yeterince temel olduğuna eminim. Bunların hepsi FORTH-79 tarafından temin edildi.

Sonsuza dek döngüler, dizi baskısı arasında 6420000 milisaniye beklenir. Yeni satır yazdırılmadı.

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

4

Smalltalk, 95 (veya boşluk deliğine izin veriliyorsa 68)

1972'den beri

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

Bununla ilgili hiçbir deneyim yok, wikipedia'da gördüm: P
Nasıl çevrim ve gecikme yapılacağına çevrimiçi baktım, sözdizimi doğru olmalı, ancak onu çalıştırmak için bir yol bulamadı.

Olası kaçamak

Her 108 dakikada bir diziyi yazdırmalıdır, ancak 108 dakika olması gerektiğini belirtmez.
Bu, kodu daha kısa hale getirebilir

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

Kod, diziyi aralıksız yazdırır, böylece 108 dakika sonra da yazdırılacağı garanti edilir.


9
Ancak sorun söylüyor Wait some time between 104 and 108 minutes, bu yüzden boşluk deliğinin mümkün olduğunu sanmıyorum.
matsjoyce

@ matsjoyce Bu yüzden biri zamanlayıcı ve diğeri :) mesajını gönderdim
Teun Pronk

3
Loş deliğin bu zorluk için işe yaramazsa da, Desmond'un kaçabileceğini merak ediyorum. Bilgisayarın 104-108 dakikalık pencere arasında olmadıkça hiçbir şey yapmadığından eminim, bu yüzden girilen fazladan "4 8 15 16 23 42" i görmezden gelirdi. Ancak, Walt'un birisinin kendisine gönderdiği tüm numaralarla kafasının karışacağından eminim. = 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;

Tipik bir golf dili değil, ancak bunun file stdout1977 döneminde SAS'ta geçerli olduğunu varsayarak, bu zorluk için uygun olduğunu düşünüyorum .

İyileştirmeler:

  • data _null_;-> data;7 karakter kaydeder (ve şimdi stdout'a yazdırmanın yanı sıra boş bir veri kümesi oluşturur).
  • Değiştirilen do-while döngüsü goto ile - 6 karakter kazandırır

3

Thompson kabuğu, 1971 (uyku emri için 1973)

43 bayt

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

Bourne kabuğu, 1977'de var olmasına rağmen, 1979'da v7'ye kadar yayımlanmış bir Unix sürümünde değildi. Orijinal Unix kabuğunda herhangi bir fantezi döngü kontrol komutu yoktu. (Bir döngüyü sonlandırmak istiyorsanız if, geçişi atlamak için komutu kullanabilirsiniz .)


exec $0Küçük bir tasarruf için olurdu goto?
Neil

2

C, 50 bayt

Diğer C çözümünden daha kısa ve dolayısıyla bir kopya değil. Bunu aslında Digital Trauma'nın (neredeyse) diğer C çözümü hakkındaki özdeş yorumunu fark etmeden önce yazdım.

main(){for(;;sleep(6240))puts("4 8 15 16 23 42");}

Bunun, diğer çözüm üzerinde önemsiz bir değişiklik / iyileştirme olduğunu ve dolayısıyla bir dupe olduğunu savunuyorum. Bunu yazmadan önce yorumu görüp görmediğiniz önemli değil.
Mego

1

COBOL, 240 bayt

Evet, önde gelen boşluk önemli. Derlemek ve koşmak gibi cobc -x save.cob; ./save. (Bu -xseçenek, paylaşılan bir lib'in aksine bir yürütülebilir dosya üretir ve bu nedenle sayılması gerekmiyor.)

       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.

Sıkıcı olmak istiyorsak, --freeserbest biçimli kod için derleme seçeneğini ekleyebiliriz , daha sonra 158 + 6 = 164 bayt ancak bu, '77'de geri çalışma olasılığı düşük olacaktır.

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.

1

ALGOL 60/68 / W, 74 47 50 bayt

Bu programı a68g save.a68kullanarak çalıştırın algol68g.

ALGOL yerleşik bir uyku yöntemine sahip değil ama temelde koşabiliriz /bin/sleep:

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

Eski cevap:

ALGOL'de yerleşik bir uyku düzeni bulunmuyor, bu nedenle pingkesinlikle bir zamanın Unix'inde olan ( buradan gelen fikir ) 74 69 bayt'ı kötüye kullanabiliriz .

DO print("4 8 15 16 23 42");system("ping 1.0 -c1 -w6240>/dev/null")OD

1
Zekice! Programın "ping ping" olduğunu söyleyebilirsin. : P
DJMcMayhem

@DrGreenEggsandIronMan Ha!
kedi,

@DrGreenEggsandIronMan systemTamam nerede ve tamam değil için satır nerede ? İyisin system("ping ...")ama zorluk, systembash komutları için C'den kullanamayacağımı söylüyor . ALGOL baskı yapıyor, ama uyumak ping(8)veya sleep(1)uyumaktan başka yolum yok .
kedi,

Meydan okumayı yazdığımda, googledim ve bashın 89'da ortaya çıktığını gördüm, bu yüzden "bash kullanmak hile yapıyor!" Diye düşündüm. Sanırım asıl mesele system("sleep")o zamandan beri bir işletim sistemi üzerinde çalışıp çalışmama. Gönderiyi düzenlerim.
DJMcMayhem

1
NCP için ping olduğunu sanmıyorum. İnternet 80'lerin kadar TCP / IP geçiş vermedi ve ICMP Echo Request ilk söz Nisan 1981 tarihli, RFC777 olduğu anlaşılıyor
ninjalj
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.