Xuất thời gian hiện tại


49

Thử thách

Bạn phải xuất thời gian hiện tại liên tục (cho đến khi bị hủy bởi một ngắt), mỗi giây một lần, bằng bất kỳ phương tiện nào sau đây:

  • Nó phải ở định dạng 24 giờ hoặc AM / PM.
    • Nếu là cái trước, nó phải được đặt cách nhau bằng dấu hai chấm (tức là 15:47:36).
    • Nếu là cái sau, nó phải được đặt cách nhau bằng dấu hai chấm và có AM / PM theo sau (tức là 3:47:36 PM)
  • Nó có thể được kéo từ internet.
  • Nó có thể là thời gian hệ thống.
  • Nó phải xuất bất kỳ dạng đầu ra có thể truy cập tự nhiên nào hỗ trợ văn bản mà bạn chọn.
  • Đầu ra có thể có thêm thông tin ngoài thời gian trong đó, nhưng bạn phải đảm bảo một, và chỉ một, đầu ra thời gian mỗi giây.
  • Đầu ra liên tục phải cách nhau một giây - nếu bạn chọn đợi cho đến khi thay đổi thứ hai giữa các đầu ra, điều đó là tốt. Nếu bạn đợi một giây giữa mỗi đầu ra, điều đó là hoàn toàn chấp nhận được, mặc dù mất độ chính xác cuối cùng.

Vì đây là một danh mục, các ngôn ngữ được tạo sau thử thách này được phép cạnh tranh. Lưu ý rằng phải có một thông dịch viên để trình có thể được kiểm tra. Được phép (và thậm chí được khuyến khích) tự viết trình thông dịch này cho một ngôn ngữ chưa được thực hiện trước đó. Ngoài ra, tất cả các quy tắc tiêu chuẩn của phải được tuân theo. Đệ trình trong hầu hết các ngôn ngữ sẽ được ghi bằng byte trong một mã hóa có sẵn từ trước (thường là UTF-8).

Mục lục

Đoạn trích Stack ở cuối bài đăng này tạo ra danh mục từ các câu trả lời a) dưới dạng danh sách các giải pháp ngắn nhất cho mỗi ngôn ngữ và b) dưới dạng bảng xếp hạng tổng thể.

Để đảm bảo rằng câu trả lời của bạn hiển thị, vui lòng bắt đầu câu trả lời của bạn bằng một tiêu đề, sử dụng mẫu Markdown sau:

## Language Name, N bytes

nơi Nlà kích thước của trình của bạn. Nếu bạn cải thiện điểm số của mình, bạn có thể giữ điểm số cũ trong tiêu đề, bằng cách đánh bại chúng thông qua. Ví dụ:

## Ruby, <s>104</s> <s>101</s> 96 bytes

Nếu bạn muốn bao gồm nhiều số trong tiêu đề của mình (ví dụ: vì điểm của bạn là tổng của hai tệp hoặc bạn muốn liệt kê riêng các hình phạt cờ của thông dịch viên), hãy đảm bảo rằng điểm thực tế là số cuối cùng trong tiêu đề:

## Perl, 43 + 2 (-p flag) = 45 bytes

Bạn cũng có thể đặt tên ngôn ngữ thành liên kết sau đó sẽ hiển thị trong đoạn trích:

## [><>](http://esolangs.org/wiki/Fish), 121 bytes


"Cho đến khi bị hủy bởi một ngắt" bao gồm đóng chương trình hay nó cần một cơ chế để dừng chu trình được mã hóa vào nó?
dùng81655


1
Cảnh báo: Tất cả sleep 1quy tắc ngắt câu trả lời dựa trên 5: bạn phải đảm bảo một, và chỉ một, đầu ra thời gian mỗi giây. !!
F. Hauri

1
F. Hauri: Làm sao vậy? Quy tắc 6 nói "Nếu bạn đợi một giây giữa mỗi đầu ra, điều đó cũng tốt."
YetiCGN

1
@Jasen Không, nhưng ý nghĩa của "điều đó là tốt" ngụ ý rằng tùy chọn chờ vẫn còn hiệu lực, bất kể mất thời gian cuối cùng. Tôi đã làm rõ điều này cho bạn.
Addison Crump

Câu trả lời:


56

Minecraft 1.8.7, 7 + 8 = 15 blyte (byte + khối)

Chỉ có một khối lệnh liên quan:

xp 1 @p

Đầu ra đi đến bảng điều khiển máy khách như vậy:

lần

Là một phần của đầu ra bình thường.

Đây là hệ thống:

hệ thống

xpcung cấp một lượng kinh nghiệm xác định cho một người chơi được chỉ định với cú pháp xp <amount> <player>. Tôi khá chắc chắn rằng đây là lệnh nhỏ nhất có đầu ra duy nhất mà tôi có thể nhận được ngay bây giờ.


3
Đừng nói "19 byte" vì bạn không đo kích thước câu trả lời của mình theo byte.
frageum

6
@feersum Có một lý do để tôi nói byte, hãy tin tôi. Đây là điều gần nhất với sự đồng thuận cho MC cho đến nay.
Addison Crump

4
Bạn có thể sử dụng mã số không dùng nữa được không?
Conor O'Brien

4
Sử dụng hệ thống tính điểm này nếu bạn muốn, 19 người thích, nhưng không phải là 19 byte, vì không có mã hóa được xác định trước đó cho phép bạn lưu trữ giải pháp này trong tệp 19 byte.
frageum

1
@ CᴏɴᴏʀO'Bʀɪᴇɴ Tôi phải gói nó trong JSON, tôi tin thế. Trừ khi tôi sử dụng 1.6, nhưng thực tế đó là một ngôn ngữ khác.
Addison Crump

17

JavaScript, 32 byte

setInterval("alert(Date())",1e3)

Sử dụng thực tế là setInterval đánh giá mã. Điều này không được khuyến khích, nhưng khi đó là một mối quan tâm trong môn đánh gôn?

Date() trả về thời gian và ngày hiện tại theo định dạng như thế này (có thể thay đổi theo từng hệ thống).

 Wed Jul 28 1993 14:39:07 GMT-0600 (PDT)

setInterval(alert,1e3,Date())Thay vào đó sẽ làm việc?
Sản xuất ETH

@ETHproductions Nó luôn hiển thị cùng thời gian với tôi
ev3commander 9/12/2015

@ETHproductions trong ví dụ của bạn Date()sẽ chỉ được đánh giá một lần khi bạn tạo khoảng thời gian
MMM

15

sh (+ xem), 11 byte

Kịch bản:

watch -n1 .

(không có dòng mới)

Đầu ra:

Every 1,0s: . (SPACES) Sat Nov 28 19:07:51 2015

Số lượng không gian phụ thuộc vào chiều rộng thiết bị đầu cuối.

Đã thử nghiệm trên Debian8 và NetBSD7.


Công cụ phù hợp cho công việc, +1
Addison Crump

Đợi đã, đây có phải là ngôn ngữ lập trình không? Bạn có thể cho tôi một liên kết đến một thông dịch viên?
Addison Crump

@VoteToC Đóng watchlà một coreutil. Ngôn ngữ thực sự là bash / sh.
tay nắm cửa

Vậy ... không nên thế này Bash (distribution)chứ watch? @Doorknob
Addison Crump

1
Hmm Bạn phải sử dụng -pcông tắc để không phá vỡ quy tắc bạn phải đảm bảo một và chỉ một, đầu ra thời gian mỗi giây. !!
F. Hauri

15

Chụp , 8 7 6 khối


(Có, tôi đã thay đổi nó trong MS Paint vì tôi quá lười để tạo một ảnh chụp màn hình khác. Vậy thì sao? Ít nhất là nó có thể đọc được.)
Nhấp vào tập lệnh để chạy
đồng hồ 24 giờ.


2
Tôi luôn yêu thích các ngôn ngữ lập trình đồ họa. : D +1
Addison Crump

oh hey ev3! Tôi biết bạn từ các diễn đàn Snap / Scratch: P tại sao bạn cần Snap thay vì Scratch, chính xác?
anOKsquirrel

2
@anOKsquirrel Vì tôi không cần phải lồng tất cả các khối tham gia đó.
ev3commander

Không nên đọc 9:21:08?
Lu-ca

@Luke Như được hiển thị bởi câu trả lời TI-BASIC, thời gian không có số 0 đứng đầu trong một đầu ra là ổn. Nó là con người có thể đọc và rõ ràng thời gian là gì.
Addison Crump

11

Python 2, 47 byte

from time import*
while[sleep(1)]:print ctime()

Không có liên kết trực tuyến vì ideone hết thời gian (huehuehue) trước khi in bất cứ điều gì.

Cảm ơn @xsot về while[sleep(1)]mánh khóe và ctimemánh khóe.

In ra ngày giờ hiện tại như vậy: Fri Nov 27 21:23:02 2015


2
/ tôi vỗ tay chậm rãi khi chơi chữ. Mego rất vui tính. ; D
Addison Crump


sleep 1dựa trên quy tắc phá vỡ câu trả lời 5: bạn phải đảm bảo một, và chỉ một, đầu ra thời gian mỗi giây.
F. Hauri

@ F.Hauri sleep 1khiến luồng hiện tại ngủ chính xác trong một giây. Nó tuân thủ các quy tắc.
Mego

1
@ F.Hauri Xem xét rằng bản thân tác giả thách thức sử dụng tương đương sleep(1)trong cả giải pháp AppleScriptgiải pháp bash Vitsy + của mình , rõ ràng có thể chấp nhận được.
Mego

9

Perl, Dòng lệnh, 24 byte

sleep(say)while$_=gmtime

Điều này phải được chạy từ dòng lệnh, vì perl -E'sleep(say)while$_=gmtime'(trên windows, sử dụng dấu ngoặc kép thay thế). Ngày sẽ là đầu ra cùng với thời gian, dường như được cho phép .


Perl, 25 byte

sleep print$/.gmtime;do$0

Trong ngữ cảnh vô hướng, gmtimesẽ trả về một chuỗi tương tự Sat Nov 28 10:23:05 2015. Kết quả từ print, luôn luôn là 1, được sử dụng làm tham số cho sleep. do$0được sử dụng để thực thi lại tập lệnh, sau khi bộ đếm thời gian kết thúc.


2
Bằng chứng là giải phápbình luận AppleScript của @ VoteToClose , bạn không cần phải trích xuất thời gian.
Mego

1
Một giải pháp 24 byte khác : {sleep say~~gmtime;redo}.
Denis Ibaev 17/05/2016

sleep 1dựa trên quy tắc phá vỡ câu trả lời 5: bạn phải đảm bảo một, và chỉ một, đầu ra thời gian mỗi giây .
F. Hauri

@ F.Hauri quy tắc đã được thêm vào sau khi bài đăng này được thực hiện.
primo

9

Javascript ES6, 43 39 byte

setInterval(_=>console.log(Date()),1e3)

Hoạt động với cài đặt thời gian hiện tại của tôi (ít nhất đã không được thay đổi trong một thời gian, cảm ơn bạn), ít nhất.

4 byte được lưu bởi Conor O'Brien.


cảnh báo ngắn hơn?
Maltysen

8
@Maltysen Tôi nghĩ rằng trong nhiều trình duyệt, bạn phải đóng một cửa sổ cảnh báo để xem cái tiếp theo.
flawr

@Maltysen Tôi đã thử nó, làm rối tung khoảng thời gian nào đó
SuperJedi224

1
Bạn không cần .toTimeString()trong Chrome và FF.
Bob

1
Tôi nghĩ bạn có thể thay thế new Date()bằngDate()
Conor O'Brien

8

Arcyóu , 27 byte

(@ t(pn(zz 1)(p(st %H:%M:%S

Tôi đã phải kết hợp hai chức năng mới cho thử thách này zzst.

pn: Chính xác như của Lisp progn.

zz: Liên kết trực tiếp đến Python's time.sleep.

st: Liên kết trực tiếp đến Python's time.strftime.

Thông thường, các trích dẫn sẽ là cần thiết xung quanh chuỗi định dạng, nhưng vì không có khoảng trắng, nên nó được phân tích cú pháp như một biểu tượng. Trình thông dịch đánh giá các ký hiệu không xác định là chính chúng, vì vậy chúng tôi nhận được một chuỗi.


1
Tôi sẽ bỏ phiếu, nhưng tôi không còn phiếu nào. +1; c Và cập nhật tốt đẹp. : D
Addison Crump

7

Bash, 51 31 24 21 20 byte

Cảm ơn @quartata cho một số ý kiến ​​rất hữu ích. Cảm ơn bạn @Dennis vì đã làm rõ và cắt bớt nhiều byte hơn nữa. Cảm ơn bạn @VoteToC Đóng đã làm rõ các quy tắc (dường như tôi rất tệ trong việc đọc) tiếp tục giảm các byte.

datehiển thị ngày đầy đủ với đồng hồ 24 giờ. sleep 1Ngủ một giây. exec $0vòng lặp kịch bản vô hạn.

date;sleep 1;exec $0

Bạn không cần shebang.
một spaghetto

Ngoài ra, tôi nghĩ rằng bạn có thể thay thế truevới sleep 1từ sleeplợi nhuận một 1.
một spaghetto

date +%T;sleep 1;exec $0ngắn hơn một chút @quartata Nitpicking: sleepcó mã thoát bằng 0, đó là lý do tại sao whiletiếp tục.
Dennis

3
Ôi tôi là một thằng ngốc
một spaghetto

2
Bạn không cần dung lượng sau date, vì vậy đây chỉ là 20 byte.
ThisSuitIsBlackNot

6

Befunge 98, 53 byte

 v
v>"EMIT"4(>H.8,':,M.8,':,S:.8,d,
>:S-    !!k^

Ghi chú:

  1. Chương trình này không đệm số mà nó in.
  2. Chương trình này in một khoảng trắng và sau đó là một ký tự backspace sau mỗi số, vì .lệnh sẽ in một khoảng trắng ẩn ở cuối.
  3. Kích thước của ngăn xếp trong chương trình này tăng lên mỗi giây và do đó cuối cùng nó sẽ hết bộ nhớ.
  4. Chương trình này sẽ ghi đè lên lần trước khi nó in một cái mới. Để làm cho nó in mỗi lần trên một dòng mới, thay đổi ddòng đầu tiên thành một dònga

Tại sao chuỗi "TIME" cần thiết? Có cách nào đó lấy nó không? (Tôi không biết về điều này)
Addison Crump

Các "EMIT"4(vào lúc bắt đầu của chương trình đang nói với người phiên dịch để nạp TIMEvân tay, cho phép người H, MShướng dẫn. (Không, nó không phát ra số 4).
pppery

Điều đó thật tuyệt vời . Tôi thậm chí không bao giờ nghĩ rằng nhiều esolang sẽ làm điều này, +1.
Addison Crump

@VoteToClose Befunge 98 thậm chí còn có một hướng dẫn để thực hiện chương trình trọng tài xuất hiện từ ngăn xếp.
pppery

1
chạy đi để học ngôn ngữ này Xin lỗi ...
Addison Crump

6

mIRC 7,49 20 16 byte

/timer 0 1 $time

Chúng ta có thể kiểm tra điều này ở đâu?
Addison Crump

Bạn phải tải xuống mIRC, đó là ứng dụng khách IRC chia sẻ. Bạn cũng có thể tải xuống từ: mirc.com vì câu trả lời ở trên sử dụng saybạn sẽ cần kết nối với máy chủ và sau đó tham gia kênh. khôn ngoan khác bạn sẽ sử dụng echothay vì say. mIRC có ngôn ngữ kịch bản riêng mSL (ngôn ngữ kịch bản mIRC)
onkarjit

5

AutoHotkey, 50 byte

x::Send,% a!=A_Sec? A_Hour ":" A_Min ":" a:=A_Sec:

Ghi chú:

  1. Yêu cầu bạn giữ xcho đầu ra liên tục.
  2. Hủy bỏ ngón tay của bạn xđể làm gián đoạn và kết thúc đầu ra.
  3. Đầu ra ở định dạng 24 giờ.

2
Bạn có thể, thêm một vài byte, đặt nó vào một chú giải công cụ để nó không yêu cầu người dùng giữ x.
Michelfrancis Bustillos

5

C (trên Linux x64), 179 177 175 168 159 byte

#include<time.h>
#include<sys/time.h>
main(){struct timeval a;char b[9];for(;;){gettimeofday(&a,0);strftime(b,9,"%T",localtime(&a.tv_sec));puts(b);sleep(1);}}

Ung dung:

#include <time.h>
#include <sys/time.h>
main(){
  struct timeval a;
  char b[9];
  for(;;){
    gettimeofday(&a, 0);
    strftime(b, 9, "%T",localtime(&a.tv_sec));
    puts(b);
    sleep(1);
  }
}

Chỉ được thử nghiệm và có thể chỉ có các chức năng trên, linux x64 (x32 có thể hoạt động, nhưng các nền tảng khác có thể sẽ không hoạt động).

Sự khác biệt chính giữa chương trình này và chương trình C được đăng khác là việc sử dụng các lệnh gọi hàm độc quyền linux, trong khi, thực tế khủng khiếp cho phần mềm thực, sẽ tiết kiệm được một vài byte ... nếu bạn bỏ qua tất cả các cảnh báo của trình biên dịch.


Chào mừng đến với PPCG! Trừ khi tôi nhầm, tôi tin rằng bạn có thể xóa khoảng cách giữa #include<...>. Ngoài ra, bạn có thể sử dụng 1e6thay vì 1000000?
Addison Crump

@VoteToC Đóng Bạn đã đúng về khoảng trắng trong #includes. Mặc dù vậy, nó không giống như chúng ta ngủ () chấp nhận 1e6, tuy nhiên - dựa trên tốc độ nó bắt đầu phun ra dấu thời gian, nó chỉ diễn giải nó là 1.
Gamerdog

¯ \ _ (ツ) _ / Tôi cũng không thực sự biết C. Tôi sẽ để các chuyên gia ở đó. Chào mừng bạn một lần nữa, có một cuộc bỏ phiếu lên. : D
Addison Crump

À, một điều nữa - bạn không phải cắt chuỗi chỉ trong một thời gian, vì vậy bạn chỉ có thể xuất toàn bộ thời gian ngày, miễn là nó có chuỗi thời gian cần thiết trong chuỗi.
Addison Crump

2
Bạn có thể sử dụng %Tnhư định dạng spec trong strftime.
Mego

5

Jolf , 14 8 7 byte

Vượt qua 14 là tấn công 1? Không, nó sẽ không bao giờ bắt kịp;)

Hãy thử nó ở đây! Nhấp vào chạy, không nhấp vào bất cứ điều gì khác ^ _ ^ trang rất ... bùng nổ. Đúng. Đã sửa lỗi hệ thống đầu ra với bản cập nhật.

TaD#`~2

(Tôi đã thêm một số hằng số, và ~1để ~4là lũy thừa của 10.)

Giải trình

setInterval("alert(Date())",1000);
     T         a      D#   ` ~2

4
Ai đó nên tạo YAJSGV (Yet Another JavaScript Golfing Variant).
intrepidcoder

Điều này dường như in nhiều hơn chỉ là thời gian.
Dennis

1
@Dennis Tôi cho rằng điều đó cũng ổn theo các giải pháp
Conor O'Brien

Thật tệ, tôi chỉ đọc câu trả lời của bạn và Bash.
Dennis

@Dennis Không thành vấn đề ^ _ ^
Conor O'Brien

5

APL Dyalog , 27 18 16 byte

':',¨⎕TS⋄→≢⎕DL 1

Hãy thử trực tuyến!

⎕TSYMD hmst trả
':',¨trước: cho mỗi
câu lệnh mới
⎕DL 1đợi một giây và trả lại thời gian chờ thực tế; 1 giây giây
kiểm đếm thời gian chờ thực tế, cho 1
đi đến dòng (1 = dòng này)


4

Perl 6 , 29 byte

Cách đúng đắn để làm điều này:

Supply.interval(1).tap: -> $ {
  say join ':',.hour,.minute,.whole-second given DateTime.now
}
await Promise.new; # halt this thread indefinitely
22:21:58
22:21:59
22:22:0
22:22:1
22:22:2
…

Phiên bản chơi gôn

loop {sleep say join ':',now.polymod(1,60,60,24)[31]} # 56 bytes
3:59:26
3:59:27
3:59:28
3:59:29
…

Vì đầu ra không bị giới hạn chỉ trong thời gian, tôi có thể làm cho nó ngắn hơn một chút.

loop {sleep say DateTime.now} # 29 bytes
2015-11-27T22:18:10-06:00
2015-11-27T22:18:11-06:00
2015-11-27T22:18:12-06:00
2015-11-27T22:18:13-06:00
…

4

R, 38 byte

repeat{Sys.sleep(1);print(Sys.time())}

Điều này xuất ra thời gian hiện tại theo định dạng sau:

[1] "2015-11-28 07:34:01 CET"

4

Powershell, 19 byte

for(){date;sleep 1}

Như đã chỉ ra rằng sản lượng chỉ cần bao gồm hh: mm: ss bạn có thể giảm xuốngfor(){date;sleep 1}
steve

4

PHP, 37 byte

<?=date('G:i:s');header('refresh:1');

Xuất thời gian máy chủ được định dạng và đặt trang để làm mới mỗi giây.

Tất nhiên, nó phụ thuộc vào kết nối internet của bạn và tốc độ phục hồi nhanh của máy chủ của bạn :)

Bản giới thiệu


Không, không làm mới:Warning: Cannot modify header information - headers already sent
Martijn

@Martijn Tôi không biết bạn có thể làm gì với nó, bởi vì nó hoạt động với tôi :)
nicael

Tôi sẽ xóa downvote vì lợi ích của sự nghi ngờ, nhưng điều này hoạt động chính xác một lần đối với tôi. Đã thử trên hai máy chủ thông thường khác nhau.
Martijn

2
Phụ thuộc vào việc bạn có bật bộ đệm đầu ra hay không.
Andrea

<?=header('refresh:1').date('G:i:s');nên làm việc với thiết lập bffering đầu ra.
Jasen

4

VBA, 69 byte

Bắt thời gian thật dễ dàng, now()Chỉ xuất ra cứ sau 1 giây .... RẤT NHIỀU hơn.

Đây là cách "Đúng" để chờ 1 giây trong VBA. 78 byte

Sub a():Debug.Print Now():Application.Wait Now()+TimeValue("0:0:1"):a:End Sub

Hoặc nếu bạn muốn cắt một số góc và chỉ đúng 86% thời gian là đủ tốt 63 Byte
thêm một SigFig đưa bạn chính xác đến 95% và một phần ba sẽ đưa bạn đến 99,36%

Sub a():Debug.Print Now():Application.Wait Now()+1e-5:a:End Sub

Nếu bạn muốn có được phương pháp trên 100% thì bạn cần 69 Byte (1/86400)

Sub a():Debug.Print Now():Application.Wait Now()+(1/86400):a:End Sub

Tất cả các phương pháp này sẽ vấp ngã trong một Beacuse thứ hai, họ không đợi trong 1 giây, nhưng đợi đến 1 giây. Vào nửa đêm khi đồng hồ rơi trở lại một giờ, đồng hồ này sẽ dừng lại trong 1 giờ và sau đó chọn nơi nó rời đi.

VBA không cho phép Phương thức ngủ nhưng bộ ghép byte của bạn bị hủy. 97 byte

Declare Sub Sleep Lib "kernel32" (ByVal k as Long)
Sub a():Debug.Print Now():Sleep(1e3):a:End Sub

3

JavaScript, 47 38 35 byte

for(p=1;t=Date();p=t)t!=p&&alert(t)

Giải trình

Liên tục kiểm tra nếu thời gian đã thay đổi thì alerts nếu có.

for(
  p=1;
  t=Date();
  p=t
)
  t!=p
    &&alert(t)

Bạn không cần phải lấy chuỗi thời gian. ; D Miễn là nó ở đó ở đâu đó.
Addison Crump

@VoteToC Đóng Oh đúng!
dùng81655

Đừng nghĩ rằng bạn cần +"", như không có new, Date()trả về một chuỗi.
Sản xuất ETH

@ETHproductions Ah, vâng, nó đã bị bỏ lại ở đó từ khi nó được sử dụng new. Cảm ơn đã bắt nó!
dùng81655

3

AppleScript, 51 35 byte

nói lại
đăng nhập ngày hiện tại
trì hoãn 1
kết thúc

Khá dang rõ ràng. In ngày hiện tại, trong đó có thời gian, trì hoãn một giây, sau đó tiếp tục.


1
Vậy còn chờ gì nữa, nó có được phép in ra ngày hiện tại cũng như thời gian không?
một spaghetto

@quartata Có, bất kỳ sự kết hợp nào với thời gian, miễn là thời gian là đầu ra liên tục và được đảm bảo là đầu ra, đều ổn.
Addison Crump

trì hoãn 1 làm gì? tạm dừng 1000000000 ns?
Jasen

@Jasen Đúng vậy.
Addison Crump

3

, 13 ký tự / 25 byte

Ĥ⇀ôᶁ⬮+⬬),1𝕜)

Try it here(Firefox only).

Điều này là đáng ngạc nhiên có thể đọc được.


4
Khi bạn nói "đáng ngạc nhiên có thể đọc được", bạn biết rằng bạn đang đối phó với một ngôn ngữ gây cười. +1
Addison Crump

3

APL Dyalog, 36 byte

Lần này không ngắn lắm.

{⎕←1↓∊'⊂:⊃,ZI2'⎕FMT 3↑3↓⎕TS⋄∇⎕DL 1}1

Điều này xuất ra thời gian 24 giờ, tức là:

14:37:44
14:37:45
14:37:46
...

Giải trình:

  • {... }1: xác định hàm và gọi hàm (đối số bị bỏ qua, nhưng chúng ta cần hàm để gọi hàm đệ quy)
    • ⎕TS: một chức năng hệ thống trả về ngày và giờ hiện tại, theo định dạng năm - tháng - ngày - giờ - phút - giây - mili giây . ( ⎕TS= t ime s tamp)
    • 3↑3↓: bỏ 3 mục đầu tiên (tức là năm - tháng - ngày) và sau đó lấy 3 mục đầu tiên còn lại (giờ - phút - giây).
    • '⊂:⊃,ZI2'⎕FMT: định dạng mỗi số dưới dạng một số nguyên có hai chữ số ( I2) với các số 0 đứng đầu ( Z), có tiền tố là dấu hai chấm ( ⊂:⊃). (Điều này dẫn đến một ma trận.)
    • : Lấy tất cả các phần tử trong ma trận, theo thứ tự hàng. (Điều này cho một vectơ, trong trường hợp này là một chuỗi.)
    • 1↓: thả ký tự đầu tiên (là ký tự phụ :)
    • ⎕←: xuất nó
    • ⎕DL 1: sau đó đợi một giây ( ⎕DL= d e l ay)
    • : gọi hàm đệ quy

{⎕←1↓∊':',¨⍕¨3↑3↓⎕TS⋄∇⎕DL 1}1cho 28 byte, là đủ theo OP .
Adám

Các quy tắc mới cho phép đầu ra rác và không gian ngẫu nhiên, vì vậy bạn có thể thoát khỏi rất nhiều.
Adám


3

Haskell, 98 96 85 byte

import GHC.Conc
import Data.Time
m@main=getCurrentTime>>=print>>threadDelay(10^6)>>m

Phiên bản thay thế bằng cách sử dụng ký hiệu:

main = do
  time <- getCurrentTime
  print time
  threadDelay 1000000
  main

Có được thời gian hiện tại với getCurrentTimetừ Data.Timethư viện, sau đó đưa nó vào print, đợi 1.000.000 micro giây (1 giây) và tự gọi.

Cảm ơn nimi và Mauris!


m@main=...>>mluôn luôn ngắn hơnmain=...>>main
Lynn

Ngoài ra, vì threadDelaydù sao cũng là dành riêng cho GHC, bạn có thể nhập nó từ GHC.Conc
Lynn

3

Mẻ - 34 40 byte

Tôi thích các biến tích hợp:

:A                    //Set label A
echo %time%           //Print the time in 24 hour format
timeout 1    //Wait 1 second (thanks DavidPostill)
goto A                //Jump back to A and repeat

Chắc chắn cần phải có một số sleeplệnh trong Batch bất cứ lúc nào sớm.


Không có giấc ngủ dựng sẵn nhưng có thời gian chờ . Bạn có thể thay thế ping ...bằng timeout 1. Đồng hồ không chính xác khi sử dụng ping. Tốt hơn với timeout;)
DavidPostill

@DavidPostill cảm ơn vì tiền boa, tôi chưa bao giờ biết có một lệnh như vậy trong Windows. :)
GiantTree

@GiantTree Bạn rất hoan nghênh;)
DavidPostill

Golf: xóa :Avà thay thế goto Abằng%0
stevefestl

3

Python 3, 99 byte

Xin lỗi nếu nó định dạng mã lạ, làm điều này từ ipad. (đừng hỏi). Tôi biết mã này rất lớn khi xem xét một số câu trả lời khác, nhưng tôi chưa thấy một con trăn nào nên tôi muốn thêm nó vào.

import time
import datetime
while(True):
 print(datetime.datetime.now().time())
 time.sleep(1)  

Bạn có thể thay thế Truebằng 1và nếu bạn đặt printsleepcác dòng trên cùng một dòng với while(được phân tách bằng dấu chấm phẩy), nó sẽ giúp bạn tiết kiệm khoảng trắng.
ngầmmonail

@undergroundmonorail ok cảm ơn vì mẹo True / 1. Tôi không quen với điều đó vì Java Dosent làm điều đó. Tôi cũng không biết rằng Python cũng có dấu chấm phẩy. Tôi sẽ xem xét điều đó
Ashwin Gupta

3

Java, 300 166 137 125 124 byte

Gần hơn một nửa nhờ vào VoteToClose, Paülo Ebermann và janschweizer!

interface A{static void main(String[]a)throws Exception{for(;;Thread.sleep(1000))System.out.println(new java.util.Date());}}

Ung dung:

interface A {
    static void main(String[] a) throws Exception {
        for (;; Thread.sleep(1000)) System.out.println(new java.util.Date());
    }
}

1
Đơn giản hóa nhập khẩu của bạn: java.util.*thay vì hai java.utilnhập khẩu, java.text.*cho cùng một lý do. Sử dụng for(;;)cho các vòng lặp vô hạn. Sử dụng String[]atrong khai báo chính. Sử dụng interface A{static void main(..., vì điều này sẽ rút ngắn nó hơn nữa. Bạn có thể sử dụng Exceptionhơn InterruptedException, và bạn có thể thay thế exbằng e. Bạn cũng có thể xóa tất cả văn bản bên trong phần bắt, vì điều này không có gì khác.
Addison Crump

1
Vâng, điều giao diện hơi kỳ quặc - Tôi không biết tại sao Java lại để điều đó thành một vấn đề, vì các giao diện được thiết kế đặc biệt là không thể truy cập được.
Addison Crump

1
Hai điều: bạn cần thay đổi chuỗi thời gian thành "HH: mm: ss" - tính đến thời điểm hiện tại, bạn đang định dạng "Giờ: Tháng: Thứ hai". Ngoài ra, vì bạn đang sử dụng một vòng lặp, bạn có thể loại bỏ các khai báo DateFormatCalendarbiến tất cả cùng nhau. Bạn thay thế nội dung của vòng lặp for bằng System.out.println(new SimpleDateFormat("HH:mm:ss").format(Calendar.getInstance().getTime()));try{Thread.sleep(1000);}catch(Exception e){}.
Addison Crump

1
Tất cả những điều tôi vừa đề nghị, kết thúc:import java.util.*;import java.text.*;interface A{static void main(String[]a){for(;;){System.out.println(new SimpleDateFormat("HH:mm:ss").format(Calendar.getInstance().getTime()));try{Thread.sleep(1000);}catch(Exception e){}}}}
Addison Crump

1
throws Exceptionngắn hơn một lần thử / bắt
giai đoạn

3

Perl, 99 81 75 51 40 36 29 27 byte

sleep(print gmtime.$/);do$0

1
Bạn có thể rút ngắn nó bằng cách sử dụng gmtimethay vì localtime.
Brad Gilbert b2gills

2
Ngoài raprintf"%02d:%02d:%02d\n",(gmtime)[2,1,0]
Brad Gilbert b2gills

1
gmtime."\n"sẽ buộc một bối cảnh vô hướng.
primo

1
Bạn gần như không bao giờ cần phải làm ."\n"trong golf: sử dụng .$/để tiết kiệm 2 byte. Ít nhất, hãy sử dụng một dòng mới thay vì \nđể tiết kiệm 1 byte.
ThisSuitIsBlackNot
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.