die viele Male hintereinander gelöst wird. Dabei soll bei jedem Durchlauf ein besserer Weg gefunden werden. Der Weg, die Wiederholungen sind das Ziel, nicht die perfekte Lösung eines Problems. Lernen durch Üben. Test Driven Development (TDD): Skills verbessern, Refactoring, besserer, getesteter Code. Algorithmen unterschiedlicher Art und deren Effizienz ausprobieren. Neues lernen, z.B. eine neue Sprache. http://talks.sperrobjekt.de/codekata/#slide-3
Leute sollen ermutigt werden mitzumachen und ihre Programmierfähigkeiten, beim Lösen der Kata, einem Publikum zu präsentieren. Randori? In diesem Format lösen alle Teilnehmer das Problem gemeinsam mit TDD und Pair Programming. Nach 5-7 Minuten wird rotiert, Anmerkungen aus dem Publikum sind nur eingeschränkt erlaubt. Koan? Koans sind im Zen-Buddhismus Fragen, auf die es keine absolute Antwort gibt. Koans sind fertige Tests, zu denen als "Antwort" die zu testende Klasse geschrieben werden soll. http://talks.sperrobjekt.de/codekata/#slide-4
North East West South API, die Rover auf Raster bewegt. Rover hat Startpunkt (x,y) mit Richtung (N, S, E, W). Rover erhält Befehle über Zeichenkette. Rover-Befehle sind: f für vorwärts/ forward b für rückwärts/ backward l für links/ left r für rechts/ right Mars-Rover-Kata
2,2 N -3,0 0,0 3,0 0,-3 x,y ! Planeten sind Kugeln: Daher springt der Rover von einer Grenze | zur anderen. Trifft ein Rover auf ein Hindernis (x,y), bleibt er stehen und gibt Rückmeldung. Mars-Rover-Kata
North East West South Beispiel: Rover Startpunkt: x0, y0, Richtung Norden Beispiel Befehls-Zeichenkette: f f r f f Rover Endpunkt: x2, y2, Richtung Osten Mars-Rover-Kata 2,2 E
gezeigt mit x und y Koordinaten. https://de.wikipedia.org/wiki/Kartesisches_Koordinatensystem Ansatz 1: Eher „If-Else-Switch-Loop“-lastig Array mit Himmelsrichtungen (Nord, Ost, Süd, West) Ansatz 2: Verwendung von Sinus und Kosinus Funktionen Osten 0°, Norden 90°, Westen 180°, Süden 270°
Funktionen Degree: Osten 0°, Norden 90°, Westen 180°, Süden 270° rad = Degree * π / 180 Xneu = Xalt + ticks * Round( Cos( rad ) ) Yneu = Yalt + ticks * Round( Sin( rad ) ) Anzahl der Schritte, die der Rover in eine Richtung fahren soll.
Funktionen Degree: Osten 0°, Norden 90°, Westen 180°, Süden 270° rad = Degree * π / 180 Xneu = Xalt + ticks * Round( Cos( rad ) ) Yneu = Yalt + ticks * Round( Sin( rad ) ) Formel für Umrechnung von Winkelgrad (Degree) nach Bogenmaß (Radian).
Funktionen Degree: Osten 0°, Norden 90°, Westen 180°, Süden 270° rad = Degree * π / 180 Xneu = Xalt + ticks * Round( Cos( rad ) ) Yneu = Yalt + ticks * Round( Sin( rad ) ) Berechnung von Sinus und Kosinus. Pitfall: Runden nicht vergessen!
Richtung nicht berücksichtigt … aber mit Modulo geht es ganz einfach: Degreeneu = ( Degreealt + DegreeÄnderung ) % 360 DegreeÄnderung von -90° bzw. +90° ermöglicht Richtungsänderung nach rechts bzw. links. 90° Norden 180° Westen 0,0 0° Osten 270° Süden
Koordinatensystem, Ansatz 2 von mir https://github.com/mattes/mars-rover-kata-golang (Golang) Kartesisches Koordinatensystem, Ansatz 1 von Benjamin https://github.com/nureineide/mars-rover-kata (Python) .... deine Implementierung via @mkadenbach