Wprowadzenie
Biorąc pod uwagę tę wizualizację pola gry:
(0,0)
+----------------------+(map_width, 0)
| A |
|-----+-----------+----|
| D | W | B |
|-----+-----------+----|
| C |
+----------------------+(map_width, map_height)
(0, map_height)
Cała mapa, na której gra się, to prostokąt z współrzędnymi narożnymi (0,0) i (szerokość_kresu, wysokość_kresu). Punkty kwalifikujące się do odradzania wrogów to Unia
Wyzwanie
Napisz kod, który zwraca losowy punkt (x, y), który z pewnością znajduje się w środku S. Twój kod nie może wprowadzić żadnych dodatkowych odchyleń, co oznacza, że prawdopodobieństwo każdej współrzędnej rozkłada się równomiernie, przy założeniu, że twój wybór generowania losowości (np. Funkcja | biblioteka | dev / urandom) jest bezstronna.
Najkrótsze rozwiązania w bajtach wygrywają!
Wejście
Będziesz mieć łącznie 6 pozytywnych zmiennych wejściowych całkowitą w kolejności:
map_width, map_height, W_top_left_x, W_top_left_y, W_width, W_height
. Możesz założyć, że (obliczona) powierzchnia wszystkich regionów (A, B, C, D, W) wynosi> 10, więc nie ma pustych przestrzeni / regionów.
Przykładowe dane wejściowe: 1000, 1000, 100, 100, 600, 400
Dane wejściowe muszą zawierać 6 wartości opisanych powyżej, ale można je przekazać jako mniejszą liczbę argumentów w dowolnej kolejności. Na przykład przekazywanie (map_width, map_height)
jako krotka python jest dozwolone. Oczywiście nie jest dozwolone obliczanie parametrów takich jak dolny prawy punkt W.
Wynik
2 losowo generowane liczby całkowite (x, y) gdzie
LUB
co oznacza, że co najmniej jedno z powyższych wyrażeń logicznych musi być prawdziwe.
Przykłady
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
Szczegółowe informacje i ograniczenia dotyczące wejścia / wyjścia znajdują się w domyślnych zasadach wejścia / wyjścia
2 randomly generated integers (x, y)