Sam wybierz sobie poziom zadania. Możesz także przesłać kilka poziomów oddzielnie.
Napisz program, który na wejściu przyjmie macierz reprezentująca labirynt w następującej postaci:
[
[1,1,1,1,1],
[1,0,0,0,0],
[1,0,1,0,1],
[1,0,1,1,1]
]
gdzie 1 reprezentują ściany - czyli pola labiryntu na które nie można wchodzić,
a 0 reprezentują odcinki korytarza, oraz koordynaty pola startowego.
Labirynt jest zawsze prostokątem
Pole wejściowe nigdy nie jest polem wyjściowym
Poziom 1) Program zwróci liczbę ścian oraz liczbę kafelków korytarza
Poziom 2) Program przyjmie koordynaty pola wejściowego a na wyjściu zwróci koordynaty pola wyjściowego, bez podawania ścieżki
Dla powyższego przykładu jeżeli na wejściu otrzyma [3,1] to na wyjściu powinien zwrócić [1,4]
Poziom 3) Program przyjmie 3 wartości - koszt wybudowania jednej ściany, koszt wybudowania jednego odcinka korytarza, oraz koszt pochodni a zwróci całkowity koszt wybudowania labiryntu, przy założeniu ze pochodnia umieszczona jest na co drugim odcinku korytarza
Poziom 4) Program znajdzie ścieżkę przejścia labiryntu. Na wyjściu program powinien zwrócić listę koordynatów reprezentujących ścieżkę dotarcia do pola wyjściowego.
Czyli dla powyższego labiryntu oraz pola startowego o koordynatach [3,1] Powinien zwrócić następującą listę
[ [3,1], [2,1], [1,1], [1,2], [1,3], [1,4]].
Poziom 5) Program jest RESTowym endpointem o następujących endpointach
/maze/
PUT - dodanie nowego labiryntu
body to json z labiryntem
{
maze: [
[1,1,1,1,1],
[1,0,0,0,0],
[1,0,1,0,1],
[1,0,1,1,1]
],
entrance: [3,1]
}
jeżeli labirynt jest poprawny odpowie odpowiednim statusem http potwierdzającym dodanie
i zwróci id tego labiryntu
jeżeli labirynt jest niepoprawny to odpowie odpowiednim statusem http
/maze/[id]/describe
GET - zwróci informacje z poziomu 1 w postaci jsona
{
walls: number,
corridors: number
}
/maze/[id]/exit
GET - zwróci coordynaty pola wyjściowego w json
{
exit: [x, y]
}
/maze/[id]/quotation?wallPrice=[float]&corridorPrice=[float]&torchPrice=[float]
GET - zwróci koszt w następującej postaci
{
price: [float]
}
/maze/[id]/path
GET - zwróci ścieżkę dojścia do wyjścia
{
path: [ [3,1], [2,1], [1,1], [1,2], [1,3], [1,4]]
}
Zakładki