Il mio cane mi abbaia, ma sono troppo pigro per portarlo a fare una passeggiata. Ho un'idea! Chiederò alle persone di Code Golf di farlo per me!
La tua sfida è simulare la passeggiata di un cane. Ecco le regole per portare a spasso il cane:
- L'umano (
H
) inizierà0,0
su un piano di coordinate (cartesiano) e andrà casualmente di uno spazio in alto, a sinistra, a destra o in basso ogni secondo. - Il cane (
D
) inizierà nella stessa posizione e andrà a zero, uno, due o tre spazi in alto, a sinistra, a destra o in basso ogni secondo (a caso, ovviamente). Il cane è meno prevedibile e talvolta corre più veloce o si ferma completamente. - Il cane non otterrà mai più di una certa quantità di unità dall'umano (a distanza euclidea), che è la lunghezza del guinzaglio (
L
). Ad esempio, se loL
è6
, una posizione valida sarebbeH(0,0) D(4,4)
(poiché la distanza è di circa 5,65 unità), ma nonH(0,0) D(5,4)
(circa 6,4 unità).- Se, quando il cane si muove, viola il requisito della distanza del guinzaglio, deve andare il più lontano possibile nella sua direzione determinata che non viola il requisito della distanza. Ad esempio, se la posizione è
H(0,0) D(3,4)
e il cane viene deciso casualmente di spostare 3 spazi a destra, andrà aD(4,4)
, poiché è il più lontano possibile senza allontanare più di 6 unità. (Nota che ciò potrebbe comportare un movimento di 0 spazi, cioè nessun movimento!)
- Se, quando il cane si muove, viola il requisito della distanza del guinzaglio, deve andare il più lontano possibile nella sua direzione determinata che non viola il requisito della distanza. Ad esempio, se la posizione è
- Regole varie: l'essere umano si muove per primo. L'essere umano non deve superare la lunghezza del guinzaglio durante il suo movimento. In tal caso, deve scegliere un'altra direzione. "Casuale" significa "con una distribuzione uniforme e senza schemi".
L'input verrà fornito in questo formato (può essere STDIN, parametro di funzione, file, ecc.):
"<amount of seconds the walk will last> <leash length>"
Per esempio:
300 6 // a 5 minute walk with a 6 yard leash
È necessario fornire un output in questo formato (può essere STDOUT, valore di ritorno della funzione, file, ecc.):
H(0,0) D(0,0)
H(0,1) D(2,0)
H(1,1) D(2,1)
H(1,0) D(2,-1)
...
(La quantità di linee in uscita sarà seconds + 1
, poiché la H(0,0) D(0,0)
linea non conta.)
Questo è code-golf , quindi vincerà il codice più breve in byte!