Newtons Gravitationstheorie besagt, dass die Gravitationskraft zwischen zwei Punktmassen ist
F = (Gm 1 m 2 ) / r 2
Wo
- G ist die Gravitationskonstante: 6,674 × 10 –11 N · (m / kg) 2
- m 1 ist die Masse des ersten Objekts
- m 2 ist die Masse des zweiten Objekts
- r ist der Abstand zwischen ihren Massenschwerpunkten
Herausforderung
Sie müssen den Zug zwischen zwei Wörtern simulieren. Jeder Kleinbuchstabe hat eine Masse, die durch seine Position im Alphabet angegeben wird. Großbuchstaben haben die doppelte Masse ihrer Kleinbuchstaben! Sie werden einen String mit zwei Worten durch mehrere Räume, sowie eine positive ganze Zahl von Sekunden getrennt gegeben werden, s . Geben Sie aus, wie die Zeichenfolge nach s Sekunden aussehen würde .
Die Info
- Da Wörter abstrakt sind, haben sie unterschiedliche Einheiten und Konstanten
- Masse: WMU (Word Mass Unit) - entspricht der Masse des Buchstabens 'a'.
- Entfernung: em , die Länge eines Zeichens.
- Kraft: N W (Word Newton) = WMU · em / s 2
- Gravitationskonstante: G = 1 N w · (em / WMU) 2
- Das erste Zeichen entspricht der Position 0 auf der x-Achse.
- Alle Berechnungen sollten so genau wie möglich durchgeführt werden. Erst am Ende runden Sie zum nächsten em.
- Sie müssen keinen Kalkül verwenden, sondern müssen nur das F jede Sekunde neu berechnen , die neue Beschleunigung automatisch auf die Geschwindigkeit anwenden und nach einer Sekunde die Geschwindigkeit auf die Position anwenden (siehe Beispiel).
- Sobald zwei Wörter miteinander kollidieren (wie
catdog
), bewegen sie sich nicht weiter.
Massezentrum
Der Schwerpunkt eines Wortes kann mit der Formel gefunden werden:
Dabei ist M die Gesamtmasse des Wortes, m i die Masse eines Buchstabens und r i die Position des Buchstabens.
Beispiel:
(Hinweis: Obwohl dieses Beispiel dies nicht zeigt, denken Sie daran, dass Großbuchstaben die doppelte Masse ihrer Gegenstücke in Kleinbuchstaben haben.)
Eingabe : cat dog
, 2
Was sind zuerst die Positionen der einzelnen Wörter? "Katze" beginnt an Position 0 und "Hund" beginnt an Position 9, also
- x c = 0 und x d = 9
Als nächstes finden wir den Schwerpunkt von "Katze".
- Es hat eine Masse von 24 WMU (3 + 1 + 20).
- R c = 1/24 (3 · 0 + 1 · 1 + 20 · 2) = 41/24 = 1,70833 em
- Es ist also nicht überraschend, dass der Schwerpunkt sehr nahe am Buchstaben 't' liegt.
Lassen Sie uns nun den Schwerpunkt von "Hund" erhalten
- R d = 1/26 (4 · 9 + 15 · 10 + 7 · 11) = 263/26 = 10,11538 em
- Der Schwerpunkt des Hundes liegt also nahe am Buchstaben 'o', leicht in Richtung 'g'.
Jetzt können wir die Kraft zwischen den beiden Wörtern berechnen.
- F = 24 · 26 / (10.11538-1.70833) 2 = 8,82871 N w
Jetzt müssen wir diese Kraft auf beide Wörter anwenden und ihre Beschleunigungen erhalten
- a c = 8,82871 / 24 = 0,36786 em / s 2
- a d = -8,82871 / 26 = -.33957 em / s 2
Nach den obigen Regeln wenden wir die Beschleunigung auf die Geschwindigkeit an
- v c = 0,36786 em / s
- v d = -.33957 em / s
Dann wenden wir die Geschwindigkeit auf die Position an, also nach einer Sekunde
- x c = 0,36786 em
- x d = 9 - 33957 = 8,66043 em.
- R c = 1,70833 + 0,36786 = 2,07619 em
- R d = 10,11538 - 0,33957 = 9,77581 em
Jetzt wiederholen wir den Vorgang noch einmal mit den neuen Positionen:
- F = 24 · 26 / ((9,77581) - (2,07619)) 2 = 10,52558 N w
- a c = 10,52558 / 24 = 0,43857 em / s 2 , a d = 10,52558 / 26 = -.40483 em / s 2
- v c = .36786 + .43857 = .80643 em / s, v d = -.33957 - .40483 = -.74440 em / s
- x c = 0,36786 + 0,80643 = 1,17429 em, x d = 8,66043 - 0,74440 = 7,91603 em
- R c = 2,07619 + 0,80643 = 2,88262 em, R d = 9,77581 - 0,74440 = 9,03141 em
Am Ende haben wir also "Katze" bei x = 1,17429 und "Hund" bei x = 7,91603.
- Wir runden diese auf die nächste ganze Zahl, so dass "Katze" auf Position 1 und "Hund" auf Position 8 geht, also ist die Ausgabe
cat dog
- Wir runden diese auf die nächste ganze Zahl, so dass "Katze" auf Position 1 und "Hund" auf Position 8 geht, also ist die Ausgabe
Umgang mit Kollisionen
Denken Sie daran, dass die neue Beschleunigung jede Sekunde sofort zur Geschwindigkeit hinzugefügt wird. Wenn daher zwei Wörter zu einem bestimmten Zeitpunkt kollidieren, verwenden Sie Algebra, um den Kollisionspunkt zu finden. Nehmen Sie dieses Beispiel:
- Wort 1 ist 4 Buchstaben lang (|| w 1 || = 4)
- Wort 2 ist 4 Buchstaben lang (|| w 2 || = 4)
- x 1 = 3, x 2 = 8
v 1 = 2, v 2 = -6
Löse
3 + (4-1) + 2t = 8 - 6t
. t = 0,25 s. Die Position der Kollision ist x col = 6,5. Daher sollte die Kollision als solche zwischen x = 6 und x = 7 auftreten####@@@@
.
Die explizite Formel für die Positionen der Wörter nach einer Kollision lautet
- x 1 = Boden (x Spalte ) - || w 1 || +1
- x 2 = Boden (x Spalte ) +1
quelle
xx a
(ein Leerzeichen zwischen den Wörternxx
unda
). In der Newtonschen Physik wäre die Kraft, die sicha
anfühlt, auf das näherex
Ziehen aus einer Entfernung von zwei Ems und das anderex
Ziehen aus einer Entfernung von drei Ems zurückzuführen, ja? Das ist nicht dasselbe wie die Kraft einer einzelnen PunktmasseX
, die aus einer Entfernung von2.5
em (dh dem Schwerpunkt derxx
) gezogen wird, aufgrund des Gesetzes des umgekehrten Quadrats ...Antworten:
Python 3, 556 Bytes
Vielen Dank an FryAmTheEggman und Sherlock9 für einige Bytes
g(w,t)
Nimmt den String (w
) und die Zeit (t
) und gibt das Ergebnis zurück. Die anderen Funktionen sind Helfer.Probieren Sie es online aus (druckt
*
s anstelle von Leerzeichen aus, damit es besser sichtbar ist)quelle