Formato Incremental da Hora do Jogo
Objetivo
Jogos incrementais geralmente têm um contador regressivo que expressa os dias, horas, minutos e segundos até que uma tarefa seja concluída. Dependendo do espaço disponível, eles podem ser formatados como:
2d 13h
23h 59m 48s
14m
3h 0m 0s
O objetivo deste código golf é escrever uma função ou programa que execute essa formatação.
Entradas
- O número total de segundos.
- O número máximo de segmentos para saída.
Resultado
- Os segmentos incluem:
- 0 semanas
- 0d dias
- 0h horas
- 0m minutos
- 0s segundos
- Cada segmento é separado por um único espaço.
- Os segmentos exibidos devem ser contíguos. Por exemplo, você não mostrará horas e segundos sem mostrar minutos, mesmo que haja zero minutos.
- Os valores de um dígito não possuem zeros à esquerda, embora um valor zero deva ser mostrado como
0
. - Os valores são arredondados para baixo.
- O primeiro segmento exibido é o primeiro valor diferente de zero.
Casos de teste
seconds segments output
0 1 0s
123 1 2m
123 2 2m 3s
123 3 2m 3s
82815 3 23h 0m 15s
307891 2 3d 13h
307891 4 3d 13h 31m 31s
604800 1 1w
604800 6 1w 0d 0h 0m 0s
Ganhando
A solução mais baixa de contagem de bytes em uma semana ganhará "aceitação".
Editar% s
- Esclareceu qual segmento é o primeiro, como mostrado nos exemplos.
- Adicionado caso de teste 4 conforme solicitação.
307891 1
?0w
ou1w
.3d
? "O primeiro segmento exibido é o primeiro valor diferente de zero"Respostas:
CJam (instantâneo),
4138 bytesO exemplo acima usa notação de intercalação, pois dois dos caracteres não são imprimíveis.
Graças ao @ Sp3000, por jogar fora 2 bytes.
Teste
A última versão estável (0.6.5) possui um bug que pode causar o
{}#
retorno de números inteiros em vez de longos. Paradoxalmente, isso pode ser contornado ao converter para inteiro (i
).Para executar isso com o código com o intérprete online, clique neste link permanente ou copie o código desta pasta .
Como alternativa, você pode baixar e criar a captura instantânea mais recente executando os seguintes comandos:
Você pode criar o arquivo CJam assim:
Como funciona
fonte
Java,
197191 bytesAcabei de perceber que o Java suporta declarações como
String a[]
. Isso me permitiu puxar a declaração deb
ez
para a mesma linha, o que me impediu de escreverString
novamente.fonte
;z=" ")
- muito inteligente.C,
134127110104103 bytesNova versão:
Versão anterior:
fonte
Pitão,
3943 bytesedit: +4 caracteres, porque esqueci o
0s
caso de teste.Isso inclui 2 caracteres não imprimíveis. Obtenha o código real e experimente online: Demonstração
Explicação:
fonte
Python 2.7 -
181178174 bytesMinha primeira tentativa de jogar algo.
fonte
if n!=0
para apenasif n
.Julia, 158 bytes
Tenho certeza de que isso poderia ser mais curto com uma abordagem mais inteligente, mas é isso que tenho por enquanto.
Isso cria uma função sem nome que aceita dois números inteiros como entrada e retorna uma string. Para chamá-lo, dê um nome, por exemplo
f=(s,g)->...
.Ungolfed + explicação:
Exemplos:
fonte
Scala, 147 bytes
fonte
rs , 367 bytes
Demonstração ao vivo e todos os casos de teste.
Bagunçado, bagunçado, bagunçado ...
Demora de 3 a 7 segundos para executar os casos de teste no Chrome para Android. Você não usar o modo de depuração, que pode congelar seu navegador, neste caso, por causa de toda a saída que seria impresso.
fonte
C #,
239 237 170164 bytesNão é nem de longe tão compacto quanto as outras soluções, mas não posso colocar esse desafio sem ter que fazer isso sozinho.
Esta última iteração foi inspirada na resposta da ESC .
Recuado para maior clareza:
fonte