On iki yanıp sönüyor


43

Özel olarak eski olan çoğu elektronik cihaz, 12:00zaman ayarlanmadığında yanıp sönmeye başlayacaktır . Bu zorluğun amacı, bunu yeniden yaratmaktır.

Spesifik olarak, görev sonsuz bir döngü içinde ve alternatif olarak göstermektir12:00--:-- .

Süresi 0.5 saniye iki dönemlerinde eşit bir şekilde bölünür 1 saniye olmalıdır. Burada "1 saniye" ve "eşit olarak" gevşek bir şekilde yorumlanabilir. Örneğin, sonuçta ortaya çıkan süre 1 saniyeden biraz fazla olsa bile, dizelerin görüntülenmesi arasında 0,5 saniye duraklarsa kabul edilebilir. İlk dizgiyi görüntülemeden önce yapılan ilk duraklama kabul edilebilir.

Her yeni dize , eski dize değiştirilerek veya yeni bir satırda görüntülenebilir . İzleyen boşluklara izin verilir, ancak her yeni dizginin farklı bir satırda olması durumunda ardışık dizgiler arasında boş satır olmamalıdır.

Bayt cinsinden en kısa kod kazanır.



@FlipTack Sanırım öyle, ama emin değildim. Düşünceleriniz var mı?
Luis Mendo

@LuisMendo Sanmıyorum, sanırım KG etiketi çoğunlukla sabit bir dizedir. Bunun, bekleyen ve değişken dizgilerden daha fazlası var.
Rɪᴋᴇʀ

İlk çıktı gösterilmeden önce gönderimler 0,5 saniye bekleyebilir mi?
FlipTack

1
IMHO, "Her yeni dize eski dizginin değiştirilmesiyle veya yeni bir satırda gösterilebilir" ifadesi bu zorluğu eğlenceli hale getirmedi.
Setop

Yanıtlar:


4

Jöle , 20 bayt

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

Nasıl çalışır

.“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.

Yani, temel olarak listedeki her iki diziyi de eklenmiş bir uyku komutu ile kendi bağlantılarına mı dönüştürüyorsunuz? Tatlı.
steenbergh

32

HTML / CSS, 131 108 106 101 + 18 17 = 149 126 125 123 118 bayt

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

Düzenleme: @ insertusernamehere sayesinde 23 bayt kaydedildi. Geçiş ile 1 bayt kaydedildi <pre>için <tt>. @Darrylyeo sayesinde 2 bayt kaydedildi. @DBS sayesinde 5 bayt kaydedildi.


1
@insertusernamehere Bah, uzakta golf oynamıştım a{position:absolute}ama tamamen unutmuşum pre...
Neil

Ön etikete hala ihtiyacınız var mı? css sadece a.
ev3 komutanı

@ ev3commander Ben geçerek bir bayt kurtardı <tt>.
Neil

Finali }}tamamen kaldırabilirsiniz .
darrylyeo

Sana basitleştirmek mümkün olmalıdır düşünüyorum margin-leftiçin marginüst yine soldan çalıştığınız beri margin:-5ch;aynı etkiye sahip olmalıdır.
DBS

15

Kabuk ve pv, 26 bayt

Bu, geçen verileri ölçmek için yesstandart araç ve pv Shell boru hattı öğesini kullanır.

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

2
Güzel bir çözüm, ancak dil muhtemelen "Shell and pv" olarak belirtilmelidir, çünkü (zaten benim bilgime göre) pv herhangi bir kabuğa dahil edilmemiştir ve GNU veya BSD çekirdek hizmetlerinin bir parçası değildir.
Mitchell Spector

1
Güzel bir numara! ( Buradaki @Diital Travma tarafından öncülük edildiğine inanıyorum ). Bu durumda, görev ifadesi "12:00 ve -: - alternatif olarak" (yanıp sönen bir ekranı taklit etmek) göstermesi nedeniyle, meydan okuma ruhuna karşı biraz hisseder, ancak bu kod karaktere karakter yazacaktır Bunun yerine saniyede 12 karakter sabit bir oranda. Bu, "12:00" ekranda sadece 1/12 (0,08) saniye kalacaktır ("12: 0 _" = 1 / 12s => "12:00" = 2 / 12s => "-").
zeplin

@zeppelin referanslar için teşekkürler: @ DigitalTrauma örneğini -qlL2sn yerine 2 satır yapmak için kullandım -qL12: sn. Betik uzunluğu aynı
F. Hauri

15

Python2, 80 75 73 69 67 66 bayt

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

Dize sihirbazımın bir diziden dize seçmekten biraz daha uzun sürdüğünü fark ettim. Boş ver, anladım.

Açıklama :

  • 0 ile 1 arasında değişecek olan bir sayacı n olarak 0'a ayarladım .

  • Sonsuz döngü ile döngü while 1.

  • Ben bir dize oluşturmak 1-2-::0-0-dizesi içerir, 12:00ve --:--interlapped.

    • Dizinden 0'dan başlayarak 2 adımla başlıyoruz: 12:00

    • Dizinden 1'den başlayarak 2 adımla başlıyoruz: --:--

  • Tekrarlanan diziyi 0 , 1 , 0 , 1 , 0 ... yapmak için n'i kullanıyorum , bu dizgenin başlangıç ​​dizini olacaktır.

    • n^=1Her döngüde kullanarak bu diziyi elde ederiz. ^XOR operatörü olmak.
    • Eğer n == 0 -> n^=11 ile sonuçlanırsa
    • Eğer n == 1 -> n^=10 olursa
  • İpi basarım ve ( .5-> 0.5) saniye uyurum .

@FlipTack 4 bayt kurtardı! -> Döngüyü bir satıra yerleştirin.

@Rod 2 byte kurtardı! -> n+=1için n^=1, böylece n%2için n.

@xnor bir bayt kurtardı! -> while 1-> while[time.sleep(.5)].


7
n+=1ile değiştirin n^=1ve sonra kullanın [n::2], 2 bayt kaydeder ve büyük sayıları önlemek c:
Rod

4
Eğer değiştirirseniz print"1-2-::0-0-"[n::2]için print"\b"*6+"1-2-::0-0-"[n::2],birkaç byte katacak bunun ancak yerinde yanıp söner
Buzz

1
@Buzz satırın başına gitmek \ryerine kullanabilirsiniz \b\b\b.... Fakat yine de, bu sadece mevcut çözüme bayt ekler.
FlipTack

Bir bayt yaparak kaydedebilirsiniz while[time.sleep(.5)]:.
Xnor

@xnor Bu çok daha fazla golf oynayamayacağından emindim. Bu site beni şaşırtmaya devam ediyor. Teşekkürler!
Yytsi

15

Octave, 63 62 61 55 bayt

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

Tom Carpenter sayesinde iki bayt kurtarıldı! Bir hücre dizisinde iki dize yerine tek bir dize kullanmak daha kısaydı.

Açıklama:

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

Octave arasında iki nokta üst üste ya da noktalı virgül gerektirmediğinden Birkaç byte kaydedilir flip(c)ve disp()ve aralarında pause(.5)ve end.


1
flipBir sayaç yerine kullanmak için iyi bir fikir !
Luis Mendo

11

JavaScript, 59 bayt

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

açıklama

setInterval('...',500) Her 500 milisaniyede bir ya da saniyede 1 / 2'de dizede kod yürütmek için bir aralık belirler.

y=1ybaşlangıçta 1 olarak bir değişken ayarlar . Bu şekilde, basılı olan ilk şey 12:00için ydizisine erişmek için kullanılmaktadır.

console.log(...)Konsola ne olursa olsun, ya 12:00da bu günlüğe kaydeder --:--.

["12:00","--:--"][y^=1]Her iki durumu içeren dizeleri olan bir dizi oluşturur. Ardından, yelemanlardan birine erişmek için kullanılır. Son olarak, ^=veya XOR bileşik operatörü yapar y = y ^ 1. Bu sadece biti ters çevirir çünkü 1 ^ 10'dır ve 0 ^ 11'dir, @TukukX'in yaptığı gibi . Bu şekilde, günlüğe kaydedilen dize, dizideki iki öğe arasında geçiş yapar ve böylece yanıp sönme efekti oluşturur.


y=1;setInterval('console.log(y?"12:00":"--:--");y=!y',500)
Bununla

Cevabım ETHproductions ipucu: You can save some bytes with setInterval(...,i=500) :-). Temelde aynı cevaba sahibiz ve sizin için de işe yarıyor.
Christoph

11

V , 31 30 27 25 24 bayt

Sırasını değiştirerek @ nmjcman101 için 5 bayt sayesinde kaydedilmiş 12:00ve --:--böylece kkaldırma herhangi çıkarılabilir òsonuna zımnen eklenebilir ve böylece

Her iki koyarak @DJMcMayhem için 1 bayt sayesinde kaydedilmiş 12:00ve --:--bir hat

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

Eski Çözüm:

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

<ESC> dır-dir 0x1b

HexDump:

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

açıklama

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 (eski)

Not: Vurgulamayı açtım

giff


7
Sen sürdü yanıp :-) o gif olarak tam anlamıyla
Luis Mendo

İkincisi òörtük olarak verilir, böylece kaldırabilirsiniz.
DJMcMayhem

@DJMcMayhem Her nedense, ikinci olmadan çalışmaz ò. Sadece bir kez çalışır
Kritixi Lithos

2
Girişlerinizin sırasını değiştirin, böylece ilk ihtiyacınız yok k. Sonra yerine pkddsadece kullanabilirsiniz Vpgibi pgörsel seçme modunda etkin bir varsayılan kayıt ile seçimi değiştirir.
nmjcman101

1
Bunları kaldırmada sorun yaşamanız olduğunu biliyorum ò, ancak bu şimdi işe yararsa, bunu değiştirebilmeniz òVp:sl500mve V'nin ^Mò2 bayt ekleyebilmeniz gerektiğini düşünüyorum .
nmjcman101

11

bash, 58 56 45 bayt

bastırarak 3 byte kurtardı --sonra set1 arg bir sayıdır olarak.

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

@DigitalTrauma sözdizimini kullanarak 16 bayt kaydedildi :

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

Sonra zeppelin'in yorumu yüzünden 5 bayt kaybediyor .

Bu komut satırında test edilemedi. İlgili olarak $0, bunun çalıştırılması için bir komut dosyasına yazılması gerekir.

Yönlendirmek

Küçük bir hazırlık ile, bu güzel olabilir ( 412 bytes ):

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

Ya da aynı iki satır, ancak:

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 --:--;}
Manat çalışması

2
@ manatwork Güzel! Bence aynı senaryo değil! Onları bir cevap olarak yayınlamalısınız!
F. Hauri

Kabul etmeliyim ki, ASCII sanatı kesinlikle muhteşem ... Yaratmak için bir araç kullandın mı yoksa elle mi yaptın?
ETHProductions

2
@ETHproductions Ben Ghostscript kullanıyorum : 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
... veyaf()(echo $1;sleep .5);f 12:00;f --:--;$0
Dijital Travma

9

Perl, 49 bayt

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

Perl en sleepolamaz uyku 1 saniye körük süresi, bu nedenle kullanım için select undef, undef, undef, .5(değiştirerek golfed undefile $,uyku 5 ikinci kadar).
Diğer ilginç bir şey: $|sadece 0veya tutabilir 1. Yani $|--sadece değerini, arasında 0değiştirir 1.
Sonunda {... ;redo}sonsuz bir döngü gibi davranır.


6

*> <> , 43 42 bayt

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

Burada dene!

Bunu kısaltabileceğimi hissediyorum, denemek için birkaç fikrim var ... Temel olarak bu bir yığın yapar :1200----. :Yığını :ya ortasından ayırır ya ----da ortasına ya da ortasına 1200(hangisinin sonunda olduğuna bağlı olarak) yerleştirir.

Ayrıca, kullandığı tek *> <> komutun S(uyku) olduğuna dikkat etmeliyim , aksi halde bu uygun bir> <> programdır.

Güncelleme: Bir kayıtla :korumak yerine, sağa kaydırarak 1 byte kurtarıldı .

açıklama

Bafllatma

<v":1200----"

Burada programın ömrü boyunca kullanacağımız yığını oluşturuyoruz.

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

Çıkış zamanı

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

Bu, zamanın gerçekten verildiği bölümdür. İlk 5 yığına itilir, böylece aşağıdaki döngü 5 kez çalışmayı bilir.

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"

Kurtar ve değiştir

S      >~r@@}r5

Burada :çıktıdan sonra elde ettiği pozisyondan kurtuluruz ve ters bir yığına gireriz. Bu aslında "çıkış zamanına" güzel bir şekilde çıkıyor ve sonsuz bir döngüye neden oluyor.

       >         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 baytlık çözüm

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

Burada dene!

Bu da temelde bir> <> programıdır.

Bu yaklaşımla bazı baytları kurtarmanın gerçekten mümkün olacağını düşündüm. Bu oldukça basit çıktılar 12:00, sonra --:--. Çıkış rutini yeniden kullanarak baytları kurtarıyorum o/!?l(o aynayı hem giriş hem çıkış olarak bile yeniden kullanıyorum). Durumu depolamak için birden fazla yığın kullanıyorum (çıktısı var 12veya --) ve hangi durumda çıkmam gerektiğini seçiyorum v>]?v.

Açıklamalar çok yakında! (1/2)


6

HTML / CSS (yalnızca Chrome), 80 + 4 = 84 bayt

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

Düzenleme : "içerik" özniteliği CSS belirtimine göre canlandırılmaz , ancak Chrome masaüstü tarayıcısında.


1
Chrome'a ​​özgü görünüyor. En azından Firefox'ta çalışmıyor. Bu bir sorun değil, çözüm hala geçerli, sadece belirtmek güzel olurdu.
Manatwork

6

Noodel , rekabetçi olmayan 16 bayt

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

Noodel hala devam eden bir çalışma. Sadece birkaç zorlukla ayaklarımı ıslatmaya çalışıyorum.

Dene:)

Nasıl çalışır

--:--            # 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.

İşte bir kod pasajı :)

<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
Tercüman meydan okumayı bildirirse, lütfen bunu "rekabet etmeyen" :) olarak işaretleyin. Noodel kesinlikle kontrol ediyor, ama temiz görünüyor.
redstarcoder

@ redstarcoder Hata! Teşekkürler, bunu koymayı unuttum.
tkellehe

Kodlamayı açıklar mısın? UTF-8’de 16’dan fazla ekler.
devRicher

1
Bağınıza baktım, kodlamayı açıklamıyor. Görüyorsunuz, "varsayılan" (UTF-8) ile tüm karakterler 1 bayt değildir. Mevcut bir kodlama belirtin veya bir tane yapın, aksi halde bu yanlış bir bayt sayısıdır. Bu konuda bir yerlerde meta bir yazı olmalı. Bir kodlama tanımlamazsanız, bu UTF-8 ve 22 bayttır. @tkellehe
devRicher

1
Bulunan meta yazı btw.
devRicher

5

QBIC , 37 33 bayt

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

QBasic ne yazık ki sadece bütün saniyeler boyunca uyuyabiliyor. Yakında daha fazla esneklik sağlamak için bir yöntem geliştirmeyi göreceğim. 01Simülasyon yapmak için 1 girdim .5.

Açıklama:

{         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>

Daha eski QBIC yapılarında $ve (boşluk) ayrılmış karakterlerdir. Boşluk gerektiren (gibi sleep x) veya $( left$(..)) bir QBasic işlevini çağırmak için bir kod hazırlaması gerekir:

'QBASIC CODE`

Bir kod değişmez bloğundaki kod, QBIC tarafından ayrıştırılmadan doğrudan QBasic'e iletilir. Bu sembollerden fonksiyonların boşaltılmasıyla ( $oldular 've newlines şimdi (alt-217) yerine ) semboller artık QBIC tarafından özel karakter olarak görülmüyor ve basitçe geçiyor. Aynı şey küçük harfli alfabe için de geçerlidir: Hem QBIC hem de QBasic'te sayısal değişkenleri temsil etmek için kullanılır ve değişmeden kalır. QBIC (benzeri SLEEP) içinde uygulanmayan QBasic işlevini kullanmak , sadece QBIC ayrılmış karakterleri kullanmama meselesidir. Bu, komut sembollerinde yapılan son değişikliklerle daha kolay yapılır.


4

JavaScript, 77 76 72 bayt

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

1 bayt için Kritixi Lithos ve 4 bayt için L. Serne!


1000kısaltılabilir1e3
Kritixi Lithos

2
setIntervalve setTimeoutilk argüman olarak kod içeren bir dize kabul, böylece başka bir 4B kaydedebilirsiniz: setInterval('l=console.log,l("12:00"),setTimeout("l(-: -)",500)',1e3)
Luke

Bunun `anlamı şuan ES6'dır, oysa önceki cevap sadece ES5'e ihtiyaç duyuyordu.
Neil

4

Python 2, 88 85 73 71 bayt

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

Burada dene!

Stewie Griffin'in listeyi çevirme fikrini ödünç alarak program mümkün oldu. Açıklama ile Ungolfed versiyonu:

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

14 byte tasarruf için teşekkürler @FlipTack!


1
Dilimleme dilimlemeyi kullanarak daha da kısa sürede golf oynayabilirsiniz, bunun gibi
FlipTack

4

PHP, 51 50 47

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

Manatwork nedeniyle kaydedilmiş 1 byte ve insertusernamehere tarafından kaydedilmiş 3 tane daha. Teşekkürler!


1
usleep(5e5)Aramayı for3. parametresine taşırsanız, ,ayırıcı gerekli olmaz ve 1 karakter kaydedilir.
Manatwork

@ yönetim işleri teşekkürler! while(1)İlk başta vardı .
Christoph

2
Sen kaydedebilir 3 daha bayt : arasındaki boşluk çıkarın echove $ideğiştirin \ngerçek bir yeni satır ile.
insertusernamehere

@insertusernameBu golf oynarken bile gözlerim ağrıyor: D ama hey işe yarıyor.
Christoph

3

Pyth, 23 bayt

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

Sözde kodda:

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

ZFlip-flop olarak önceden başlatılmış değişkeni kullanır ve durumu ifkontrol etmeye çalıştığında durumunu tersine çevirir .


.d5'i döngünün önüne koyun ve bitiş teklifini kaldırın
Maltysen

3

yakut, 47 42 bayt

Henüz yakut bir cevap yok, işte ilk denemem:

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

3

GNU sed, 39 bayt

DÜZENLEMELER:

  • Takas uyku ve i12: 00 (kaynak kodunun biraz daha güzel görünmesini sağlamak için)

golfed

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

Açıklaması

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.

Çevrimiçi Deneyin!


3

dc (bash), 37 bayt

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

Bu işlem, iki dizgiyi "12:00" ve "-: -" yığınlarına bastırarak ve ardından değerleri art arda değiştirerek, öğeyi yığının en üstüne basıp yarım saniye uyuyarak çalışır.

Bunu çalıştırmak için bir dosyaya kaydedebilir ve ardından

dc dosya adı

veya doğrudan bash komut satırından yazarak çalıştırabilirsiniz.

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



2

Jöle, 22 bayt

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

TIO'da çalışmıyor. Jelly'i QPython3 ile Android üzerinde çalıştırmak da eğlenceli bir deneyim oldu.

açıklama

®‘©ị“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
Bu uyuyor mu? Bir açıklama ekleyebilir misiniz?
steenbergh

1
@steenbergh Eklendi. Gecikme için üzgünüm, açıklama için bu girintileri düzenlemek monospace olmayan bir fontla SE uygulamasında biraz zor.
PurkkaKoodari

2

Mathematica, 38 bayt

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

açıklama

Clock[]

Her saniyede 0'dan 1'e kadar sürekli dönen bir saat değişkenini çıkarır.

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

Saat değişkeni .5'ten büyükse, "12:00" çıktısını alın. Değilse, "-: -" çıktısını alın.

Dynamic@ ...

Programı dinamik hale getirin (sürekli güncelleniyor)


2

Javascript, 57 55

setInterval('console.log(++i%2?"12:00":"--:--")',i=500)

ETHproductions sayesinde 2 bayt kurtarıldı


3
setInterval(...,i=500):-) ile bazı baytları kaydedebilirsiniz
ETHproductions

2

Postscript 225 214

Sadece eğlence için! Bunu gerçek bir yazıcıya göndermeyin !!

/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

Dene:

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'

veya

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

sonra

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

Ancak bunu daha karmaşık bir görüntüleyici ile açmaya çalışmayın ve masaüstü küçük resimleri önemseyin!


Eğer gs -c '...': Komut beyaz sayfa istemi, ekran penceresini büyütmek veya daha küçük bir çözünürlük kullanmak gerekebilir gs -r45 -c '...'veya daha küçük PaperSizegs -r600 -g360x200 -c '...'
F. Hauri

2

Javascript (tarayıcıda), 174 160 159 122 112 111 109 107 66 (91) bayt

Ben aldım preçünkü monotipli font kullanmak şartın bir parçası değil, bu yüzden yeni sayım 66 . Monospaced yazı tipini kullanmak için bazı karakterler eklenir ancak bu gerekli olmadığından, bu 25 karakteri daha saymayacağım .

14 byte tasarruf için ETHproductions ,

1 byte tasarruf için Kritixi Lithos'a ,

1 3 byte tasarruf için manat işçiliğine ,

için Christoph iki bayt kaydetmek için ve

kendime 37 bayt [..][b^=1]yerine setTimeout... yerine 10 bayt ve function(){..}çift ​​tırnak işareti koyarak ...

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

... daha da kötüsü:

66'dan başka bir şeye ...

... ama eğlenmek için, yanıp sönen bir ekrana bağlı olarak:

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
1000olabilir1e3
Kritixi Lithos

1
Tüm örneklerini kaldırarak bir sürü bayttan tasarruf edebilirsiniz window.; window.setTimeoutaynıdır setTimeout.
ETHProductions

1
ttdaha kısadır preve ayrıca monospace fontunun kullanılması anlamına gelir. (Sadece satır içi öğedir, blok değildir, ancak bunun burada bir b=document.body.append(a=document.createElement('tt'))
önemi

1
d=document;d.body.append(a=d.createElement('tt'));setInterval("a.innerHTML=++b%2?'12:00':'--:--'",b=500)5 bayt kazandırır
Christoph

1
Bir öğe oluşturmak için bir neden var mı? setInterval("document.body.innerHTML=++b%2?'12:00':'--:--'",b=500)sadece fantezi monospace kalıyor, sadece 66 bayttır.
Christoph

2

QuickBASIC , 167 ısırık (nefis)

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

Zaten asla kazanamayacaktım. QB kat () içermez ve ayrıca x milisaniye için uyku işlevine de sahip değildir . Bu nedenle, bu, TIMER'in kayan nokta kısmını kapmakla çalışır (gece yarısından beri geçen saniyeleri, artı, iki basamaklı ondalık olarak ifade edilen geçerli saniyenin bir kısmını döndürür). Daha sonra fazın "-: -" ila "12:00" arasında ne zaman geçeceğini belirlemek için "50 birim" etrafında bir döngü ekleriz ve anahtar için "12:00" den orijinal TIMER ondalık basamağını kullanırız. ila "-: -".

Son olarak, QB4.5'te buna uymak bile olsa, DOSBox'ta oldukça güçlü bir makinede vuruş atlayacak. Bunun nedeni, QB'nin DO-LOOP'u ve karşılaştırmayı yaptığımız MS'in içindeki değerlendirmeleri gerçekleştirecek kadar hızlı olmamasıdır. GELECEK'ten bir kutuya ihtiyaç duyar!

Her neyse, şimdi 100 görünüyorum ve her Amerikan Üniversitesi öğrencisini muhtemelen Comp Sci dersi için bir cevap aldıkları için mutlu ettim - çünkü hala bunu öğretiyorlar ...


Boşlukların bir kısmını kaldırabilir misin? yani b% = b% - 99hiç b%=b%-99?
Rɪᴋᴇʀ

Evet, yapabileceğimden eminim, ancak satırın sonuna girdikten sonra onları tekrar ekleyecek orijinal IDE'yi kullandım. DOS'ta IDE dışında düzenlemek zorunda kalacağım ve sonra Çözümümün hala işe yarayıp yaramadığını kontrol etmek için linker / compiler parametrelerini buldum ... Bu yüzden daha kısa olabilir, ancak çaba çerçevem ​​dahilinde değil.
Robert Lerner,

Eh, bu kodu golf gerekir, yoksa geçerli bir cevap değil ve silinecek. Bunun için üzgünüm. (Ne demek istediğinizi tamamen anlıyorum, ancak bir bütün olarak topluluk, golfe alınmamış cevaplara karşı karar vermiştir)
Rɪᴋᴇʀ

İyi nokta, boşlukları kaldıracağım.
Robert Lerner,

2

Clojure, 79 62 bayt

V2

-17 bayt, korkunç bir indeksleme döngüsünden sonsuz bir liste üzerinde döngüye geçerek.

Sonsuz bir liste oluşturur "12:00"ve "--:--"tekrar tekrar tekrar eder, sonra bir doseqsonraki mesajı sürekli çekmek ve yazdırmak için kullanır.

(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" ve "-: -" sabitlerini sıkıştırmanın iyi bir yolunu bulamadım, bu yüzden onları zorlamak zorunda kaldım.

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 bayt ( yarışmaz )

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

Bu cevap, sırayla karakterleri yazdırarak aralarında çevirerek iki yığından yararlanır:

`--:`    \ 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)

oWKomut deneysel meydan sonundan ileri komutları, bu yanıt olmayan yarışan yapım bir dizi parçasıdır.


2

Windows PowerShell, 46 55 bayt

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

Orijinal Kod:

a{sleep -m 500;cls};for(){"12:00";a;"--:--";a}
^ this won't work on other PCs. No idea why.
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.