Vamos criar um relógio e calendário de arte ASCII que nos informe o mês atual, dia do mês, dia da semana, hora, minuto e se é noite ou dia (mas não o ano ou o segundo).
A qualquer momento, o calendário será mais ou menos assim: (fica melhor com menos espaçamento entre linhas)
________________________________________________________________
|\ ____________________________________________________________ /|
| | ___ | |
| | _( ) | |
| | (___)__) -.- | |
| | | |
| | | |
| | -.- | |
| | -.- | |
| | ___ | |
| | _( ) | |
| | (___)__) | |
| | | |
| | ___ | |
| | _( ) | |
| | _ (___)__) | |
| | /|\ | |
| | / | \ | |
| | /__|__\ | |
| |____|____ | |
| |\_______/~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~-~~-~~~~~| |
| |____________________________________________________________| |
|/______________________________________________________________\|
É sempre um "quadro de imagem" de 66 por 23 caracteres cuja borda nunca muda.
A imagem no quadro indica a hora e a data:
- Durante o dia (6:00 - 17:59), o mês é determinado pelo número de pássaros (
-.-
) no céu. Janeiro = 1 pássaro, fevereiro = 2 pássaros, etc. - Durante a noite (18:00 - 17:59), os pássaros são substituídos por três vezes mais estrelas (
*
). Janeiro = 3 estrelas, fevereiro = 6 estrelas, etc. Pássaros e estrelas nunca estão no céu ao mesmo tempo. - O dia do mês é determinado pelo número de caracteres entre os dois traços (
-
) na água. por exemplo,~~-~~~~-~~
significa que é o quarto dia do mês. Dependendo do minuto, o barco pode precisar estar entre os traços (os traços não circulam). - O dia da semana é determinado pelo número de nuvens no céu (todas as nuvens parecem iguais). Domingo = 0 nuvens , Segunda-feira = 1 nuvem, ..., Sábado = 6 nuvens.
- A hora é determinada pelo nível da água (e do barco). No ponto mais baixo (como acima), é 1 hora, durante 2 horas é um caractere mais alto, e assim por diante até 12 horas, depois volta para 1 hora. (São 12 e não 24 horas.)
- O minuto é determinado pela posição horizontal do barco. Na parte superior da hora, o barco toca a borda esquerda do quadro (como acima). A cada minuto subseqüente, o barco se move para a direita em um caractere. Nos minutos 51 a 59, ele volta do lado direito do quadro de volta para a esquerda.
Portanto, dado que o exemplo acima tem 3 pássaros, 3 nuvens, 2 caracteres entre traços, a água no nível mais baixo e o barco na extrema esquerda, podemos dizer que a data é quarta-feira 2 de março e a hora é 1: 00pm.
Aqui está outro exemplo de domingo, 25 de abril, às 3:58:
________________________________________________________________
|\ ____________________________________________________________ /|
| | | |
| | * * | |
| | * * * | |
| | * | |
| | | |
| | * | |
| | * * | |
| | | |
| | * | |
| | | |
| | * | |
| | _ | |
| | /|\ * | |
| |/ | \ | |
| |__|__\ /| |
| |__|____ __| |
| |______/~~~~~~~~~~~~~~~~~~~-~~~~~~~~~~~~~~~~~~~~~~~~~-~~~~~\_| |
| | | |
| | | |
| |____________________________________________________________| |
|/______________________________________________________________\|
Objetivo
Seu objetivo é escrever o programa mais curto possível que produza esses "calendários" artísticos ASCII para stdout usando o horário em que o programa é executado.
Cada execução do programa deve gerar uma cena temporal. As atualizações não devem ser automáticas (ou animadas).
As nuvens, estrelas e pássaros devem ser colocados aleatoriamente no céu (para que cada corrida, mesmo as ao mesmo tempo, sejam diferentes). Eles nunca devem se sobrepor ao barco ou um ao outro. (Além disso, os traços de água não devem se sobrepor ao casco do barco.)
Observe que nada que eu descrevi aparece debaixo d'água. Isto é para você fazer. Durante uma hora predeterminada de cada semana (sua escolha), algo interessante deve ser desenhado debaixo d'água. Pode ser um monstro marinho ou um navio afundado ou qualquer coisa, depende de você. Durante essa hora, você pode até alterar o design do restante da cena (permanecendo nos limites do quadro).
Pontuação
Esta é uma combinação de código-golfe-concurso de popularidade.
Sua pontuação é (bytes in program) - 4 * (upvotes - downvotes)
. A pontuação mais baixa vence.
Use http://mothereff.in/byte-counter como contador de bytes, se você usar caracteres não ASCII.
Notas e atualizações
Você pode usar bóias em vez de traços, pois, vamos ser sinceros, eles são muito mais apropriados:
| | ~~(_)~~~(_)~~ (3rd of the month)
Os traços (ou bóias) não precisam ser aleatórios, mas seria bom se fossem.
- Sua "hora especial" deve durar 60 minutos, desde o início da hora até 1 minuto antes da próxima hora.
- Durante a hora especial, as coisas que você desenha debaixo d'água podem se mover e alterar a superfície e o céu quando faz sentido (por exemplo, monstro marinho comendo o barco, formação de um buraco negro no fundo do mar etc.)
fonte
Respostas:
Ruby, No fim do mundo,
12601070967 bytesAlguém se lembra do filme Piratas do Caribe?
Ainda há muito espaço para melhorar a golfitude, mas é um começo.
Agora, o que há com a referência do filme? Aparentemente, o Flash Verde acontece com muito mais frequência do que Jack Sparrow quer que acreditemos. De fato, acontece uma vez por semana, em vez de uma vez a cada dez anos. Todo domingo ao pôr do sol, o Rubi Negro (hrhr) faz uma volta na terra dos mortos:
fonte
Java - Kraken fofo (muitos bytes)
EDIT: Novas melhorias em pássaros / estrelas trazem nuvens e nuvens, agora o calendário mais movimentado (12h, sábado, dezembro) funciona cerca de 70% do tempo. Outros 30% recebo um erro de estouro de pilha (prepare-se para isso) porque uso recursão. Novas fotos do calendário mais movimentado possível e a nova foto de Kraken, que mostra os pontos altos / baixos das estrelas / nuvens.
Agora, lida melhor com situações nas quais a dispersão aleatória de estrelas / pássaros impede a inserção aleatória de nuvens. Quando as coisas estão lotadas demais e não funcionam após 200 tentativas, refazemos as estrelas / pássaros na esperança de que a próxima configuração permita às nuvens algum espaço pessoal.
Quem é um kwaken fofinho? Quem é um kwaken fofinho? Tu es! Tu es!
Edições menores, ainda sem golfe. Kwaken aparece nos 9s porque sabe que todo mundo espera dele à meia-noite. Ele é pequeno e tímido agora, mas um dia ele espera comer o navio.
As nuvens tendem a ficar baixas no céu, enquanto estrelas e pássaros gostam de voar acima deles; as coisas tendem a ficar um pouco lotadas por volta das 8 horas.
Saída casual
saída super ocupada
Se quisermos apresentar nosso kraken codificando alguns valores, obtemos ...
fonte
Python3 - Piratas e águas-vivas:
15801472 bytesToda quarta-feira à meia-noite, um navio pirata afunda nosso barco. O barulho acorda uma água-viva gigante que percorre o quadro aleatoriamente por uma hora.
Exemplo em terça-feira 19 agosto 23:27
Às quartas-feiras por volta da meia-noite:
fonte
Cobra - 994
Sem Bouys: 994
Com Bouys: 1084
Às 1 da manhã todos os domingos, a extensão interminável do mar de tilápias ganha vida com um brilho azul deslumbrante. A esperança retorna ao povo do mundo das conchas desolado.
fonte
C #
11241128bytesUma vez por semana, um submarino ASCII de má qualidade deve aparecer por uma hora abaixo da linha de flutuação e aumentar notavelmente minha contagem de bytes, espero que esse código realmente funcione agora . Temo pensar no que acontece aos sábados às 11:00 em dezembro ...
Código um pouco formatado (que redesenha cada 15 segundos porque eu li mal as especificações):
Exemplo de saída (deve ser 3:31, quarta-feira, 13 de agosto):
fonte
Lua - mais que estrelas
Terminei!
Bem, não foi feito. Eu terminei com este código e desafio. Não está jogando golfe, está faltando o indicador do mês. Não há como evitar ... Estou apenas publicando para que, na hipótese de ninguém completar esse calange, pelo menos você tenha visto alguma coisa, tenha uma idéia.
Você pode dar uma olhada aqui.
fonte