Piscando doze


43

Muitos dispositivos eletrônicos, especialmente os antigos, irão piscar 12:00quando a hora ainda não foi definida. O objetivo deste desafio é recriar isso.

Especificamente, a tarefa é exibir 12:00e, --:--alternativamente, em um loop infinito .

O período deve ser de 1 segundo, dividido igualmente em dois períodos de 0,5 segundos. Aqui "1 segundo" e "uniformemente" podem ser interpretados livremente. Por exemplo, é aceitável se o código parar por 0,5 segundos entre a exibição das seqüências, mesmo que o período resultante seja um pouco maior que 1 segundo. Uma pausa inicial antes de exibir a primeira string é aceitável.

Cada nova sequência pode ser exibida substituindo a antiga ou em uma nova linha . O espaço em branco à direita é permitido, exceto que se cada nova string estiver em uma linha diferente, não haverá linhas vazias entre as seqüências consecutivas.

O menor código em bytes vence.


1
isso conta como complexidade kolmogorov ?
— FlipTack

@FlipTack Acho que sim, mas não tinha certeza. Pensamentos, alguém?
— Luis Mendo

@LuisMendo Acho que não, acho que a tag KG é principalmente para uma string fixa. Isso tem mais, as seqüências de espera e alternadas.
— Rɪᴋᴇʀ

Os envios podem esperar 0,5 segundos antes de mostrar a saída inicial?
— FlipTack

1
IMHO, a declaração "Cada nova string pode ser exibida substituindo a string anterior ou em uma nova linha" tornou esse desafio não divertido.
— Setop

Respostas:


4

Gelatina , 20 bytes

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

Como funciona

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

Então você está basicamente transformando as duas strings da lista em links próprios, com um comando de suspensão adicional? Doce.
— precisa saber é o seguinte

32

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

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

Editar: salvou 23 bytes graças a @insertusernamehere. Economizou 1 byte alternando de <pre>para <tt>. Guardado 2 bytes graças a @darrylyeo. Economizou 5 bytes graças ao @DBS.


1
@insertusernamehere Bah, eu golfed afastado o a{position:absolute}, mas esqueci completamente sobre o pre...
— Neil

Você ainda precisa da pré tag? o css menciona apenas a.
— Ev3commander

@ ev3commander Salvei um byte mudando para <tt>.
— Neil

Você pode remover a final }}completamente.
— darrylyeo

Eu acho que você deve ser capaz de simplificar margin-lefta margindesde que você está trabalhando a partir do canto superior esquerdo de qualquer maneira margin:-5ch;deve ter o mesmo efeito.
— DBS

15

Shell e pv, 26 bytes

Utiliza a yesferramenta padrão e o pv elemento de pipeline da Shell para medir dados que passam

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

2
Solução agradável, mas a linguagem provavelmente deve ser declarada como "Shell e pv", pois (que eu saiba, de qualquer maneira) pv não está incluído em nenhum shell nem faz parte dos principais utilitários do GNU ou BSD.
— Mitchell Spector

1
Que truque legal! (que acredito ter sido pioneira no @Digital Trauma aqui ). Embora neste caso pareça um pouco contra o espírito do desafio, pois a declaração de missão era "exibir 12:00 e -: - alternativamente" (imitando uma exibição piscando), mas esse código apresentará apenas caractere por caractere a uma taxa constante de 12 caracteres por segundo. O que significa que "12:00" permanecerá na tela apenas por 1/12 (0,08) segundos ("12: 0 _" = 1 / 12s => "12:00" = 2 / 12s => "-").
— Zeppelin

@ zeppelin obrigado por referências: Eu usei a amostra do @ DigitalTrauma -qlL2para fazer 2 linhas por segundo em vez de -qL12: 12 caracteres por segundo. Comprimento do roteiro é o mesmo
— F. Hauri

15

Python2, 80 75 73 69 67 66 bytes

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

Percebi que minha mágica das cordas ficou um pouco mais longa do que pegar a corda de uma matriz. Deixa pra lá, descobri.

Explicação :

  • Defino um contador n como 0, que será alternado entre 0 e 1.

  • Eu loop infinitamente com o loop while 1.

  • Eu crio uma string 1-2-::0-0-, que contém a string 12:00e --:--interpolada.

    • Começando no índice 0 com uma etapa 2, obtemos: 12:00

    • Começando no índice 1 com uma etapa 2, obtemos: --:--

  • Uso n para criar a sequência repetida 0 , 1 , 0 , 1 , 0 ... que será o índice inicial da string.

    • Usando n^=1, em cada loop, obtemos essa sequência. ^sendo o operador XOR.
    • Se n == 0 -> n^=1resultar em 1
    • Se n == 1 -> n^=1resultar em 0
  • Imprimo a sequência e durmo ( .5-> 0.5) segundos.

O @FlipTack salvou 4 bytes! -> Coloque o loop em uma linha.

@Rod economizou 2 bytes! -> n+=1para n^=1, assim n%2para n.

@xnor salvou um byte! -> while 1-> while[time.sleep(.5)].


7
você pode substituir n+=1e n^=1, em seguida [n::2], usar , salva 2 bytes e evita grandes números c:
— Rod

4
se você alterar o print"1-2-::0-0-"[n::2]que print"\b"*6+"1-2-::0-0-"[n::2],ele irá adicionar alguns bytes, mas ele vai piscar no lugar
— zumbido

1
@Buzz que você pode usar em \rvez de \b\b\b...ir para o início da linha. Mas de qualquer maneira, isso adicionaria apenas bytes à solução atual.
— FlipTack

Você pode salvar um byte fazendo while[time.sleep(.5)]:.
— Xnor

@xnor Eu tinha tanta certeza que não podia jogar mais. Este site continua a me surpreender. Obrigado!
— Yytsi 7/01

15

Oitava, 63 62 61 55 bytes

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

Economizou dois bytes graças a Tom Carpenter! O uso de uma única sequência em vez de duas em uma matriz de células foi mais curto.

Explicação:

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

Poucos bytes salvos porque o Octave não requer dois pontos ou vírgulas entre flip(c)e disp(), e entre pause(.5)e end.


1
Boa idéia para usar em flipvez de um contador!
— Luis Mendo

11

JavaScript, 59 bytes

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

Explicação

setInterval('...',500) define um intervalo para executar o código na cadeia a cada 500 milissegundos ou 1/2 por segundo.

y=1define uma variável,, ypara 1 inicialmente. Dessa forma, a primeira coisa que é impressa é 12:00porque yé usada para acessar a matriz.

console.log(...)registra o que quer que seja para o console, neste 12:00ou --:--.

["12:00","--:--"][y^=1]cria uma matriz com cadeias contendo os dois estados. Então, yé usado para acessar um dos elementos. Finalmente ^=,, ou o operador composto XOR faz y = y ^ 1. Isso apenas inverte o bit porque 1 ^ 1é 0 e 0 ^ 1é 1, semelhante ao que o @TuukkaX fez . Dessa forma, a cadeia registrada alterna entre os dois elementos na matriz e, assim, cria o efeito piscante.


Conseguiu salvar um byte com este:y=1;setInterval('console.log(y?"12:00":"--:--");y=!y',500)
— woutr_be 3/17/17

Ponta ETHproductions a minha resposta: You can save some bytes with setInterval(...,i=500) :-). Basicamente, temos a mesma resposta e funciona para a sua também.
— Christoph

11

V , 31 30 27 25 24 bytes

Salvei 5 bytes graças a @ nmjcman101, trocando a ordem de 12:00e --:--para que ele kpossa ser removido, removendo qualquer, òpara que ele possa ser adicionado implicitamente no final

Salvo 1 byte graças a @DJMcMayhem, colocando ambos 12:00e --:--em uma linha

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

Solução antiga:

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

Explicação

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

Nota: tenho destaque ativado

giff


7
Você levou a piscar , literalmente, em que gif :-)
— Luis Mendo

O segundo òé fornecido implicitamente, para que você possa removê-lo.
— DJMcMayhem

@DJMcMayhem Por algum motivo, ele não funciona sem o segundo ò. Ele só é executado uma vez
— Kritixi Lithos

2
Troque a ordem de suas entradas para não precisar da primeira k. Então, em vez de pkddvocê pode apenas usar Vp, pois pno modo de seleção visual efetivamente alterna a seleção com o registro padrão.
— precisa saber é o seguinte

1
Eu sei que você tem problemas para remover o ò, mas se isso funcionar agora, acho que você poderá alterá-lo para òVp:sl500me deixar o V adicionar o ^Mòpor 2 bytes.
— precisa saber é o seguinte

11

bash, 58 56 45 bytes

salvou 3 bytes suprimindo --depois, setpois o 1º arg é um número.

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

Salva 16 bytes usando a sintaxe de @DigitalTrauma :

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

Perdendo 5 bytes por causa do comentário do zeppelin .

Isso não pôde ser testado na linha de comando. Como envolvemos $0, isso deve ser escrito em um script para ser executado.

Desviar

Com um pouco de preparação, isso pode se tornar interessante ( 412 bytes ):

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

Ou até as mesmas duas linhas, mas com:

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 --:--;}
— manatwork

2
@manatwork Nice! Eu acho que não é o mesmo script! Você precisa publicá-los como resposta!
— F. Hauri 02/01

Tenho que admitir que a arte ASCII é absolutamente deslumbrante ... Você usou uma ferramenta para criá-la ou a criou manualmente?
— ETHproductions

2
@ETHproductions eu uso 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
... ouf()(echo $1;sleep .5);f 12:00;f --:--;$0
— Trauma digital

9

Perl, 49 bytes

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

Os Perl sleepnão conseguem dormir por um período abaixo de 1 segundo, daí o uso de select undef, undef, undef, .5(golfe substituindo undefpor $,) para dormir 0,5 segundo.
Outra coisa interessante: $|só pode segurar 0ou 1. Então, $|--apenas alterna seu valor, de 0para 1.
E, finalmente, {... ;redo}age como um loop infinito.


6

*> <> , 43 42 bytes

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

Experimente aqui!

Eu sinto que deveria ser capaz de reduzir isso, tenho algumas idéias para tentar ... Basicamente, isso gera uma pilha de :1200----. Ele isola :e vira a pilha, inserindo-a :no meio de uma ----ou outra 1200(dependendo do que estiver no final da pilha).

Devo observar também que a única instrução *> <> usada é S(suspensão), caso contrário, este é um programa> <> adequado.

Atualização: salvou 1 byte deslocando o :para a direita em vez de protegê-lo com um registro.

Explicação

Inicialização

<v":1200----"

Aqui construímos a pilha que usaremos para a vida útil do programa.

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

Tempo de saída

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

Esta é a seção em que o tempo é realmente gerado. Os primeiros 5 são empurrados para a pilha, de modo que o loop abaixo saiba executar 5 vezes.

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"

Recuperar e trocar

S      >~r@@}r5

Aqui recuperamos a :posição que resulta após a saída e terminamos com uma pilha invertida. Na verdade, isso sai muito bem no "tempo de saída", causando um loop infinito.

       >         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

Solução de 45 bytes

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

Experimente aqui!

Este também é basicamente um programa> <>.

Eu realmente pensei que seria capaz de salvar alguns bytes com esta abordagem. Isso simplesmente resulta 12:00, então --:--. Eu salvo bytes reutilizando a rotina de saída o/!?l(eu até reutilizo esse espelho como entrada e saída). Utilizo várias pilhas para armazenar o estado (tem saída 12ou --) e seleciono com qual estado devo sair v>]?v.

Explicações em breve! (1/2)


6

HTML / CSS (somente Chrome), 80 + 4 = 84 bytes

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

Editar : o atributo "content" não pode ser animado pela especificação CSS , mas está no navegador da área de trabalho do Chrome.


1
Parece ser específico do Chrome. Pelo menos não funciona no Firefox. Isso não é um problema, a solução ainda é válida, seria bom especificá-la.
— Manatwork

6

Noodel , 16 bytes não- concorrentes

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

Noodel ainda é um trabalho em andamento. Apenas tentando me molhar com alguns desafios.

Tente:)

Como funciona

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

Aqui está um trecho de código :)

<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
Se o intérprete pós-data do desafio, marque-o como "não concorrente" :). Noodel parece legal, definitivamente, verificando-o.
— Redstarcoder # 1

@redstarcoder Oops! Obrigado, esqueci de colocar isso.
— precisa saber é

Você pode explicar a codificação? Ele soma muito mais que 16 no UTF-8.
— precisa saber é o seguinte

1
Eu olhei para o seu link, ele não explica a codificação. Veja bem, nem todos os caracteres têm 1 byte por "padrão" (UTF-8). Especifique uma codificação existente ou faça uma, caso contrário, essa é uma contagem de bytes incorreta. Deve haver um meta post em algum lugar sobre isso. A menos que você defina uma codificação, este é UTF-8 e tem 22 bytes. @tkellehe
— devRicher

1
Encontrado o meta post , btw.
— precisa saber é o seguinte

5

QBIC , 37 33 bytes

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

Infelizmente, o QBasic só pode dormir por segundos inteiros. Vou ver sobre a criação de um método para permitir mais flexibilidade em breve. Eu inseri 1 como 01para simular .5.

Explicação:

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

Nas versões mais antigas do QBIC, $e (espaço) eram caracteres reservados. Chamar uma função QBasic que precisava de espaços (como sleep x) ou $( left$(..)) exigia um literal de código:

'QBASIC CODE`

O código em um bloco literal de código é passado diretamente para o QBasic sem ser analisado pelo QBIC. Ao descarregar funções desses símbolos ( $tornou-se 'e as novas linhas agora são ┘(alt-217) em vez de ), os símbolos não são mais vistos pelo QBIC como caracteres especiais e simplesmente transmitidos. O mesmo se aplica efetivamente ao alfabeto minúsculo: é usado para representar variáveis ​​numéricas no QBIC e no QBasic e permanece inalterado. O uso da funcionalidade QBasic que não é implementada no QBIC (como SLEEP) é simplesmente uma questão de não usar caracteres reservados do QBIC. Isso é facilitado com as alterações recentes nos símbolos de comando.


4

JavaScript, 77 76 72 bytes

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

Agradecimentos a Kritixi Lithos por 1 byte e L. Serne por 4 bytes!


1000pode ser encurtado para1e3
— Kritixi Lithos

2
setIntervale setTimeoutaceite uma string com código como primeiro argumento, para que você possa salvar outro 4B: setInterval('l=console.log,l("12:00"),setTimeout("l(-: -)",500)',1e3)
— Luke

O `s significa que agora é ES6, enquanto a resposta anterior só precisava do ES5.
— Neil

4

Python 2, 88 85 73 71 bytes

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

Experimente aqui!

Emprestando a idéia de Stewie Griffin de inverter a lista, o programa foi possível. Versão ungolfed com explicação:

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

Obrigado @FlipTack por salvar 14 bytes!


1
Você pode golfe-lo ainda mais curto usando corte corda, como esta
— FlipTack

4

PHP, 51 50 47

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

1 byte salvo devido ao trabalho manual e outros 3 salvos por insertusernamehere. Obrigado!


1
Se você mover a usleep(5e5)chamada para foro terceiro parâmetro da, o ,separador se tornará desnecessário, salvando 1 caractere.
— Manatwork

@manatwork thanks! Eu tinha while(1)no começo.
— Christoph

2
Você pode economizar mais 3 bytes : Remova o espaço em branco entre echoe $ie substituir \ncom uma nova linha real.
— precisa saber é o seguinte

@insertusernamehere, mesmo no golfe, isso machuca meus olhos: D, mas ei, isso funciona.
— Christoph

3

Pitão, 23 bytes

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

No pseudocódigo:

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

Usa a variável pré-inicializada Zcomo flip-flop e inverte seu estado toda vez que iftenta verificar a condição.


coloque .d5 na frente do loop e remova a citação final
— Maltysen 12/01

3

ruby, 47 42 bytes

Nenhuma resposta ruby ​​ainda, então aqui está minha primeira tentativa:

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

3

GNU sed, 39 bytes

EDITAR% S:

  • Troca de sono e i12: 00 (para tornar o código fonte um pouco melhor)

Golfe

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

Explicado

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.

Experimente Online!


3

dc (bash), 37 bytes

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

Isso funciona pressionando as duas seqüências de caracteres "12:00" e "-: -" na pilha e trocando os valores repetidamente, imprimindo o item na parte superior da pilha e dormindo meio segundo.

Para executar isso, você pode salvá-lo em um arquivo e digitar

nome do arquivo dc

ou você pode executá-lo diretamente na linha de comando do bash digitando

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


3

Perl 6 ,  48 41  34 bytes

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

usar um forloop pode torná-lo um pouco mais curto:for |<12:00 --:-->xx* {sleep .5;.say}
— smls 15/01

Ainda mais curto se você usar o fato de sayretornar 1:sleep .say/2 for |<12:00 --:-->xx*
— smls 15/01

2

Gelatina, 22 bytes

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

Não funciona no TIO. Fazer o Jelly rodar no Android com o QPython3 também foi uma experiência divertida.

Explicação

®‘©ị“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
Isso dorme? Você pode adicionar uma explicação?
— steenbergh

1
@steenbergh Adicionado. Desculpe o atraso, a edição desses recuos para a explicação é um pouco difícil no aplicativo SE com uma fonte não monoespaçada.
— precisa saber é o seguinte

2

Mathematica, 38 bytes

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

Explicação

Clock[]

Emite uma variável de clock que alterna continuamente de 0 a 1 a cada segundo.

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

Se a variável do relógio for maior que 0,5, digite "12:00". Caso contrário, imprima "-: -".

Dynamic@ ...

Torne o programa dinâmico (atualizando constantemente)


2

Javascript, 57 55

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

2 bytes economizados graças ao ETHproductions


3
Você pode salvar alguns bytes com setInterval(...,i=500):-)
— ETHproductions

2

Postscript 225 214

Apenas por diversão! Não envie isso para uma impressora real !!

/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

Tente:

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'

ou

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

então

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

Mas não tente abrir isso com um visualizador mais sofisticado e se preocupe com o miniaturizador da área de trabalho!


Se gs -c '...'comando solicitará uma página em branco, você pode ter a crescer a janela de exibição ou usar uma resolução menor: gs -r45 -c '...'ou papersize menorgs -r600 -g360x200 -c '...'
— F. Hauri

2

Javascript (no navegador), 174 160 159 122 112 111 109 107 66 (91) bytes

Eu pedi preporque o uso de fonte monotipada não faz parte do requisito, então minha nova contagem é 66 . Alguns caracteres são adicionados para usar fonte monoespaçada, mas como isso não é necessário, não contarei mais 25 caracteres.

Graças à ETHproductions por economizar 14 bytes,

ao Kritixi Lithos por economizar 1 byte,

para manatwork para guardar um 3 bytes,

a Christoph por salvar mais dois bytes e

para mim mesmo por salvar 37 bytes usando em [..][b^=1]vez de setTimeout... e mais 10 substituindo function(){..}por aspas duplas ...

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

... pior:

De 66 a algo mais ...

... mas por diversão, no espírito de uma tela piscando:

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
1000pode se tornar1e3
— Kritixi Lithos

1
Você pode salvar um monte de bytes removendo todas as instâncias de window.; window.setTimeouté o mesmo que setTimeout.
— ETHproductions

1
tté menor que pree também implica o uso de fonte monoespaçada. (Apenas é elemento inline, não bloco, mas isso deve fazer nenhuma diferença aqui.)b=document.body.append(a=document.createElement('tt'))
— manatwork

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

1
Existe um motivo para gerar um elemento? setInterval("document.body.innerHTML=++b%2?'12:00':'--:--'",b=500)apenas fica abaixo do monoespaço sofisticado, mas tem apenas 66 bytes.
— Christoph

2

QuickBASIC , 167 mordidas (gostoso)

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

Eu nunca iria ganhar de qualquer maneira. O QB não possui um piso () e também não tem uma função para dormir por x milissegundos. Portanto, isso funciona agarrando a parte do ponto flutuante do TIMER (retorna segundos decorridos desde a meia-noite, mais uma fração do segundo atual expressa como um decimal de dois dígitos). Em seguida, adicionamos um loop em torno de "50 unidades" para determinar quando a fase deve mudar de "-: -" para "12:00" e usamos o decimal TIMER original para a mudança de "12:00" para "--:--".

Por fim, mesmo executando isso em conformidade com o QB4.5, o DOSBox em uma máquina bastante poderosa ignorará as batidas. Isso porque o QB realmente não é rápido o suficiente para realizar o DO-LOOP e as avaliações dentro do MS em que estamos fazendo a comparação. Precisaria de uma caixa do FUTURE!

Enfim, agora pareço 100 e deixei todos os estudantes da Universidade Americana felizes, pois provavelmente têm uma resposta para a aula de ficção científica - já que ainda estão ensinando isso ...


Você pode remover alguns dos espaços? ou seja, b% = b% - 99para b%=b%-99?
— Rɪᴋᴇʀ

Sim, eu tenho certeza que pude, mas usei o IDE original que, depois de pressionar enter no final da linha, os adicionaria novamente. Eu teria que editá-lo fora do IDE no DOS e, em seguida, descubra os parâmetros para o vinculador / compilador para verificar se minha solução ainda funcionou ... Portanto, pode ser mais curta, mas não dentro do meu esforço.
— Robert Lerner

Bem, você precisa jogar este código de golfe, caso contrário, não é uma resposta válida e será excluída. Me desculpe por isso. (Eu entendo completamente o que quer dizer, mas a comunidade como um todo decidiu contra respostas não golfed)
— Rɪᴋᴇʀ

Bom ponto, vou remover os espaços.
— Robert Lerner

2

Clojure, 79 62 bytes

V2

-17 bytes, passando de um loop de indexação horrível para loop em uma lista infinita.

Cria uma lista infinita de "12:00"e "--:--"repetir uma e outra vez, então usa doseqpara puxar constantemente a mensagem seguinte, e imprimi-lo.

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

Não consegui pensar em uma boa maneira de compactar as constantes "12:00" e "-: -", então tive que codificá-las.

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 bytes (não concorrente)

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

Esta resposta faz uso das duas pilhas, alternando entre elas, imprimindo os caracteres por sua vez:

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

O oWcomando faz parte de um conjunto de comandos experimentais que pós-datam o desafio, tornando essa resposta não competitiva.


2

Windows PowerShell, 46. 55 bytes

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

Código original:

a{sleep -m 500;cls};for(){"12:00";a;"--:--";a}
^ this won't work on other PCs. No idea why.
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.