O novo supercomputador de previsão do tempo chegou e não funciona.
Enquanto isso, seu chefe quer que você compre algum técnico fingindo os mapas diários de vento.
Sua tarefa é desenhar uma grade de setas representando a direção do vento.
A grade é:
- composto de 15px azulejos quadrados
- 8 peças por 8 peças
- Total quadrado de 120px
000 antecedentes
Cada bloco de grade possui 8 orientações em potencial, representando a direção do vento:
- Norte
- Nordeste
- Leste
- Sudeste
- Sul
- Sudoeste
- Oeste
- Noroeste
Qual deve ser representado como segue:
N NE E SE S SW W NW
Os mapas devem variar gradualmente , para serem críveis.
Isso significa que cada bloco pode diferir apenas do seu vizinho em uma etapa. Especificamente:
- Um bloco pode diferir apenas em um incremento ou decremento de cada um dos quatro blocos adjacentes. (ou 3 para ladrilhos laterais, 2 para ladrilhos de canto).
- por exemplo, uma peça com o vizinho E pode ser NE, E ou SE (assumindo que esteja de acordo com os outros vizinhos).
- As orientações podem voltar, ou seja, N -> NW e NW -> N.
Para ilustrar, o seguinte mapa é válido:
NW N NE NE NE NE NE NE
N NE NE NE NE NE NE E
NE NE NE NE NE NE E SE
E NE NE NE NE E SE S
SE E E E E SE S SE
S SE SE SE SE S SE E
SW S S S S SE E NE
SW SW S S SE E NE N
Os mapas devem ser exclusivos , não gere o mesmo mapa para entradas diferentes.
- A entrada é um número inteiro correspondente aos dias entre agora e sua previsão (por exemplo, 1 é a previsão de amanhã, 365 é o ano).
- Saída é o mapa como uma imagem.
- A saída deve ser reproduzível, a mesma entrada sempre dará a mesma saída
- Você deve fornecer mapas exclusivos por pelo menos 8 anos - ou seja, nenhuma saída idêntica para qualquer entrada entre 1 e 2920 (estou ignorando os anos bissextos).
- Não há saída definida para nenhuma entrada maior que 2920.
O envio vencedor produzirá mapas válidos (até o dia 2920) com o menor número de bytes de código-fonte.
Respostas:
BBC Basic, 83 caracteres ASCII, tamanho de arquivo tokenised 72
Faça o download do emulador em http://www.bbcbasic.co.uk/bbcwin/bbcwin.html
Esta é basicamente uma porta do conceito de Martin, mas a implementação no BBC basic é muito diferente. Eu reprogramei a fonte dos números
0
e1
depois os dígitos bináriosn
em ordem inversa.Código não destruído está abaixo. No básico da BBC, você pode imprimir caracteres ASCII individuais usando o
VDU
comando, mas o idioma possui uma série de códigos específicos da máquina, semelhantes às seqüências de escape, mas começando com caracteres não imprimíveis. Para reprogramar a fonte, começamos com ASCII 23. Normalmente, são utilizados valores de 8 bits, mas se você usar um ponto-e-vírgula como um separador em vez de uma vírgula, serão necessários valores endian pequenos de 16 bits (conforme usado na versão em golf).Resultado
Para os números de 0 a 7. Observe que a fonte não é redefinida no final do programa; portanto, os números 0 e 1 aparecem como setas nos dois primeiros exemplos.
fonte
Matlab (182 *)
Supõe-se que a entrada esteja armazenada
n
. Ao olhar para o algoritmo, não é certo que os resultados sejam únicos, mas verifiquei sen=1 upto 3000
eles são únicos e atendem às regras. Basicamente, apenas uso números complexos do círculo unitário e os "suavizo" por conv2 com um filtro gaussiano. Depois disso, eles são arredondados para as 8 direções possíveis.* Não sei como dimensionar a saída para um determinado número de pixels, de modo que isso deve ser feito manualmente = /
EDIT: Acabei de descobrir que há casos em que meu programa de verificação não reconhece soluções erradas (alterações em mais de uma etapa), mas estou tentando encontrar outra solução.
Entrada:
Código:
fonte
Mathematica,
116115 bytesSuponho que um bom cavalo nunca pula mais alto do que o necessário. As grades 2920 diferentes são muito facilmente obtidas com o uso de apenas duas direções (estou usando
N
eNE
), o que torna trivial a satisfação da regra de continuidade. Estou simplesmente escolhendo entre N e NE com base nos bits den
, então isso realmente produzirá 2 64 mapas de vento diferentes.Aqui estão os dez primeiros mapas:
PS: Minha idéia original era enumerar todas as 8 4 combinações para os 4 cantos e interpolar "linearmente" o resto da grade. Provavelmente isso resultaria em mapas mais agradáveis, mas, afinal, este é um código de golfe, então fui com o que atende aos requisitos mínimos.
fonte
PHP 5.4, 549 bytes
Um pouco prejudicado pela necessidade de definir setas como gráficos, aqui está o meu código PHP:
Recebe seu argumento da linha de comando, como:
Esta solução usará a entrada como a definição dos quatro cantos. O restante do mapa será interpolado suavemente entre valores. Ele definiu resultados para todos os valores de 0 a 4095, um total geral de ~ 11,25 anos de previsão falsa, que deve ser mais do que suficiente para corrigir o software climático!
Aqui está um GIF de todos os resultados:
E um ZIP contendo cada mapa pode ser baixado aqui
(Nota: meu domínio expirou recentemente porque não estava prestando atenção. Renovei-o, mas a imagem e o link acima podem não funcionar até que o DNS seja atualizado)
Não qualificado:
fonte