Herausforderung
Eine Pixelwelt ist ein PNG-Bild, in dem Gravitations-, elektromagnetische und nukleare Kräfte nicht mehr existieren. Es bleiben nur Spezialkräfte, die als "Pixelkräfte" bekannt sind. Wir definieren diese Kraft als
F p → q = a * (p * q) / (r * r) * r̂
F
ist die Pixelkraft, diep
ausgeübt wirdq
a
ist Adams 'Konstante, definiert alsa = 4.2 * 10 ^ 1
p
undq
sind Ladungen auf zwei Pixelnr
ist die Entfernung vonp
bisq
r̂
ist die Richtung von r im Bogenmaß, gemessen gegen den Uhrzeigersinn * von der positiven x-Achse
* Es gibt unendlich viele akzeptable Werte für eine bestimmte Richtung. Zum Beispiel sind 6,28, 0, -6,28 und -12,57 Bogenmaß alle äquivalent und würden alle akzeptiert.
Es gibt drei Arten von Pixeln:
- Ein rotes Pixel enthält eine positive Ladung
- Ein schwarzes Pixel enthält eine negative Ladung
- Ein weißes Pixel enthält eine Ladung von Null
Das untere linke Pixel der Pixelwelt befindet sich bei (0, 0)
. Die positive y-Achse fällt auf der Seite nach oben und die positive x-Achse fällt nach rechts. Die Gesamtkraft auf ein Pixel ist einfach die Vektorsumme aller auf dieses Pixel ausgeübten Kräfte. Wie Ladungen abstoßen und entgegengesetzte Ladungen anziehen.
Bei einem Dateipfad zu einer Pixelwelt sowie zwei Ganzzahlen x
und y
wird die Gesamtkraft ausgegeben, die auf das Pixel an der Stelle (x, y)
im Format ausgeübt wird <magnitude>\n<direction>
. Die Ausgabe muss auf mindestens 2 Dezimalstellen genau sein. Sie können jedoch auch mehr ausgeben, wenn Sie möchten. Die Richtung muss im Bogenmaß ausgegeben werden. Die ganzen Zahlen x
und y
sind garantiert innerhalb der Weltgrenze.
Ergebnisse
Sie müssen ein Programm und einen Befehl einschließen, mit dem Sie Ihr Programm ausführen können. Zwei Beispiele:
python AbsolutelyPositive.py "C: \ Pixtona.png" 50 40
java UltimateAttraction "C: \ Jupix.png" 30 30
Beispielbild
Im Bild unten befindet sich ein schwarzes Pixel bei (100, 104)
.
Pixars.png
Beispielausgabe
Diese Ausgabe entspricht nicht der obigen Eingabe.
534.19721014
4.32605416
Benötigen Sie Hilfe beim Einstieg?
Ich schrieb einige Beispiel - Code hier . Ich habe es nicht getestet, benutze es also auf eigenes Risiko.
Antworten:
Python - 355
Ungolfed
Ein kleines Programm zum Erstellen von Tests:
Beispieltests:
Nur zuerst posten ... Wenn es Fehler oder Probleme gibt, schreiben Sie unten einen Kommentar, aber es wird wahrscheinlich einige Zeit dauern, bis Sie antworten, da ich wirklich mit anderen Dingen beschäftigt bin.
quelle