MATLAB - 89 bayt
a=@()hour(now);disp('Legen... wait for it...');while(mod(a()+1,24)~=a())end;disp('dary!')
Oldukça kendini açıklayıcı. İlk olarak, sistem saatinin o andaki saatini almak için bir işlev tutamacı oluşturun. Ardından, Legen... wait for it...
satır başı gösterildiğinde ekrana gelir ve ardından while
1 ile eklenen geçerli saatin mevcut saate eşit olup olmadığını kontrol etmeye devam ettiğimiz bir döngüye gireriz. Eğer öyleyse, döngü devam edin. Sadece bir sonraki saatin gerçekleştiği an olana kadar görüntüleriz dary!
ve satır başı sonra gelir.
MATLAB'ın saati, 24 saatlik endekslemeye dayanmaktadır, bu nedenle mod
taban 24 ile operasyonun, öğleden sonradan 23: 00'ten gece yarısına (00: 00) kadar işlemesi gerekir.
Küçük Not
hour
Fonksiyon Mali Zaman Serisi araç kutusunu gerektirir. now
Fonksiyon bu kısıtlamaya tabi değildir, ama bir seri numarası olarak geçerli tarih ve saati alır hour
böylece şimdiki saat hesaplamak için kullanır.
Bunu Octave'da mı çalıştırmak istiyorsun?
Elbette! Octave bu araç kutusuna sahip olmadığından, sadece 6 elemanlı bir vektör döndüren , hour
fonksiyonu datevec
yıl, ay, gün, saat, dakika ve saniye olarak değiştirecek şekilde değiştirmek zorundayız . Çıktının dördüncü öğesini çıkarmanız gerekir:
a=@()datevec(now)(4);disp('Legen... wait for it...');while(mod(a()+1,24)~=a())end;disp('dary!')
Ek karakterler çözümü 98 bayta kadar çıkarır, ancak bunu Octave'da çalıştırabilirsiniz. İşlev tanıtıcısında geçici bir değişken olmadan yerinde dizin oluşturmayı unutmayın.
Finansal Zaman Serisi Araç Kutusu Yok mu?
Bunu Mali Zaman Serisi Araç Kutusu olmadan MATLAB'da çalıştırmak istiyorsanız , geçici olanında olmadan değişkenlere hemen endeksleyemezsiniz, bu yazmak biraz daha bayt alır:
disp('Legen... wait for it...');h=datevec(now);ans=h;while(mod(h(4)+1,24)~=ans(4)),datevec(now);end;disp('dary!');
Bu, ilk önce o andaki saat ve tarihi alır ve onu değişkene h
kaydeder ve bunun adı verilen otomatik değişkene kaydeder ans
. Ardından, mevcut saatin bir sonraki saate eşit olup olmadığını kontrol etmeye devam ediyoruz. Her yinelemede, otomatik değişkeni mevcut saat ve tarihle güncellemeye devam ediyoruz. Bir sonraki saat şu anki saat ve tarihle eşleştiğinde, dizenin son bölümünü görüntüleriz ve çıkarız. Bu, bayt sayısını 114'e çıkarır.
Ayrıca bunu çevrimiçi deneyemediğinizi unutmayın. Çevrimiçi ortamda Octave tercümanları, kod yürütüldüğünde bir zaman sınırına sahip olacak ve bu, bir while
sonraki saatin gerçekleşmesini bekleyen bir döngü olduğundan , kodun çalışmasını beklerken zaman aşımına uğrayacaksınız. Yapabileceğiniz en iyi şey kendi makinenizde çalıştırmak ve çalışıp çalışmadığını kontrol etmek.