Eu baixei o POV-ray e renderizei esse estilo brilhante da esfera de metal dos anos 90:
Sua tarefa é fazer a mesma coisa, mas implementando o mecanismo de renderização no menor número de bytes possível. Você não precisa replicar esta imagem exata - qualquer imagem de uma esfera reflexiva acima de um tabuleiro de damas infinito funcionará, desde que atenda aos critérios abaixo.
Regras:
A imagem deve representar uma esfera reflexiva pairando acima de um tabuleiro de damas infinito. O tabuleiro de damas em si e seu reflexo na esfera devem ser mostrados na imagem. Deve ficar claro visualmente que é isso que estamos vendo. Além disso, os detalhes da geometria, cores, propriedades do material etc. são com você.
Deve haver alguma iluminação na cena: partes da esfera devem ser mais escuras do que outras, e visualmente deve ser possível dizer aproximadamente de onde a luz está vindo. Além disso, os detalhes do modelo de iluminação são com você. (Você pode inventar seu próprio modelo de iluminação simplificado, se quiser.) A esfera não precisa projetar uma sombra.
Os dois critérios acima - se realmente se parece com uma esfera brilhante acima de um tabuleiro de xadrez iluminado por uma fonte de luz - serão julgados pela comunidade por meio de votação. Portanto, uma resposta deve ter uma pontuação positiva para ser elegível para ganhar.
A saída deve ter pelo menos 300 x 300 pixels. Pode ser exibido na tela ou gravado em um arquivo, ou está bom.
Seu código deve ser executado em menos de uma hora em um computador moderno razoável. (Isso é generoso - o raio POV renderiza a cena acima praticamente instantaneamente.)
Nenhuma funcionalidade integrada de rastreamento de raios pode ser usada - você deve implementar o renderizador por conta própria.
Isso é código-golfe , então a entrada de pontuação positiva com o código mais curto (em bytes) vence. No entanto, você também pode jogar o meta-jogo de obter mais votos desenhando uma figura bonita (mantendo o código curto, é claro).
Esse desafio pode parecer ridiculamente difícil, mas, como a geometria é fixa, o algoritmo para renderizar essa cena pelo traçado de raios é bastante direto. É realmente apenas um caso de iteração sobre cada pixel na imagem de saída e avaliação de uma expressão matemática para ver qual deve ser a cor, por isso estou otimista de que veremos boas respostas.
fonte
Respostas:
Python 2,
484468467 bytesNota: depois que
if I>0:
houver uma nova linha seguida por uma única guia antes det=
...A execução do programa criará uma imagem de 800x600 chamada s.pgm
Começou a partir de uma fórmula "real" de traçador de raios (ajustada um pouco para jogar golfe).
A renderização demora cerca de 3s no meu PC antigo (0,7s com pypy).
fonte
0000
pore4
todo.a if b else c
com(c,a)[b]
contanto que você não confiar em curto-circuito para evitar por exemplo, divisão por zero erros. Tambémif A:code;return B\nelse:return C
você pode substituir comcode;return(C,B)[A]
.