Muitos dispositivos eletrônicos, especialmente os antigos, irão piscar 12:00
quando a hora ainda não foi definida. O objetivo deste desafio é recriar isso.
Especificamente, a tarefa é exibir 12:00
e, --:--
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.
Respostas:
Gelatina , 20 bytes
Como funciona
fonte
HTML / CSS,
131108106101 +1817 =149126125123118 bytesEditar: 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.fonte
a{position:absolute}
, mas esqueci completamente sobre opre
...<tt>
.}}
completamente.margin-left
amargin
desde que você está trabalhando a partir do canto superior esquerdo de qualquer maneiramargin:-5ch;
deve ter o mesmo efeito.Shell e
pv
, 26 bytesUtiliza a
yes
ferramenta padrão e opv
elemento de pipeline da Shell para medir dados que passamfonte
-qlL2
para fazer 2 linhas por segundo em vez de-qL12
: 12 caracteres por segundo. Comprimento do roteiro é o mesmoPython2,
807573696766 bytesPercebi 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 string12:00
e--:--
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.
n^=1
, em cada loop, obtemos essa sequência.^
sendo o operador XOR.n^=1
resultar em 1n^=1
resultar em 0.5
->0.5
) segundos.O @FlipTack salvou 4 bytes! -> Coloque o loop em uma linha.
@Rod economizou 2 bytes! ->
n+=1
paran^=1
, assimn%2
paran
.@xnor salvou um byte! ->
while 1
->while[time.sleep(.5)]
.fonte
n+=1
en^=1
, em seguida[n::2]
, usar , salva 2 bytes e evita grandes números c:print"1-2-::0-0-"[n::2]
queprint"\b"*6+"1-2-::0-0-"[n::2],
ele irá adicionar alguns bytes, mas ele vai piscar no lugar\r
vez de\b\b\b...
ir para o início da linha. Mas de qualquer maneira, isso adicionaria apenas bytes à solução atual.while[time.sleep(.5)]:
.Oitava,
63626155 bytesEconomizou 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:
Poucos bytes salvos porque o Octave não requer dois pontos ou vírgulas entre
flip(c)
edisp()
, e entrepause(.5)
eend
.fonte
flip
vez de um contador!JavaScript, 59 bytes
Explicação
setInterval('...',500)
define um intervalo para executar o código na cadeia a cada 500 milissegundos ou 1/2 por segundo.y=1
define uma variável,,y
para 1 inicialmente. Dessa forma, a primeira coisa que é impressa é12:00
porquey
é usada para acessar a matriz.console.log(...)
registra o que quer que seja para o console, neste12:00
ou--:--
.["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 fazy = y ^ 1
. Isso apenas inverte o bit porque1 ^ 1
é 0 e0 ^ 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.fonte
y=1;setInterval('console.log(y?"12:00":"--:--");y=!y',500)
You can save some bytes with setInterval(...,i=500) :-)
. Basicamente, temos a mesma resposta e funciona para a sua também.V ,
3130272524 bytesSalvei 5 bytes graças a @ nmjcman101, trocando a ordem de
12:00
e--:--
para que elek
possa ser removido, removendo qualquer,ò
para que ele possa ser adicionado implicitamente no finalSalvo 1 byte graças a @DJMcMayhem, colocando ambos
12:00
e--:--
em uma linhaSolução antiga:
<ESC>
é0x1b
Hexdump:
Explicação
Gif (desatualizado)
Nota: tenho destaque ativado
fonte
ò
é fornecido implicitamente, para que você possa removê-lo.ò
. Ele só é executado uma vezk
. Então, em vez depkdd
você pode apenas usarVp
, poisp
no modo de seleção visual efetivamente alterna a seleção com o registro padrão.ò
, mas se isso funcionar agora, acho que você poderá alterá-lo paraòVp:sl500m
e deixar o V adicionar o^Mò
por 2 bytes.bash,
585645 bytessalvou 3 bytes suprimindo--
depois,set
pois o 1º arg é um número.Salva 16 bytes usando a sintaxe de @DigitalTrauma :
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 ):
Ou até as mesmas duas linhas, mas com:
fonte
s(){ echo $1;sleep .5;};for((;;)){ s 12:00;s --:--;}
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()(echo $1;sleep .5);f 12:00;f --:--;$0
Perl, 49 bytes
Os Perl
sleep
não conseguem dormir por um período abaixo de 1 segundo, daí o uso deselect undef, undef, undef, .5
(golfe substituindoundef
por$,
) para dormir 0,5 segundo.Outra coisa interessante:
$|
só pode segurar0
ou1
. Então,$|--
apenas alterna seu valor, de0
para1
.E, finalmente,
{... ;redo}
age como um loop infinito.fonte
*> <> ,
4342 bytesExperimente 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 outra1200
(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
Aqui construímos a pilha que usaremos para a vida útil do programa.
Tempo de saída
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.
Recuperar e trocar
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.Solução de 45 bytes
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ídao/!?l
(eu até reutilizo esse espelho como entrada e saída). Utilizo várias pilhas para armazenar o estado (tem saída12
ou--
) e seleciono com qual estado devo sairv>]?v
.Explicações em breve! (1/2)
fonte
HTML / CSS (somente Chrome), 80 + 4 = 84 bytes
Editar : o atributo "content" não pode ser animado pela especificação CSS , mas está no navegador da área de trabalho do Chrome.
fonte
Noodel , 16 bytes não- concorrentes
Noodel ainda é um trabalho em andamento. Apenas tentando me molhar com alguns desafios.
Tente:)
Como funciona
Aqui está um trecho de código :)
fonte
QBIC ,
3733 bytesInfelizmente, 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
01
para simular.5
.Explicação:
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: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.fonte
JavaScript,
777672 bytesAgradecimentos a Kritixi Lithos por 1 byte e L. Serne por 4 bytes!
fonte
1000
pode ser encurtado para1e3
setInterval
esetTimeout
aceite 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)
`
s significa que agora é ES6, enquanto a resposta anterior só precisava do ES5.Python 2,
88857371 bytesExperimente aqui!
Emprestando a idéia de Stewie Griffin de inverter a lista, o programa foi possível. Versão ungolfed com explicação:
Obrigado @FlipTack por salvar 14 bytes!
fonte
PHP,
51 50471 byte salvo devido ao trabalho manual e outros 3 salvos por insertusernamehere. Obrigado!
fonte
usleep(5e5)
chamada parafor
o terceiro parâmetro da, o,
separador se tornará desnecessário, salvando 1 caractere.while(1)
no começo.echo
e$i
e substituir\n
com uma nova linha real.Pitão, 23 bytes
No pseudocódigo:
Usa a variável pré-inicializada
Z
como flip-flop e inverte seu estado toda vez queif
tenta verificar a condição.fonte
ruby,
4742 bytesNenhuma resposta ruby ainda, então aqui está minha primeira tentativa:
fonte
GNU sed, 39 bytes
EDITAR% S:
Golfe
Explicado
Experimente Online!
fonte
dc (bash), 37 bytes
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
ou você pode executá-lo diretamente na linha de comando do bash digitando
fonte
Perl 6 ,
48 4134 bytesfonte
for
loop pode torná-lo um pouco mais curto:for |<12:00 --:-->xx* {sleep .5;.say}
say
retornar 1:sleep .say/2 for |<12:00 --:-->xx*
Gelatina, 22 bytes
Não funciona no TIO. Fazer o Jelly rodar no Android com o QPython3 também foi uma experiência divertida.
Explicação
fonte
Mathematica, 38 bytes
Explicação
Emite uma variável de clock que alterna continuamente de 0 a 1 a cada segundo.
Se a variável do relógio for maior que 0,5, digite "12:00". Caso contrário, imprima "-: -".
Torne o programa dinâmico (atualizando constantemente)
fonte
Javascript,
57552 bytes economizados graças ao ETHproductions
fonte
setInterval(...,i=500)
:-)Postscript
225214Apenas por diversão! Não envie isso para uma impressora real !!
Tente:
ou
então
Mas não tente abrir isso com um visualizador mais sofisticado e se preocupe com o miniaturizador da área de trabalho!
fonte
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 '...'
Javascript (no navegador),
17416015912211211110910766 (91) bytesEu pedi
pre
porque 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
um3 bytes,a Christoph por salvar mais dois bytes e
para mim mesmo por salvar 37 bytes usando em
[..][b^=1]
vez desetTimeout
... e mais 10 substituindofunction(){..}
por aspas duplas ...... pior:
De 66 a algo mais ...
... mas por diversão, no espírito de uma tela piscando:
fonte
1000
pode se tornar1e3
window.
;window.setTimeout
é o mesmo quesetTimeout
.tt
é menor quepre
e 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'))
d=document;d.body.append(a=d.createElement('tt'));setInterval("a.innerHTML=++b%2?'12:00':'--:--'",b=500)
salva 5 bytessetInterval("document.body.innerHTML=++b%2?'12:00':'--:--'",b=500)
apenas fica abaixo do monoespaço sofisticado, mas tem apenas 66 bytes.QuickBASIC , 167 mordidas (gostoso)
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 ...
fonte
b% = b% - 99
parab%=b%-99
?Clojure,
7962 bytesV2
-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 usadoseq
para puxar constantemente a mensagem seguinte, e imprimi-lo.V1
Não consegui pensar em uma boa maneira de compactar as constantes "12:00" e "-: -", então tive que codificá-las.
Ungolfed:
fonte
Pushy , 22 bytes (não concorrente)
Esta resposta faz uso das duas pilhas, alternando entre elas, imprimindo os caracteres por sua vez:
O
oW
comando faz parte de um conjunto de comandos experimentais que pós-datam o desafio, tornando essa resposta não competitiva.fonte
Windows PowerShell,
46.55 bytesCódigo original:
fonte