Desafio
Um Pixel World é uma imagem PNG onde as forças gravitacionais, eletromagnéticas e nucleares não existem mais. As forças especiais conhecidas como "forças de pixel" são tudo o que resta. Nós definimos essa força como
F p-> q = a * (p * q) / (r * r) * r̂
F
é a força do pixel quep
exerce sobreq
a
é constante de Adams, definida comoa = 4.2 * 10 ^ 1
p
eq
são cobranças em dois pixelsr
é a distância dep
atéq
r̂
é a direção de r em radianos, medida no sentido anti-horário * a partir do eixo x positivo
* Existem infinitamente muitos valores aceitáveis para qualquer direção. Por exemplo, 6.28, 0, -6.28 e -12.57 radianos são todos equivalentes e todos seriam aceitos.
Existem três tipos de pixels:
- Um pixel vermelho contém uma carga de um positivo
- Um pixel preto contém uma carga de um negativo
- Um pixel branco mantém uma carga zero
O pixel inferior esquerdo do mundo de pixels está localizado em (0, 0)
. O eixo y positivo cai na página e o eixo x positivo cai para a direita. A força total em um pixel é simplesmente a soma vetorial de todas as forças exercidas sobre esse pixel. Cargas iguais se repelem, e cargas opostas se atraem.
Dado um caminho de arquivo para um mundo de pixels, bem como dois números inteiros x
e y
, produza a força total exercida no pixel no local (x, y)
no formato <magnitude>\n<direction>
. A saída deve ser precisa com pelo menos 2 casas decimais, mas você pode gerar mais, se desejar. A direção deve ser emitida em radianos. Os números inteiros x
e y
são garantidos para estar dentro dos limites do mundo.
Entregas
Você deve incluir um programa e um comando que possa ser usado para executar seu programa. Dois exemplos:
python AbsolutelyPositive.py "C: \ Pixtona.png" 50 40
java UltimateAttraction "C: \ Jupix.png" 30 30
Imagem de exemplo
Na imagem abaixo , há um pixel preto em (100, 104)
.
Pixars.png
Saída de exemplo
Esta saída não corresponde à entrada acima.
534.19721014
4.32605416
Precisa de ajuda para começar?
Eu escrevi algum código de exemplo aqui . Eu não testei, então use-o por sua conta e risco.
Respostas:
Python - 355
Ungolfed
Algum pequeno programa usado para criar testes:
Testes de amostra:
Apenas postando primeiro ... Se houver algum erro ou problema, deixe um comentário abaixo, mas provavelmente levará algum tempo para responder, porque eu estou realmente ocupado com outras coisas.
fonte