디지털 시계 표시
(나는 많은 시계 도전이있는 것을 보았습니다. 나는 그들을 모두 읽으려고 노력했습니다. 이것이 독창적이라고 확신합니다)
계속 형식으로 표시되는 디지털 시계를 업데이트하는 코드 작성 h:m:s
곳 h
, m
그리고 s
1 또는 2 개의 문자를 점유 할 수 있습니다. @BlueEyedBeast와 같은 간단한 용어로 제한 사항은 기본적으로 표시된 시간을 대체하기를 원합니다.
- 개행은 허용되지 않습니다
- 후행 공백이 허용됩니다
- 다른 후행 문자는 허용되지 않습니다
- 몇 초도 놓치지 않아야합니다 (57-> 59는 허용되지 않음).
- “0”으로 시작하는 숫자는 2자를 초과하지 않는 한 허용됩니다.
- 코드는 어떤 입력도받지 않아야합니다
- 입력 한 언어가 현재 시간을 입력하지 못하면 표준 적으로 허용되는 방식으로 최대 8 바이트를 입력 할 수 있습니다.
- 출력은 표준 출력이어야합니다
- 이것은 codegolf이므로 최단 답변이 승리합니다!
예
이 프로그램은> <>에서 불가능하기 때문에 *> <> (불가사리)라는 언어로 작업하고 있습니다 (파일 i / o를 기다리십시오). 여기에 작동하는 디지털 시계 프로그램이 있습니다 (무용지물). 이 프로그램은 *> <>로 작성되었습니다 .
s":"m":"hnonon" "ooo88888888888ooooooooooo1S
참고 : s = 초, m = 분, h = 시간, S = 절전 (100ms * x)을 제외하고 모든 것이> <>와 동일합니다.
이 결과는 다음과 같습니다.
14:44:31
종료 될 때까지 100ms마다 업데이트
허용되지 않는 예
다음은 허용되지 않습니다 :
1:
14:44:3114:44:32
2 :
14:44:31 14:44:32
삼:
14:44:31
14:44:32
보이는 후행 문자없이 출력 된 첫 번째 라인에 시간이 남아 있어야합니다. 그러나 터미널을 지우면 여전히 후행 문자가 없으므로 허용됩니다.
답변
답변
HTML + JS (ES6), 8 + 60 = 68 바이트
Chrome에서 테스트되었습니다.
-1 바이트 (@ETHProductions) : 대신 프랑스어 시간 형식을 사용하십시오. .toTimeString().slice(0,8)
HTML + JS (ES6), 8 + 62 = 70 바이트
이것은 FireFox에서 작동합니다.
-3 바이트 (@ETHProductions) : 대신 프랑스어 시간 형식을 사용하십시오. .toTimeString().slice(0,8)
답변
파이썬 2, 50 바이트
( ctime
인수가없는 Python 2.1 이상 )
import time
while 1:print'\r'+time.ctime()[11:19],
time.ctime()
hh : mm : ss를 사용하여 슬라이스 할 수있는 형식화 된 문자열을 생성합니다 [11:19]
(날짜와 시간에 관계없이 동일한 위치에 유지됨).
print
'\r'
텍스트 앞에 캐리지 리턴 을 적용하고 텍스트를 튜플의 첫 번째 항목으로 설정 ,
하면 암시 적 후행 을 효과적으로 억제 '\n'
하고 이전에 작성된 출력을 덮어 씁니다.
while 1
영원히 반복됩니다.
답변
Mathematica, 48 41 37 28 바이트
Do[s=Now[[2]],∞]~Monitor~s
출력은 TimeObject
계속 새로 고침됩니다.
대체 버전
48 바이트 :
Dynamic@Refresh[TimeObject[],UpdateInterval->.1]
53 바이트 :
Dynamic@Refresh[DateString@"Time",UpdateInterval->.1]
답변
프로그램을 중지하기위한 비 신호 UI 입력에 대한 요구 사항이 제거되었음을 알 수 있습니다. 이제 우리는 할 수 있습니다 :
배쉬 + 코어 유틸리티, 28
yes now|date -f- +$'\e[2J'%T
yes
줄당 한 번씩 문자열 “now”를 파이프로 지속적으로 출력합니다.
date -f-
읽기는 각 “지금”을 현재 시간으로 해석 한 다음 필요한 형식으로 출력합니다. 형식 문자열에는 화면을 지우는 ANSI 이스케이프 시퀀스가 포함됩니다. date
않는 출력이 날짜 이후에 줄 바꿈 – 아니에요 확인하면 화면이 어쨌든 때마다 삭제되기 때문에이 자격을 상실.
자격이 상실되면 tr
대신 사용할 수 있습니다 .
배쉬 + coreutils, 31
yes now|date -f- +%T|tr \\n \\r
이전 답변 :
배쉬 + X, 32
xclock -d -update 1 -strftime %T
불행히도 이것은 매 초마다 업데이트 할 수 있습니다. 자격이 상실되면 대신 다음과 같이 할 수 있습니다.
배쉬 + 코어 유틸리티, 43
until read -t0
do printf `date +%T`\\r
done
답변
QBIC , 6 바이트
{_C?_d
{ Starts a DO-loop
_C CLS
? PRINT
_d TIME$
화면을 계속 지우고 시스템 시간을 형식으로 인쇄합니다 22:03:41
.
답변
Clojure에서, 150 (136) 141 바이트
V3 : 141 바이트 🙁
버그 수정을 위해 +5 바이트 시간이 0으로 채워지지 않으므로 시간이 변경되면 시계가 “축소”되고 확장 될 수 있습니다. 마지막 자리가 더 이상 지워지지 않았기 때문에 줄어든 때 “번짐”이었습니다. 모든 부분을 덮어 쓰도록 끝에 공백을 추가하여 수정했습니다.
#(while true(flush)(print(str(apply str(repeat 9"\b"))(.format(java.text.SimpleDateFormat."H:m:s")(java.util.Date.))" "))(Thread/sleep 99))
V2 : 136 바이트
#(while true(flush)(print(str(apply str(repeat 9"\b"))(.format(java.text.SimpleDateFormat."H:m:s")(java.util.Date.))))(Thread/sleep 99))
-14 바이트를 사용 SimpleDateFormat
하여 날짜 형식화 로 전환 합니다. 여전히 큽니다.
V1 : 150 바이트
#(while true(let[d(java.util.Date.)](flush)(print(str(apply str(repeat 9 "\b"))(.getHours d)":"(.getMinutes d)":"(.getSeconds d)))(Thread/sleep 100)))
나는 아마도 날짜를 얻는 데 최악의 방법을 사용하고 있음을 깨달았습니다. 확실히 개선의 여지가 있습니다.
언 골프 드 :
(defn -main []
(while true
(let [d (java.util.Date.)]
(flush)
(print
(str
(apply str (repeat 9 "\b"))
(.getHours d)":"(.getMinutes d)":"(.getSeconds d)))
(Thread/sleep 100))))