루아
몇 가지 요구 사항에 대해 확신하지 못했기 때문에 4 가지 솔루션이 있습니다.
버전 1 : 0 제거, 명령 줄 입력 및 os.time () 백업 (315)
최소화 :
z=arg if z[1] then y={hour=z[1],min=z[2],sec=z[3],day=1,month=1,year=1}end h,g,e,u=os.date,os.time(y),":",tonumber while 1 do g=g+1 b,c,d=u(h("%H",g)),u(h("%M",g)),u(h("%S",g)) a=b..c..d for x=1,#a/2 do p=1 for _ in a:gmatch(a:sub(1,x))do p=p+1 if p>math.ceil(#a/x) then print(b..e..c..e..d)return 1 end end end end
주석이있는 정식 버전 :
z=arg if z[1] then y={hour=z[1],min=z[2],sec=z[3],day=1,month=1,year=1}end --get command line arguments
h,g,e,u=os.date,os.time(y),":",tonumber --set up references, if command line arguments accepted use y else use current time
while 1 do
g=g+1
b,c,d=u(h("%H",g)),u(h("%M",g)),u(h("%S",g)) --get HH:MM:SS seperately (which allows removal of the zeroes with tonumber())
a=b..c..d --concat
for x=1,#a/2 do --check up to half of the string
p=1
for _ in a:gmatch(a:sub(1,x))do --for each match
p=p+1 --count number of matches
if p>math.ceil(#a/x) then print(b..e..c..e..d)return 1 end --if matches span entire string, cheer (and print in a pretty format)
end
end
end
다른 버전은 매우 유사하므로 최소화 된 버전 만 게시합니다.
버전 2 : 명령 행 입력 없음 (239)
h,g,e,u=os.date,os.time(),":",tonumber while 1 do g=g+1 b,c,d=u(h("%H",g)),u(h("%M",g)),u(h("%S",g)) a=b..c..d for x=1,#a/2 do p=1 for _ in a:gmatch(a:sub(1,x))do p=p+1 if p>math.ceil(#a/x) then print(b..e..c..e..d)return 1 end end end end
버전 3 : 제거 없음, 명령 줄 입력 (240)
z=arg if z[1] then y={hour=z[1],min=z[2],sec=z[3],day=1,month=1,year=1}end h,g=os.date,os.time(y) while 1 do g=g+1 a=h("%H%M%S",g) for x=1,3 do p=1 for _ in a:gmatch(a:sub(1,x))do p=p+1 if p>6/x then print(h("%T",g))return 1 end end end end
버전 4 : 멋진 기능 없음 (0 제거 또는 명령 행 입력 없음)
h,g=os.date,os.time() while 1 do g=g+1 a=h("%H%M%S",g) for x=1,3 do p=1 for _ in a:gmatch(a:sub(1,x))do p=p+1 if p>6/x then print(h("%T",g))return 1 end end end end
사용 지침
터미널에서 실행 (버전 1 및 3)
lua interesting.lua HOURS MINUTES SECONDS
아니면 그냥
lua interesting.lua
시스템 시계를 끄려면
기능 완성에 대한 상이 있습니까? :피