Notwen möchte die Kinematik von Körpern untersuchen, die aus großen Höhen in einem gleichmäßigen Gravitationsfeld geworfen werden, hat aber leider nicht die technische Möglichkeit, an ausreichend hohe Stellen zu gehen und die Objekte beim Fallen zu beobachten. Aber wer will nicht Fortschritte in der Wissenschaft sehen, also ... Helfen wir Notwen, einen Schwerkraftsimulator zu bauen!
Physischer Hintergrund
Ein Objekt, das aus einer Höhe ( ohne Anfangsgeschwindigkeit ) in ein gleichmäßiges Gravitationsfeld gefallen ist und dabei atmosphärische Effekte wie Luftwiderstand oder Wind vernachlässigt, gewinnt an Geschwindigkeit und beschleunigt mit der Zeit in Richtung Boden. Diese "Änderungsrate" der Geschwindigkeit in einer Zeiteinheit wird als Gravitationsbeschleunigung bezeichnet . In der Nähe der Erdoberfläche entspricht sie ungefähr , aber für die Zwecke dieser Herausforderung verwenden wir den Wert , was bedeutet, dass ein Objekt in einer einzigen Sekunde seine Geschwindigkeit um etwa10merhöht . StellenSie sich eine Höhe, die ein Vielfaches vonund stellen Sie sich vor, Sie teilen diese Höhe in gleiche Intervalle von jeweilsMetern Länge. Notwen möchte messen, wie lange es dauert, bis das Objekt jedes dieser Intervalle durchläuft. Deshalb wollen wir dies auch berechnen. ModerneKinematik- Überspringen technische - sagt unsdass:
Die Herausforderung
Eingabe: Die Höhe aus der das Objekt geworfen wird, ist entweder: ein positives ganzzahliges Vielfaches von , oder die Anzahl der Intervalle (also entwederoderwürde bedeuten, dass) - welches liegt bei Ihnen.
Ausgabe: Eine ASCII-Kunstanimation eines fallenden Objekts, die aus einer Höhe fallen gelassen wurde (Details unten).
Die Struktur eines Ausgaberahmens muss wie folgt sein:
- Zeilenumbrüche vor dem "Grund", dargestellt durch mindestens ein Nicht-Leerzeichen (z
@
.B.). Mindestens eines der Zeichen des Bodens muss auf der Vertikalen liegen, auf die das Objekt fällt. - Ein anderes Nicht-Leerzeichen, das das Objekt darstellt (z. B.
X
), außer dem, das Sie für den Boden ausgewählt haben. - Optional ein Zeichen am Anfang jeder Linie, das die vertikale Achse oder die Wand darstellt, die auf Linien erstellt wurde. Jede Anzahl von führenden und nachfolgenden Leerzeichen ist in Ordnung, solange sie zwischen Frames konsistent sind, sowie jede beliebige Anzahl von Leerzeichen zwischen der Wand und dem Objekt. Beispiele für gültige Rahmen sind 1 (für oder ):
| X > | @ > A | > | or or or > | O > | > | > @@@ ^ ----- &&&
Das Objekt muss in der ersten Zeile des ersten Frames beginnen. Nach die Ausgabe geleert werden und Ihr Programm sollte das Objekt in derselben Vertikalen, aber in der nächsten Zeile im zweiten Frame anzeigen. dann sollte nach die Ausgabe wieder geleert werden und Ihr Programm sollte das Objekt in derselben Vertikalen, aber in der nächsten Zeile im dritten Frame usw. anzeigen, bis das Objekt die Linie direkt über dem Boden erreicht. Beispiel:
Regeln
- Die Ausgabe sollte Text sein, der auf eine interaktive (spülbare) Konsole, ein GIF, eine separate Datei für jeden Frame oder eine andere vernünftige Ausgabetechnik geschrieben wurde.
- Jeder Frame sollte den letzten Frame vollständig überschreiben und sich an derselben Stelle befinden.
- Sie können davon ausgehen, dass die Zeit, die der Compiler / Interpreter für die Ausgabe des Texts benötigt, vernachlässigbar ist und die für die Berechnung der Quadratwurzeln zulässige Mindestgenauigkeit 2 Dezimalstellen beträgt.
- Sie können Eingaben vornehmen und Ausgaben über eine beliebige Standardmethode bereitstellen , wobei zu beachten ist, dass diese Lücken standardmäßig verboten sind. Dies ist Code-Golf . Versuchen Sie also, die Aufgabe mit den wenigsten Bytes abzuschließen, die Sie in der Sprache Ihrer Wahl verwalten können.
1: Ich bin nachsichtig, was einen gültigen Rahmen ausmacht, weil ich zulassen möchte, was zu Ihrer Lösung am besten passt, und ich versuche nicht, der Herausforderung überflüssiges Material hinzuzufügen. Wenn etwas unklar ist, fragen Sie in den Kommentaren.
chr(27)
?'\33'
sollte er trotzdem kürzer sein.2*5**.5
ist20**.5
.C # (.NET Core) ,
201, 180 + 13 = 193 BytesBenötigt System; für 13 zusätzliche Bytes.
Seltsamerweise scheint Console.Clear () bei TIO nicht für mich zu funktionieren. Dies läuft jedoch perfekt in einer Konsolen-App unter VS2017.
BEARBEITEN: Dank Verkörperung der Ignoranz für die Verkürzung der Schleife, die auf meine unnötige Variablenzuweisung und die unnötige Verwendung von System.Threading hinweist; Aussage (Rest vom VS-Kopieren) und Hinweis darauf, dass der Boden erforderlich war! Insgesamt wurden bisher 8 Bytes mit dem Zusatz des Bodens gespielt. Ty Ty!
Probieren Sie es online aus!
quelle