introduzione
Data questa visualizzazione di un campo da gioco:
(0,0)
+----------------------+(map_width, 0)
| A |
|-----+-----------+----|
| D | W | B |
|-----+-----------+----|
| C |
+----------------------+(map_width, map_height)
(0, map_height)
L'intera mappa su cui si gioca è il rettangolo con le coordinate angolari (0,0) e (map_width, map_height). I punti che possono essere generati dai nemici sono l'Unione
La sfida
Scrivi il codice che restituisce un punto casuale (x, y) che è garantito essere all'interno di S. Il tuo codice non può introdurre alcun bias aggiuntivo, il che significa che la probabilità di ciascuna coordinata è distribuita uniformemente dato il presupposto che la tua scelta di generare casualità (ad es. Funzione | library | dev / urandom) è imparziale.
Le soluzioni più brevi in byte vincono!
Ingresso
Vi sarà dato un totale di 6 variabili di input interi positivi in ordine:
map_width, map_height, W_top_left_x, W_top_left_y, W_width, W_height
. Puoi presumere che l'area (calcolata) di tutte le regioni (A, B, C, D, W) sia ciascuna> 10, quindi non ci sono spazi / regioni vuoti.
Esempio di input: 1000, 1000, 100, 100, 600, 400
L'input deve contenere i 6 valori sopra descritti ma può essere passato come minor numero di argomenti e in qualsiasi ordine. Ad esempio (map_width, map_height)
, è consentito il passaggio come tupla di pitone. Ciò che non è permesso ovviamente sono parametri calcolati come il punto in basso a destra della W.
Produzione
2 numeri interi generati casualmente (x, y) dove
O
significa che almeno una delle espressioni logiche sopra deve essere vera.
Esempi
Input Output(valid random samples)
1000 1000 100 100 600 400 10 10
1000 1000 100 100 600 400 800 550
1000 1000 100 100 600 400 800 10
1000 1000 100 100 600 400 10 550
Per dettagli e limitazioni per input / output, consultare le regole di input / output predefinite
2 randomly generated integers (x, y)