Mein Hund bellt mich an, aber ich bin zu faul, um mit ihm spazieren zu gehen. Ich habe eine Idee! Ich werde die Leute von Code Golf dazu bringen, das für mich zu tun!
Ihre Herausforderung besteht darin, den Spaziergang eines Hundes zu simulieren. Hier sind die Regeln für das Laufen mit dem Hund:
- Der Mensch (
H
) beginnt0,0
auf einer (kartesischen) Koordinatenebene und geht jede Sekunde nach dem Zufallsprinzip ein Feld nach oben, links, rechts oder unten. - Der Hund (
D
) startet an der gleichen Stelle und geht jede Sekunde entweder um null, eins, zwei oder drei Felder nach oben, links, rechts oder unten (natürlich nach dem Zufallsprinzip). Der Hund ist weniger vorhersehbar und rennt manchmal schneller oder hört ganz auf. - Der Hund wird niemals mehr als eine bestimmte Anzahl von Einheiten vom Menschen entfernt sein (in euklidischer Entfernung), was der Länge der Leine entspricht (
L
). Wenn dies z. B. der FallL
ist6
, wäre eine gültige PositionH(0,0) D(4,4)
(da der Abstand ungefähr 5,65 Einheiten beträgt), aber nichtH(0,0) D(5,4)
(ungefähr 6,4 Einheiten).- Wenn der Hund bei seiner Bewegung die Anforderungen an die Leinenentfernung verletzen würde, muss er in seiner festgelegten Richtung so weit wie möglich gehen, ohne die Anforderungen an die Entfernung zu verletzen. Wenn zum Beispiel die Position ist
H(0,0) D(3,4)
und der Hund willkürlich 3 Felder nach rechts schiebt, geht er zuD(4,4)
, da dies die am weitesten entfernte Position ist , ohne dass mehr als 6 Einheiten entfernt werden. (Beachten Sie, dass dies zu einer Bewegung von 0 Leerzeichen führen kann, dh überhaupt keine Bewegung!)
- Wenn der Hund bei seiner Bewegung die Anforderungen an die Leinenentfernung verletzen würde, muss er in seiner festgelegten Richtung so weit wie möglich gehen, ohne die Anforderungen an die Entfernung zu verletzen. Wenn zum Beispiel die Position ist
- Verschiedene Regeln: Der Mensch bewegt sich zuerst. Der Mensch darf die Leinenlänge bei seiner Bewegung nicht überschreiten. Wenn ja, muss es eine andere Richtung wählen. "Zufällig" bedeutet "mit einer gleichmäßigen Verteilung und ohne Muster".
Die Eingabe erfolgt in diesem Format (kann STDIN, Funktionsparameter, Datei usw. sein):
"<amount of seconds the walk will last> <leash length>"
Beispielsweise:
300 6 // a 5 minute walk with a 6 yard leash
Sie müssen die Ausgabe in diesem Format geben (kann STDOUT, Funktionsrückgabewert, Datei usw. sein):
H(0,0) D(0,0)
H(0,1) D(2,0)
H(1,1) D(2,1)
H(1,0) D(2,-1)
...
(Die Anzahl der ausgegebenen Zeilen ist seconds + 1
, da die H(0,0) D(0,0)
Zeile nicht zählt.)
Das ist Code-Golf , also gewinnt der kürzeste Code in Bytes!
Antworten:
GolfScript, 140 Zeichen
Beispiellauf ( online versuchen ):
quelle
CoffeeScript - 324 + Funktionsaufruf
Demo (unter Verwendung von Leash 10):
Code:
Langer Code:
quelle
Ruby,
189177Ich kann das vielleicht ein bisschen fallen lassen. Ich weiß nicht lieben
j
.Ungolfed:
quelle
Mathematica 285
Golf gespielt
Beispiel
Ungolfed
Es gibt einige Kommentare im Text unten. Ich habe auch einen Ausdruck beigefügt, der es ermöglicht, einige der Berechnungen zu verfolgen.
Beispiel
[Ein Teil des Ausdrucks wird angezeigt, um einen Eindruck von der Funktionsweise des Codes zu vermitteln. ]
quelle