กะพริบสิบสอง


43

อุปกรณ์อิเล็กทรอนิกส์จำนวนมากซึ่งเป็นอุปกรณ์เก่าโดยเฉพาะจะแสดงการกระพริบ12:00เมื่อไม่ได้ตั้งเวลา จุดประสงค์ของการท้าทายนี้คือการสร้างใหม่

โดยเฉพาะงานคือการแสดง12:00และ--:--อีกทางเลือกหนึ่งในวง จำกัด

ระยะเวลาที่ควรจะเป็น 1 วินาทีแบ่งเท่า ๆ กันในสองช่วงเวลา 0.5 วินาที ที่นี่ "1 วินาที" และ "เท่ากัน" สามารถตีความได้อย่างหลวม ๆ ตัวอย่างเช่นเป็นที่ยอมรับได้หากโค้ดหยุดชั่วคราวเป็นเวลา 0.5 วินาทีระหว่างการแสดงสตริงแม้ว่าช่วงเวลาผลลัพธ์จะสูงกว่า 1 วินาทีเล็กน้อย เริ่มต้นหยุดชั่วคราวก่อนที่จะแสดงสายแรกเป็นที่ยอมรับ

แต่ละสายใหม่ที่สามารถแสดงผลทั้งโดยการแทนที่สตริงอดีตหรือในบรรทัดใหม่ อนุญาตให้มีช่องว่างต่อท้ายยกเว้นว่าหากแต่ละสตริงใหม่อยู่ในบรรทัดที่แตกต่างกันควรไม่มีบรรทัดว่างระหว่างสตริงที่ต่อเนื่องกัน

รหัสที่สั้นที่สุดในหน่วยไบต์ชนะ


1
นี้นับเป็นkolmogorov-complexหรือไม่
FlipTack

@FlipTack ฉันคิดอย่างนั้น แต่ฉันไม่แน่ใจ คิดไหม
Luis Mendo

@ LuisMendo ฉันไม่คิดอย่างนั้นฉันคิดว่าแท็ก KG ส่วนใหญ่เป็นสตริงคงที่ สิ่งนี้มีมากกว่านั้นสตริงการรอและสลับ
Rɪᴋᴇʀ

การส่งสามารถรอ 0.5 วินาทีก่อนที่จะแสดงผลลัพธ์เริ่มต้นได้หรือไม่?
FlipTack

1
IMHO คำสั่ง "แต่ละสตริงใหม่สามารถแสดงได้โดยแทนที่สตริงเดิมหรือในบรรทัดใหม่" ทำให้ความท้าทายนี้ไม่สนุก
Setop

คำตอบ:


4

เยลลี่ , 20 ไบต์

.“12:00“--:--”ṄœS¥€ß

มันทำงานอย่างไร

.“12:00“--:--”ṄœS¥€ß  Main link. No arguments.

.                     Set the return value to 0.5.
 “12:00“--:--”        Yield ["12:00", "--:--"].
                 ¥    Combine the two links to the left into a dyadic chain.
              Ṅ       Print the left argument.
               œS     Sleep as many seconds as the right argument specifies.
                  €   Map the created dyadic chain over the string array, with
                      right argument equal to the return value, i.e., 0.5.
                   ß  Recursive call the main link.

ดังนั้นคุณจะเปลี่ยนทั้งสองสายในรายการให้เป็นลิงก์ของตัวเองโดยเพิ่มคำสั่ง sleep? หวาน.
steenbergh

32

HTML / CSS, 131 108 106 101 + 18 17 = 149 126 125 123 118 ไบต์

a{background:#FFF;margin:-5ch;animation:a 1s steps(2,start)infinite}@keyframes a{to{visibility:hidden
<tt>--:--<a>12:00

แก้ไข: บันทึกแล้ว 23 ไบต์ขอบคุณ @insertusername ที่นี่ ที่บันทึกไว้ 1 ไบต์โดยเปลี่ยนจากการ<pre> <tt>บันทึก 2 ไบต์ขอบคุณ @darrylyeo บันทึก 5 ไบต์ด้วย @DBS


1
@insertusernamehere Bah ฉันเล่นกอล์ฟไปได้a{position:absolute}แต่ลืมเรื่องpre...
Neil

คุณยังต้องการแท็กล่วงหน้าหรือไม่ css ระบุเฉพาะ
ev3commander

@ ev3commander <tt>ฉันบันทึกไบต์โดยการเปลี่ยนไป
Neil

คุณสามารถลบไฟล์สุดท้ายได้}}อย่างสมบูรณ์
darrylyeo

ฉันคิดว่าคุณควรจะลดความซับซ้อนmargin-leftลงmarginเนื่องจากคุณทำงานจากมุมบนซ้ายอย่างไรก็ตามmargin:-5ch;ควรมีผลเช่นเดียวกัน
DBS

15

เชลล์และpv26 ไบต์

ใช้yesเครื่องมือมาตรฐานและpv องค์ประกอบท่อส่งของเชลล์เพื่อวัดข้อมูลที่ส่งผ่าน

yes '12:00
--:--'|pv -qlL2

2
วิธีแก้ปัญหาที่ดี แต่ภาษาควรจะระบุว่า "เชลล์และ pv" เนื่องจาก (สำหรับความรู้ของฉันแล้ว) pv ไม่รวมอยู่ในเชลล์ใด ๆ และไม่ได้เป็นส่วนหนึ่งของการใช้งานหลักของ GNU หรือ BSD
Mitchell Spector

1
นั่นเป็นเคล็ดลับที่ดี! (ซึ่งฉันเชื่อว่าถูกบุกเบิกโดย @Digital Trauma ที่นี่ ) ถึงแม้ว่าในกรณีนี้มันให้ความรู้สึกต่อต้านจิตวิญญาณของความท้าทายเนื่องจากพันธกิจคือ "แสดง 12:00 และ -: - หรือ -" (เลียนแบบการแสดงที่กระพริบ) แต่รหัสนี้จะแสดงอักขระเป็นตัวอักษร ที่อัตราคงที่ 12 ตัวอักษรต่อวินาทีแทน ซึ่งหมายความว่า "12:00" จะอยู่บนหน้าจอเป็นเวลา 1/12 (0.08) วินาทีเท่านั้น ("12: 0 _" = 1 / 12s => "12:00" = 2 / 12s => "-")
Zeppelin

@zeppelin ขอบคุณสำหรับการอ้างอิง: ฉันใช้ตัวอย่างของ @ DigitalTrauma -qlL2เพื่อสร้าง 2 บรรทัดต่อวินาทีแทน -qL12: 12 ตัวอักษรต่อวินาที ความยาวของสคริปต์เหมือนกัน
F. Hauri

15

Python2, 80 75 73 69 67 66 ไบต์

import time
n=0
while[time.sleep(.5)]:print"1-2-::0-0-"[n::2];n^=1

ฉันสังเกตเห็นว่าเวทมนต์ของฉันยาวกว่าการเลือกสตริงจากอาร์เรย์ ไม่เป็นไรคิดออก

คำอธิบาย :

  • ฉันตั้งค่าตัวนับnเป็น 0 ซึ่งจะถูกสลับระหว่าง 0 และ 1

  • while 1ผมไม่รู้จบวงกับวง

  • ฉันสร้างสตริง1-2-::0-0-ซึ่งมีสตริง12:00และ--:--อินเทอร์แอพ

    • เริ่มต้นจากดัชนี 0 ด้วยขั้นตอนที่ 2 เราจะได้รับ: 12:00

    • เริ่มต้นจากดัชนี 1 ด้วยขั้นตอนที่ 2 เราจะได้รับ: --:--

  • ฉันใช้nเพื่อสร้างลำดับซ้ำ0 , 1 , 0 , 1 , 0 ... ซึ่งจะเป็นดัชนีเริ่มต้นของสตริง

    • ใช้n^=1ในแต่ละวงเราได้รับลำดับที่ ^เป็นผู้ดำเนินการ XOR
    • ถ้าn == 0 -> ให้n^=1ผลลัพธ์เป็น 1
    • ถ้าn == 1 -> ให้n^=1ผลลัพธ์เป็น 0
  • ฉันพิมพ์สตริงและสลีป ( .5-> 0.5) วินาที

@FlipTackบันทึกแล้ว 4 ไบต์! -> ใส่ลูปเป็นหนึ่งบรรทัด

@Rodบันทึก 2 ไบต์! -> n+=1ไปn^=1จึงจะn%2n

@xnorบันทึกไบต์! -> ->while 1while[time.sleep(.5)]


7
คุณสามารถแทนที่n+=1ด้วยn^=1แล้วใช้[n::2]บันทึก 2 ไบต์และหลีกเลี่ยงตัวเลขขนาดใหญ่ c:
Rod

4
ถ้าคุณเปลี่ยนprint"1-2-::0-0-"[n::2]ไปprint"\b"*6+"1-2-::0-0-"[n::2],มันจะเพิ่มไม่กี่ไบต์ แต่มันจะกระพริบตาในสถานที่
Buzz ที่

1
@Buzz คุณสามารถใช้\rแทน\b\b\b...การย้ายไปที่จุดเริ่มต้นของบรรทัด แต่ต่อไปนี้จะเพิ่มเฉพาะไบต์บนโซลูชันปัจจุบัน
FlipTack

while[time.sleep(.5)]:คุณสามารถบันทึกไบต์ด้วยการทำ
xnor

@ xnor ฉันแน่ใจว่านี่ไม่สามารถเล่นกอล์ฟได้มากกว่านี้ เว็บไซต์นี้ยังคงทำให้ฉันประหลาดใจ ขอบคุณ!
Yytsi

15

คู่, 63 62 61 55 ไบต์

c='--:--00:21';while c=flip(c)disp(c(1:5));pause(.5)end

บันทึกสองไบต์ด้วย Tom Carpenter! การใช้สตริงเดี่ยวแทนที่จะเป็นสองสายในอาร์เรย์เซลล์สั้นลง

คำอธิบาย:

c='--:--00:21';  % A string where the 5 first characters are --:-- or 12:00 when reversed
while c=flip(c)  % A string is always considered true in Octave, so this will loop forever
                 % while flipping the order of the string each time
 disp(c(1:5)     % display the 5 first characters of the string c
 pause(.5)       % Pause 0.5 second
end              % End loop

กี่ไบต์ที่บันทึกไว้เพราะคู่ไม่จำเป็นต้องมีลำไส้ใหญ่หรืออัฒภาคระหว่างflip(c)และdisp()และระหว่างและpause(.5)end


1
เป็นความคิดที่ดีที่จะใช้flipแทนเคาน์เตอร์!
Luis Mendo

11

จาวาสคริปต์, 59 ไบต์

y=1;setInterval('console.log(["12:00","--:--"][y^=1])',500)

คำอธิบาย

setInterval('...',500) ตั้งค่าช่วงเวลาในการเรียกใช้โค้ดในสตริงทุก ๆ 500 มิลลิวินาทีหรือ 1/2 วินาที

y=1ตั้งค่าตัวแปรyให้เป็น 1 เริ่มแรก วิธีการที่สิ่งแรกที่จะมีการพิมพ์เป็น12:00เพราะyใช้ในการเข้าถึงอาร์เรย์

console.log(...)บันทึกสิ่งที่ไปยังคอนโซลในการนี้อย่างใดอย่างหนึ่งหรือ12:00--:--

["12:00","--:--"][y^=1]สร้างอาร์เรย์ด้วยสตริงที่มีทั้งสองสถานะ จากนั้นyใช้เพื่อเข้าถึงองค์ประกอบหนึ่งอย่าง สุดท้ายหรือแฮคเกอร์ผู้ประกอบสารประกอบไม่^= y = y ^ 1เพียงแค่นี้ก็ตีความบิตเพราะ1 ^ 1เป็น 0 และ0 ^ 11 คล้ายกับสิ่งที่@TuukkaX ได้ วิธีนี้สตริงบันทึกสลับระหว่างสององค์ประกอบในอาร์เรย์จึงสร้างผลกระพริบ


สามารถบันทึกไบต์ด้วยสิ่งนี้:y=1;setInterval('console.log(y?"12:00":"--:--");y=!y',500)
woutr_be

เคล็ดลับ ETHproductions You can save some bytes with setInterval(...,i=500) :-)ที่คำตอบของฉัน: เรามีคำตอบเดียวกันและมันก็ใช้ได้กับคุณเช่นกัน
Christoph

11

V , 31 30 27 25 24 ไบต์

บันทึก 5 ไบต์ด้วย @ nmjcman101 โดยการสลับลำดับของ12:00และ--:--เพื่อให้kสามารถลบออกได้โดยการลบòเพื่อให้สามารถเพิ่มได้ในตอนท้าย

บันทึก 1 ไบต์ต้องขอบคุณ @DJMcMayhem ด้วยการใส่ทั้งสอง12:00และ--:--ในหนึ่งบรรทัด

i12:00--:--<ESC>bDòVp:sl500m

โซลูชันเก่า:

i12:00<ESC>ò:sl500m
Óä/-
:sl500m
uò

<ESC> คือ 0x1b

hexdump:

00000000: 6931 323a 3030 2d2d 3a2d 2d1b 6244 f256  i12:00--:--.bD.V
00000010: 703a 736c 3530 306d                      p:sl500m

คำอธิบาย

i12:00--:--<ESC>   inserts 12:00\n--:--
bD                 go to the beginning of --:-- and delete it
ò                  recursively do:
 Vp                 select line and paste (effectively doing a replace)
 :sl500m            sleep for 500 milliseconds
                   the last ò is added implicitly at the end

Gif (ล้าสมัย)

หมายเหตุ:ฉันได้เปิดใช้งานการเน้นไว้

Giff


7
คุณกระพริบอย่างแท้จริงใน gif นั้น :-)
Luis Mendo

อย่างที่สองòจะได้รับโดยปริยายดังนั้นคุณสามารถลบได้
DJMcMayhem

@DJMcMayhem òมันด้วยเหตุผลบางอย่างไม่สามารถทำงานได้โดยไม่ต้องสอง มันทำงานเพียงครั้งเดียว
Kritixi Lithos

2
kสลับการสั่งซื้อของปัจจัยการผลิตของคุณเพื่อให้คุณไม่จำเป็นต้องเป็นคนแรก จากนั้นpkddคุณสามารถใช้Vpแทนได้เพราะpในโหมดเลือกภาพจะสลับการเลือกอย่างมีประสิทธิภาพด้วยการลงทะเบียนเริ่มต้น
nmjcman101

1
ฉันรู้ว่าคุณมีปัญหาในการลบòแต่ถ้าใช้งานได้ในตอนนี้ฉันคิดว่าคุณควรจะสามารถเปลี่ยนเป็นòVp:sl500mและให้ V เพิ่ม^Mò2 ไบต์
nmjcman101

11

bash, 58 56 45 ไบต์

บันทึก 3 ไบต์โดยการระงับ--หลังจากsetที่ 1 ARG เป็นตัวเลข

set 12:00 --:--;for((a=1;;a=3-a)){ echo ${!a};sleep .5;}

บันทึก 16 ไบต์โดยใช้ไวยากรณ์ของ@DigitalTrauma :

f()(echo $1;sleep .5);f 12:00;f --:--;exec $0

แล้วสูญเสีย 5 ไบต์เนื่องจากการแสดงความคิดเห็นเหาะ

ไม่สามารถทดสอบได้ในบรรทัดคำสั่ง ในขณะที่เรามีส่วนร่วม$0สิ่งนี้จะต้องเขียนลงในสคริปต์เพื่อให้ทำงาน

โอน

ด้วยการเตรียมเล็กน้อยสิ่งนี้อาจกลายเป็นสิ่งที่ดี ( 412 ไบต์ ):

set -- "         ▗▖         
▗▄▄▖▗▄▄▖ ▝▘ ▗▄▄▖▗▄▄▖
         ▗▖         
         ▝▘         " " ▟▌ ▟▀▜▖ ▗▖ ▗▛▙ ▗▛▙ 
 ▐▌  ▗▟▘ ▝▘ █▗▐▌█▗▐▌
 ▐▌ ▗▛▗▖ ▗▖ ▜▖▟▘▜▖▟▘
▝▀▀▘▀▀▀▘ ▝▘  ▀▘  ▀▘ "
r=`tput cup 0`
clear;for((a=1;;a=3-a)){ printf "$r${!a}";sleep .5;}

หรือแม้กระทั่งสองบรรทัดเดียวกัน แต่มี:

set -- '                                            






      HM!          .o#HMMMMM#o.                 .o#MMMMH#\\         .d#MMMMH#\\
    _HMMi         ?MMH*"""`"MMMb               dMMH"""`*MMH,      dMMH"""`*MMH.
##HMMMMMi        |MMP"       9MML             ?MMP      `MMM.    dMM?      `MMM.
`""`"9MM|        dMM!        -MMR     HMH}   .MMM        |MM}   .MMH        |MM|
     |MM|         "`         JMMT     dHH}   |MM|         MMM   |MM|        -MMM
     |MM!                 .,HMM*             |MM|         MMM.  ]MM|         MMM
     |MMi              _o#MMH*"              |MM|         MMM   {MM|         MMM
     |MMi           .dHMM#""                 |MM|         MMM"  {MM|        .MMM
     |MMi         .HMM*"                     `MM6        ,MMR   |MM}        |MMF
     |MMi        ,MMP"                        9MM,       dMM|    HMM,       dMM"
     {MMi        MMM?\\o,\\\\\\\\\\\\\\\\,     q##+    `HMM\\    .dMM?     `HMH\\    .dMM?
     |MM|       :MMMMMMMMMMMMMMM[     HMMk     `*HMM##MMM#"       `*HMM##MMMP"
      "`          "     ` ` ` `                   """"`""            """"""    ' '









                                      MHM|                                      
                                      HHH|                                      

               ______.  ._______.            ________.  ._______.               
               MMMMMM:  {MMMMMMM|            &MMMMMMM:  |MMMMMMM[               


                                      ###|                                      
                                      MMM|                                      
                                                                               '

3
s(){ echo $1;sleep .5;};for((;;)){ s 12:00;s --:--;}
จัดการ

2
@ การจัดการนีซ! ฉันคิดว่ามันไม่เหมือนกัน! คุณต้องเผยแพร่มันเป็นคำตอบ!
F. Hauri

ฉันต้องยอมรับว่า ASCII art นั้นงดงามอย่างแน่นอน ... คุณใช้เครื่องมือสร้างมันขึ้นมาหรือคุณสร้างมันด้วยมือ?
ETHproductions

2
@ETHproductions ฉันใช้Ghostscript : printf '%%\041\n/Helvetica findfont\n24 scalefont\nsetfont\nnewpath\n%s %s moveto\n(%s) show\nshowpage\n' -2.456 0.550003 12:00 | gs -sDEVICE=pnmraw -r600 -g470x146 -sOutputFile=- -q - | pnmscale -width 160 | ppmtopgm | pgmtopbm | pbmtoascii -2x4;-)
F. Hauri

1
... หรือf()(echo $1;sleep .5);f 12:00;f --:--;$0
Digital Trauma

9

Perl, 49 ไบต์

{select$,,$,,$,,0.5;say$|--?"12:00":"--:--";redo}

Perl sleepไม่สามารถนอนหลับได้เป็นระยะเวลา 1 วินาทีดังนั้นการใช้select undef, undef, undef, .5(เล่นกอล์ฟโดยแทนที่undefด้วย$,) เพื่อนอนหลับ 0.5 วินาที
สิ่งที่น่าสนใจอื่น ๆ : $|ถือได้0หรือ1เท่านั้น ดังนั้น$|--เพียงแค่สลับค่าของมันจากไป0 และในที่สุดก็ทำตัวเหมือนวนวนไม่สิ้นสุด1
{... ;redo}


6

*> <> , 43 42 ไบต์

<v":1200----"
S>@5dov>~r@@}r5
1&}o:&<^!?:-

ลองที่นี่!

ฉันรู้สึกเหมือนฉันควรจะสามารถที่จะทำให้เรื่องนี้สั้นผมมีความคิดที่จะลองคู่ ... :1200----โดยทั่วไปนี้ทำให้สแต็คของ มันแยก:และพลิกสแต็กแทรกที่:ตรงกลางของทั้ง----หรือ1200(ขึ้นอยู่กับสิ่งที่อยู่ในตอนท้ายของสแต็ค)

ฉันควรทราบด้วยว่าคำสั่ง *> <> ที่ใช้นี้คือS(sleep) มิฉะนั้นจะเป็นโปรแกรมที่เหมาะสม> <>

อัปเดต: บันทึก 1 ไบต์โดยเลื่อน:ไปทางขวาแทนที่จะปกป้องด้วยการลงทะเบียน

คำอธิบาย

initialisation

<v":1200----"

ที่นี่เราสร้างสแต็คที่เราจะใช้ตลอดชีวิตของโปรแกรม

<              move the IP left
  ":1200----"  push ":1200----" to the stack
 v             move the IP down into "output time"

เวลาส่งออก

 >@5dov
1&}o:&<^!?:-

นี่คือส่วนที่แสดงเวลาจริง 5 แรกถูกส่งไปยังสแต็กเพื่อให้ลูปด้านล่างรู้ว่าทำงาน 5 ครั้ง

Initialisation:

 >@5dov

 >       move the IP right
  @      move the ":" back two spaces in the stack
   5     push 5 to the stack (let's call this `i`)
    do   output carriage return
      v  move IP down into "loop"

Loop:

1&}o:&<^!?:-

      <       move the IP left
     &        place i onto the register
  }o:         output a character and shift the stack left
 &            place i back onto the stack
1          -  decrement i by 1
       ^!?:   if i == 0, exit to "recover and swap"

กู้คืนและสลับ

S      >~r@@}r5

ที่นี่เรากู้คืน:จากตำแหน่งที่มันส่งผลในหลังจากการส่งออกและเราจบลงด้วยสแต็กกลับ สิ่งนี้จริง ๆ แล้วเข้าสู่ "เวลาเอาต์พุต" เป็นอย่างดีทำให้เกิดการวนซ้ำไม่สิ้นสุด

       >         move the IP right
        ~        remove trailing i from stack
         r@@     reverse the stack and move ":" to the front
            }r   reverse the stack again, keeping ":" on the front
S             5  sleep for 500ms

โซลูชัน 45 ไบต์

<v[5"12:00"1
d/S5
o/!?l
v>]?v
 00.>0"--:--"5[

ลองที่นี่!

อันนี้ก็เป็นโปรแกรม> <>

ฉันคิดว่าจริง ๆ แล้วมันสามารถบันทึกไบต์ด้วยวิธีนี้ได้ นี้ค่อนข้างง่าย outputs แล้ว12:00 --:--ฉันบันทึกไบต์ด้วยการใช้รูทีนเอาต์พุตอีกครั้งo/!?l(ฉันใช้มิร์เรอร์นั้นอีกครั้งเป็นทั้งการเข้าและออก) ผมใช้หลายกองการจัดเก็บรัฐ (มีการส่งออก12หรือ--) v>]?vและเลือกรัฐที่ฉันควรเอาท์พุทด้วย

คำอธิบายจะมาเร็ว ๆ นี้! (1/2)


6

HTML / CSS (Chrome เท่านั้น), 80 + 4 = 84 ไบต์

tt:after{content:"--:--";animation:a 1s infinite}@keyframes a{to{content:"12:00"
<tt>

แก้ไข : แอตทริบิวต์ "เนื้อหา" ไม่animatableโดยสเปค CSSแต่อยู่บนเบราว์เซอร์ Chrome สก์ท็อป


1
ดูเหมือนว่าจะเป็น Chrome ที่เฉพาะเจาะจง อย่างน้อยก็ใช้ไม่ได้กับ Firefox นี่ไม่ใช่ปัญหาวิธีการแก้ปัญหายังคงใช้ได้เพียงแค่ดีที่จะระบุ
จัดการ

6

Noodelขนาดไม่ถึง 16 ไบต์

--:-- 12:00ḷçėḍh

Noodelยังคงทำงานอย่างต่อเนื่องเป็นอย่างมาก แค่พยายามทำให้เท้าฉันเปียกด้วยความท้าทายสองสามข้อ

ลองมัน:)

มันทำงานอย่างไร

--:--            # Creates the string literal "--:--" and places i into the front of the pipe.
                 # Space is a NOP command to separate the string literals.
      12:00      # Creates the string literal "12:00" and places it into the front of the pipe.
           ḷ     # Loop the following code unconditionally.
            ç    # Clear the screen and print a copy of what is in the pipe.
             ė   # Take what is in the front of the pipe and put it into the back.
              ḍh # Delay for half a second.

นี่คือข้อมูลโค้ด :)

<div id="noodel" code="--:-- 12:00ḷçėḍh" input="" cols="10" rows="2"></div>

<script src="https://tkellehe.github.io/noodel/noodel-latest.js"></script>
<script src="https://tkellehe.github.io/noodel/ppcg.min.js"></script>


2
หากล่ามโพสต์นัดที่ท้าทายโปรดทำเครื่องหมายว่า "ไม่แข่งขัน" :) Noodel ดูเรียบร้อยดี แต่ลองใช้ดู
redstarcoder

@redstarcoder โอ๊ะโอ! ขอขอบคุณที่ลืมสิ่งนั้น
tkellehe

คุณสามารถอธิบายการเข้ารหัสได้หรือไม่? มันเพิ่มมากขึ้นกว่า 16 ใน UTF-8
devRicher

1
ฉันดูลิงค์ของคุณมันไม่ได้อธิบายการเข้ารหัส คุณเห็นไม่ใช่อักขระทั้งหมดที่มี 1 ไบต์โดย "default" (UTF-8) ระบุการเข้ารหัสที่มีอยู่หรือสร้างขึ้นมาใหม่ส่วนนี้เป็นจำนวนไบต์ที่ไม่ถูกต้อง ควรมีเมตาโพสต์เกี่ยวกับเรื่องนี้ เว้นแต่คุณจะกำหนดการเข้ารหัสนี่คือ UTF-8 และ 22 ไบต์ @tkellehe
devRicher


5

QBIC , 37 33 ไบต์

{sleep 01?@12:00`┘sleep 01?@--:--

QBasic น่าเสียดายที่สามารถนอนได้เพียงไม่กี่วินาที ฉันจะดูเกี่ยวกับการกำหนดวิธีการเพื่อให้มีความยืดหยุ่นมากขึ้นในไม่ช้า ฉันได้ป้อน 1 เพื่อจำลอง01.5

คำอธิบาย:

{         Starts DO loop
sleep 01  Sleeps for 1 second
?@12:00`  Creates A$, sets value to "12:00" and prints A$
┘         Newline: a string literal doesn't break the line, so we need a newline to 
          control the compiled QBasic syntax
          <Rinse and repeat for "--:--">
          <DO-LOOP implicitly closed by QBIC>

ในรุ่นเก่าของ QBIC $และ (ช่องว่าง) เป็นอักขระที่สงวนไว้ การเรียกฟังก์ชัน QBasic ที่ต้องการการเว้นวรรค (เช่นsleep x) หรือ$( left$(..)) จำเป็นต้องใช้รหัสตามตัวอักษร:

'QBASIC CODE`

รหัสในบล็อกตัวอักษรรหัสจะถูกส่งโดยตรงไปยัง QBasic โดยไม่ถูกแยกวิเคราะห์โดย QBIC ด้วยการลดการใช้งานฟังก์ชั่นจากสัญลักษณ์เหล่านั้น ( $กลายเป็น'และขึ้นบรรทัดใหม่ในขณะนี้(alt-217) แทน) สัญลักษณ์จะไม่ถูกมองเห็นโดย QBIC เป็นตัวอักษรพิเศษและส่งต่อไปอย่างง่ายดาย เช่นเดียวกับตัวอักษรตัวเล็กอย่างมีประสิทธิภาพ: มันใช้เพื่อแสดงตัวแปรตัวเลขทั้งใน QBIC และ QBasic และไม่มีการเปลี่ยนแปลง การใช้ฟังก์ชั่น QBasic ที่ไม่ได้นำไปใช้ใน QBIC (เช่นSLEEP) นั้นเป็นเพียงเรื่องของการไม่ใช้ตัวอักษรลิขสิทธิ์ QBIC สิ่งนี้ทำให้ง่ายขึ้นด้วยการเปลี่ยนแปลงล่าสุดในสัญลักษณ์คำสั่ง


4

JavaScript, 77 76 72 ไบต์

setInterval('l=console.log,l("12:00"),setTimeout("l(`--:--`)",‌​500)',1e3)

ขอบคุณ Kritixi Lithos สำหรับ 1 ไบต์และ L. Serne สำหรับ 4 ไบต์!


1000สามารถย่อให้เล็กลงได้1e3
Kritixi Lithos

2
setIntervalและsetTimeoutยอมรับสตริงที่มีรหัสเป็นอาร์กิวเมนต์แรกเพื่อให้คุณสามารถบันทึก 4B อีก: setInterval('l=console.log,l("12:00"),setTimeout("l(-: -)",500)',1e3)
ลุค

`s หมายถึงตอนนี้ ES6 ในขณะที่คำตอบก่อนหน้าที่จำเป็นเท่านั้น ES5
Neil

4

Python 2 88 85 73 71 ไบต์

import time
c="--:--00:21"
while 1:print c[:5];c=c[::-1];time.sleep(.5)

ลองที่นี่!

โดยการยืมความคิดของStewie Griffin ในการพลิกรายการโปรแกรมก็เป็นไปได้ รุ่นที่ไม่ได้รับการอธิบายพร้อมคำอธิบาย:

import time                      # Import time module
c = "--:--00:21"                 # String with two values
while 1:                         # Infinite Loop
    print c[::5]                 # Print the first 5 chars in string
    c = c[::-1]                  # Flip the string
    time.sleep(.5)               # Wait 0.5 seconds

ขอบคุณ @FlipTack สำหรับการบันทึก 14 ไบต์!


1
คุณสามารถตีกอล์ฟให้สั้นลงได้โดยใช้การแบ่งสตริงเช่นนี้
FlipTack

4

PHP, 51 50 47

for(;;usleep(5e5))echo$i++%2?"--:--
":"12:00
";

บันทึก 1 ไบต์เนื่องจาก manatwork และอีก 3 บันทึกโดย insertusername ที่นี่ ขอบคุณ!


1
หากคุณย้ายการusleep(5e5)เรียกไปยังforพารามิเตอร์ที่ 3 ,ตัวคั่นจะไม่จำเป็นซึ่งจะช่วยประหยัด 1 ตัวอักษร
จัดการ

@Manatwork ขอบคุณ! while(1)ตอนแรกฉันมี
Christoph

2
คุณสามารถบันทึกได้อีก 3 ไบต์ : ลบช่องว่างระหว่างechoและ$iและแทนที่\nด้วยบรรทัดใหม่จริง
แทรกที่นี่

@insertusername ที่แม้ในขณะที่เล่นกอล์ฟนี้เจ็บตาของฉัน: D แต่เฮ้มันทำงาน
Christoph

3

Pyth, 23 ไบต์

#?=!Z"12:00""--:--".d.5

ใน pseudocode:

                Z = 0
#               while 1:
 ?=!Z               if ( Z = not Z ):
     "12:00"            print("12:00")
                    else:
     "--:--"            print("--:--")
 .d.5               sleep(0.5)

ใช้ตัวแปร preinitialized Zเป็น flip-flop และกลับสถานะของมันทุกครั้งที่ifพยายามตรวจสอบสภาพ


ใส่. d5 ที่ด้านหน้าของลูปและลบเครื่องหมายสิ้นสุด
Maltysen

3

ทับทิม47 47ไบต์

ยังไม่มีคำตอบทับทิมดังนั้นนี่คือความพยายามครั้งแรกของฉัน:

%w{12:00 --:--}.cycle{|a|puts a;sleep 0.5}

3

GNU sed, 39 ไบต์

การแก้ไข:

  • สลับการนอนหลับและi12: 00 (เพื่อให้ซอร์สโค้ดดูดีขึ้นนิดหน่อย)

แข็งแรงเล่นกอล์ฟ

s/^/sleep .5/
h
i12:00
e
i--:--
x
e
G
D

อธิบาย

s/^/sleep .5/   #Put 'sleep .5' to the pattern space
h               #Copy pattern space to hold space
i12:00          #Print "12:00" (insert before a line) 
e               #Execute command that is found in pattern space
i--:--          #Print "--:--"
x               #Exchange the contents of the hold and pattern spaces
e               #Execute command that is found in pattern space

G               #Append a newline to the contents of the pattern 
                #space, and then append the contents of the hold
                #space to that of the pattern space.

D               #Delete text in the pattern space up to the 
                #first newline, and restart cycle with the 
                #resultant pattern space, without reading a new 
                #line of input.

ลองออนไลน์!


3

dc (bash), 37 ไบต์

[12:00][--:--][[rp!sleep .5]xlax]dsax

วิธีนี้ใช้งานได้โดยการกดสองสตริง "12:00" และ "-: -" บนสแต็กจากนั้นทำการสลับค่าซ้ำ ๆ พิมพ์รายการที่ด้านบนสุดของสแต็กและนอนครึ่งวินาที

ในการรันสิ่งนี้คุณสามารถบันทึกไว้ในไฟล์แล้วพิมพ์

dc ชื่อไฟล์

หรือคุณสามารถเรียกใช้ได้โดยตรงจากบรรทัดคำสั่ง bash โดยพิมพ์

dc <<< '[12:00] [-: -] [[rp! sleep .5] xlax] dsax'


3

Perl 6 ,  48 41  34 ไบต์

loop {print "\r",<--:-- 12:00>[$_=!$_];sleep .5}
loop {put <--:-- 12:00>[$_=!$_];sleep .5}
sleep .put/2 for |<12:00 --:-->xx*

โดยใช้forห่วงสามารถทำให้มันเป็นเพียงเล็กน้อยสั้น:for |<12:00 --:-->xx* {sleep .5;.say}
smls

ยิ่งสั้นลงถ้าคุณใช้ประโยชน์จากข้อเท็จจริงที่sayส่งคืน 1:sleep .say/2 for |<12:00 --:-->xx*
smls

2

เยลลี่, 22 ไบต์

®‘©ị“12:00“--:--”ṄœS.ß

ไม่ทำงานบน TIO การทำให้ Jelly ทำงานบน Android ด้วย QPython3 ก็เป็นประสบการณ์ที่สนุกเช่นกัน

คำอธิบาย

®‘©ị“12:00“--:--”ṄœS.ß    Main link. No arguments. 
®                         Read the register. Initially 0.
 ‘                        Increment. 
  ©                       Save to the register.
   ị                      Get the n'th (wrapping) item of...
    “12:00“--:--”         ["12:00", "--:--"]
                 Ṅ        Print the string and a newline. 
                  œS      Sleep for...
                    .     ...0.5 seconds. (. is an alias for 0.5)
                     ß    Call this link again. 

1
นอนไม่หลับเหรอ? คุณสามารถเพิ่มคำอธิบายได้ไหม?
steenbergh

1
@steenbergh เพิ่ม ขออภัยในความล่าช้าการแก้ไขการเยื้องเหล่านั้นสำหรับคำอธิบายนั้นค่อนข้างยากในแอป SE ด้วยตัวอักษรที่ไม่ใช่การบินและอวกาศ
PurkkaKoodari

2

Mathematica, 38 ไบต์

Dynamic@If[Clock[]>.5,"12:00","--:--"]

คำอธิบาย

Clock[]

เอาต์พุตตัวแปรนาฬิกาที่วนอย่างต่อเนื่องจาก 0 ถึง 1 ทุกวินาที

If[Clock[]>.5,"12:00","--:--"]

หากตัวแปรสัญญาณนาฬิกามากกว่า. 5 เอาท์พุท "12:00" ถ้าไม่ออกผลลัพธ์ "-: -"

Dynamic@ ...

ทำให้โปรแกรมเป็นแบบไดนามิก (ปรับปรุงอย่างต่อเนื่อง)



2

Postscript 225 214

เพื่อความสนุกเท่านั้น! อย่าส่งสิ่งนี้ไปยังเครื่องพิมพ์จริง !!

/Courier findfont 9 scalefont setfont{usertime 500 mod 5 lt{newpath 9 9 moveto 1 setgray 99 setlinewidth 99 99 lineto stroke 0 setgray}if newpath 9 9 moveto usertime 999 mod 500 lt{(--:--)}{(12:00)}ifelse show}loop

ลองมัน:

gs -c '/Courier findfont 9 scalefont setfont{usertime 500 mod 5 lt{newpath 9 9 moveto 1 setgray 99 setlinewidth 99 99 lineto stroke 0 setgray}if newpath 9 9 moveto usertime 999 mod 500 lt{(--:--)}{(12:00)}ifelse show}loop'

หรือ

cat <<eops >/tmp/blinkingTwelve.ps
%!
/Courier findfont
9 scalefont
setfont
{
  usertime 500 mod 5 lt {
    newpath
    9 9 moveto
    1 setgray
    99 setlinewidth
    99 99 lineto
    stroke
    0 setgray
  } if
  newpath
  9 9 moveto
  usertime 999 mod 500 lt {
    (--:--)
  } {
    (12:00)
  } ifelse
  show
} loop
eops

แล้วก็

gs /tmp/blinkingTwelve.ps
gv /tmp/blinkingTwelve.ps

แต่อย่าพยายามเปิดสิ่งนี้ด้วยมุมมองที่ซับซ้อนมากขึ้นและใส่ใจกับ thumbnailer ของเดสก์ท็อป!


หากgs -c '...'คำสั่งแจ้งให้หน้าขาวคุณอาจต้องขยายหน้าต่างแสดงผลหรือใช้ความละเอียดที่น้อยลง: gs -r45 -c '...'หรือใช้เอกสารขนาดเล็กgs -r600 -g360x200 -c '...'
F. Hauri

2

Javascript (ในเบราว์เซอร์), 174 160 159 122 112 111 109 107 66 (91) ไบต์

ผมเคย taked ของpreเพราะใช้ตัวอักษร monotyped ไม่ได้เป็นส่วนหนึ่งของความต้องการเพื่อให้นับใหม่ของฉันคือ66 มีการเพิ่มตัวอักษรบางตัวเพื่อใช้แบบอักษรแบบโมโนโพสต์ แต่ไม่จำเป็นฉันจะไม่นับตัวอักษรเพิ่มอีก25ตัว

ขอบคุณETHproductionsสำหรับการบันทึก 14 ไบต์

to Kritixi Lithosเพื่อการประหยัด 1 ไบต์

เพื่อการจัดการเพื่อการประหยัด1 3ไบต์

เพื่อChristophสำหรับการบันทึกอีกสองไบต์และ

เพื่อตัวฉันเองสำหรับการบันทึก 37 ไบต์โดยใช้[..][b^=1]แทนsetTimeout... และอีก 10 รายการโดยแทนที่function(){..}ด้วยเครื่องหมายคำพูดคู่ ...

setInterval("document.body.innerHTML=++b%2?'12:00':'--:--'",b=500)
body{font-family:Courier}

... แย่กว่า:

จาก 66 ไปยังบางสิ่งเพิ่มเติม ...

... แต่เพื่อความสนุกสนานด้วยจิตวิญญาณของการแสดงที่กระพริบ:

SVG="http://www.w3.org/2000/svg";XLNK="http://www.w3.org/1999/xlink";
s=["1200","----"];p=0;function d(n){for(i=n.length;i>0;i--) {
  document.getElementById('n'+i).setAttribute('class','n'+n[i-1])}
  document.getElementById('sz').setAttribute('class','n'+n[0])}
setInterval("p=1-p;d(s[p])",500);
#svg2 { --c: #FF6;stroke:#432;stroke-width:12;stroke-linecap:round;stroke-linejoin:round; stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none; } path.b { fill:#543;stroke:none; } .blue     { --c: #68F; } .green    { --c: #6F8; } .red      { --c: #F88; } .dec rect  { stroke: var(--c); } .n1 #B { stroke: var(--c); }  .n1 #C { stroke: var(--c); } .n2 #A { stroke: var(--c); }  .n2 #B { stroke: var(--c); } .n2 #D { stroke: var(--c); }  .n2 #E { stroke: var(--c); } .n2 #G { stroke: var(--c); }  .n3 #A { stroke: var(--c); } .n3 #B { stroke: var(--c); }  .n3 #C { stroke: var(--c); } .n3 #D { stroke: var(--c); }  .n3 #G { stroke: var(--c); } .n4 #B { stroke: var(--c); }  .n4 #C { stroke: var(--c); } .n4 #F { stroke: var(--c); }  .n4 #G { stroke: var(--c); } .n5 #A { stroke: var(--c); }  .n5 #C { stroke: var(--c); } .n5 #D { stroke: var(--c); }  .n5 #F { stroke: var(--c); } .n5 #G { stroke: var(--c); } .n6 #A { stroke: var(--c); }  .n6 #C { stroke: var(--c); } .n6 #D { stroke: var(--c); }  .n6 #E { stroke: var(--c); } .n6 #F { stroke: var(--c); }  .n6 #G { stroke: var(--c); } .n7 #A { stroke: var(--c); }  .n7 #B { stroke: var(--c); } .n7 #C { stroke: var(--c); } .n8 #A { stroke: var(--c); }  .n8 #B { stroke: var(--c); } .n8 #C { stroke: var(--c); }  .n8 #D { stroke: var(--c); } .n8 #E { stroke: var(--c); }  .n8 #F { stroke: var(--c); } .n8 #G { stroke: var(--c); } .n9 #A { stroke: var(--c); }  .n9 #B { stroke: var(--c); } .n9 #C { stroke: var(--c); }  .n9 #D { stroke: var(--c); } .n9 #F { stroke: var(--c); }  .n9 #G { stroke: var(--c); } .n0 #A { stroke: var(--c); }  .n0 #B { stroke: var(--c); } .n0 #C { stroke: var(--c); }  .n0 #D { stroke: var(--c); } .n0 #E { stroke: var(--c); }  .n0 #F { stroke: var(--c); } .n11 #B { stroke: var(--c); } .n11 #C { stroke: var(--c); } .n11 #E { stroke: var(--c); } .n11 #F { stroke: var(--c); } .nA #A { stroke: var(--c); }  .nA #B { stroke: var(--c); } .nA #C { stroke: var(--c); }  .nA #E { stroke: var(--c); } .nA #F { stroke: var(--c); }  .nA #G { stroke: var(--c); } .nB #C { stroke: var(--c); }  .nB #D { stroke: var(--c); } .nB #E { stroke: var(--c); }  .nB #F { stroke: var(--c); } .nB #G { stroke: var(--c); } .nC #A { stroke: var(--c); }  .nC #D { stroke: var(--c); } .nC #E { stroke: var(--c); }  .nC #F { stroke: var(--c); } .nD #B { stroke: var(--c); }  .nD #C { stroke: var(--c); } .nD #D { stroke: var(--c); }  .nD #E { stroke: var(--c); } .nD #G { stroke: var(--c); } .nE #A { stroke: var(--c); }  .nE #D { stroke: var(--c); } .nE #E { stroke: var(--c); }  .nE #F { stroke: var(--c); } .nE #G { stroke: var(--c); } .nF #A { stroke: var(--c); }  .nF #E { stroke: var(--c); } .nF #F { stroke: var(--c); }  .nF #G { stroke: var(--c); } .nR #E { stroke: var(--c); }  .nR #G { stroke: var(--c); } .nO #C { stroke: var(--c); }  .nO #D { stroke: var(--c); } .nO #E { stroke: var(--c); }  .nO #G { stroke: var(--c); } .n- #G { stroke: var(--c); }  .n1 #y { stroke: var(--c); } .n1 #z { stroke: var(--c); }
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg xmlns="http://www.w3.org/2000/svg" version="1.1" width="100%" height="100%" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 645 230" id="svg2"> <defs id="dfs4"><g id="n"><path d="M 15,5 155,5 145,225 5,225 z" class="b"/> <path id="A" d="M 45,15 125, 15"/><path id="B" d="M 135,25 125,105"/><path id="C" d="M 125,125 115,205"/><path id="D" d="M 25,215 105,215"/><path id="E" d="M 25,125 15,205"/><path id="F" d="M 35,25 25,105"/><path id="G" d="M 35,115 115,115"/><rect id="P" width="5" height="5" ry="2.5" x="130" y="205"/></g><g id="s"><path d="M 10,5 35,5 25,225 0,225 z" id="a" class="b"/><rect id="y" width="5" height="5" ry="2.5" x="13.5" y="145"/><rect id="z" width="5" x="17" height="5" ry="2.5" y="75"/></g></defs><use id="n1" xlink:href="#n" /><use id="n2" xlink:href="#n" transform="translate(150,0)" /><use xlink:href="#s" id="sz" transform="translate(305,0)"/><use id="n3" transform="translate(335,0)" xlink:href="#n" /><use id="n4" xlink:href="#n" transform="translate(485,0)" />
</svg>


1
1000สามารถเป็น1e3
Kritixi Lithos

1
คุณสามารถบันทึกจำนวนไบต์ได้โดยลบอินสแตนซ์ทั้งหมดของwindow.; เป็นเช่นเดียวกับwindow.setTimeout setTimeout
ETHproductions

1
ttสั้นกว่าpreและยังหมายถึงการใช้แบบอักษร monospace (เพียงแค่เป็นองค์ประกอบอินไลน์ไม่ได้ปิดกั้น แต่สิ่งนี้ไม่ควรสร้างความแตกต่างที่นี่)b=document.body.append(a=document.createElement('tt'))
จัดการ

1
d=document;d.body.append(a=d.createElement('tt'));setInterval("a.innerHTML=++b%2?'12:00':'--:--'",b=500)บันทึก 5 ไบต์
Christoph

1
มีเหตุผลในการสร้างองค์ประกอบหรือไม่? setInterval("document.body.innerHTML=++b%2?'12:00':'--:--'",b=500)ความล่าช้าในการบินอวกาศที่หรูหราเท่านั้น แต่มีเพียง 66 ไบต์
Christoph

2

QuickBASIC 167 ครั้ง (อร่อย)

a%=VAL(RIGHT$(STR$(TIMER*100),2))
b%=a%+50
IF b%>99THEN b%=b%-99
DO
c%=VAL(RIGHT$(STR$(TIMER*100),2))
IF c%=a% THEN PRINT"--:--"
IF c%=b% THEN PRINT"12:00"
LOOP

ฉันไม่เคยจะชนะอย่างไรก็ตาม QB ไม่มีพื้น () และยังไม่มีฟังก์ชั่นให้นอนหลับเป็นเวลาxมิลลิวินาที ดังนั้นการทำงานโดยการจับส่วนจุดลอยของ TIMER (ส่งคืนวินาทีที่ผ่านไปนับตั้งแต่เที่ยงคืนรวมกับเศษเสี้ยวของวินาทีปัจจุบันที่แสดงเป็นทศนิยมสองหลัก) จากนั้นเราจะเพิ่มลูปรอบ "50 หน่วย" เพื่อกำหนดว่าเฟสควรสลับจาก "-: -" เป็น "12:00" และใช้ทศนิยม TIMER ดั้งเดิมสำหรับสวิตช์จาก "12:00" ถึง "-: - -"

ในที่สุดแม้แต่การเรียกใช้สิ่งนี้ใน QB4.5 ใน DOSBox บนเครื่องที่ทรงพลังจะข้ามจังหวะ นั่นเป็นเพราะ QB นั้นไม่เร็วพอที่จะทำการ DO-LOOP และการประเมินผลภายในของ MS ที่เรากำลังทำการเปรียบเทียบระบบจะต้องใช้กล่องจาก FUTURE!

อย่างไรก็ตามตอนนี้ฉันดูครบ 100 และฉันทำให้นักเรียนมหาวิทยาลัยอเมริกันทุกคนมีความสุขเนื่องจากพวกเขาอาจมีคำตอบสำหรับชั้นเรียน Comp Sci ของพวกเขา - เนื่องจากพวกเขายังคงสอน ...


คุณสามารถลบช่องว่างออกได้ไหม? คือb% = b% - 99เพื่อb%=b%-99?
Rɪᴋᴇʀ

ใช่ฉันค่อนข้างแน่ใจว่าฉันทำได้ แต่ฉันใช้ IDE ดั้งเดิมซึ่งหลังจากที่คุณกด Enter ที่ส่วนท้ายของบรรทัดจะเพิ่มพวกเขากลับมาฉันจะต้องแก้ไขนอก IDE ใน DOS แล้ว คิดพารามิเตอร์สำหรับตัวเชื่อมโยง / คอมไพเลอร์เพื่อตรวจสอบว่าโซลูชันของฉันยังทำงานอยู่หรือไม่ ... ดังนั้นอาจสั้นกว่านี้ได้ แต่ไม่ใช่ภายในกรอบความพยายามของฉัน
Robert Lerner

คุณต้องตีกอล์ฟรหัสนี้มิฉะนั้นจะไม่ใช่คำตอบที่ถูกต้องและจะถูกลบออก ขอโทษสำหรับเรื่องนั้น. (ฉันเข้าใจอย่างถ่องแท้ว่าคุณหมายถึงอะไร แต่ชุมชนโดยรวมได้ตัดสินใจกับคำตอบที่ไม่ใช่นักกอล์ฟ)
R

จุดดีฉันจะลบช่องว่าง
Robert Lerner

2

Clojure, 79 62 ไบต์

V2

-17 ไบต์โดยเปลี่ยนจากลูปการจัดทำดัชนีอันน่ากลัวเป็นการวนซ้ำในรายการไม่มีที่สิ้นสุด

สร้างรายการที่ไม่มีที่สิ้นสุด"12:00"และ"--:--"ทำซ้ำซ้ำแล้วซ้ำอีกจากนั้นใช้doseqเพื่อดึงข้อความถัดไปอย่างต่อเนื่องและพิมพ์

(doseq[m(cycle["12:00""--:--"])](Thread/sleep 500)(println m))

V1

(loop[i 0](Thread/sleep 500)(println(["12:00""--:--"]i))(recur(if(= 0 i)1 0))))

ฉันไม่สามารถคิดวิธีที่ดีในการกระชับ "12:00" และ "-: -" ค่าคงที่ดังนั้นฉันจึงต้องใช้รหัสยาก

Ungolfed:

(loop [i 0] ; Track which sign we showed last
    (Thread/sleep 500)
    (println (["12:00" "--:--"] i)) ; Index the vector to get the string to print
    (recur (if (= 0 i)1 0))) ; Swap the index, and loop again

2

Pushy , 22 ไบต์ (ไม่ใช่การแข่งขัน)

`--:`wO`12:0`&["500oWF

คำตอบนี้ใช้ประโยชน์จากสแต็คทั้งสองโดยการพลิกระหว่างพวกเขาโดยการพิมพ์อักขระตามลำดับ:

`--:`    \ Push these characters to stack 1
 w       \ Mirror around center, yielding "--:--"
 O       \ On the second stack...
 `12:0`  \ Push these characters
 &       \ Duplicate the last (for :00)

 [        \ Infinitely:
  "       \   Print the current stack
  500oW   \   Wait 500 milliseconds
  F       \   Swap stacks
          \ (Implicit end loop)

oWคำสั่งเป็นส่วนหนึ่งของชุดของคำสั่งทดลองที่ postdate ท้าทายทำให้คำตอบนี้ไม่ใช่การแข่งขัน


2

Windows PowerShell 46 55 ไบต์

function a{sleep -m 500;cls};for(){"12:00";a;"--:--";a}

รหัสเดิม:

a{sleep -m 500;cls};for(){"12:00";a;"--:--";a}
^ this won't work on other PCs. No idea why.
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.