Lua
ฉันมีวิธีแก้ไขปัญหาสี่แบบเนื่องจากฉันไม่แน่ใจเกี่ยวกับข้อกำหนดบางประการ
รุ่น 1: การลบ 0s การป้อนข้อมูลบรรทัดคำสั่งรวมถึงการสำรองข้อมูล 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: ไม่มีการลบ 0 พร้อมอินพุตบรรทัดคำสั่ง (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 หรืออินพุตบรรทัดคำสั่ง) (164)
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
หากคุณต้องการให้มันปิดระบบนาฬิกา
มีรางวัลสำหรับความสมบูรณ์ของคุณสมบัติหรือไม่ : P