• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Zadanie LNU - tytuł "Korytarz"

Object Storage Arubacloud
+1 głos
1,519 wizyt
pytanie zadane 14 lutego 2022 w Python przez mewtwo Użytkownik (830 p.)
otagowane ponownie 14 lutego 2022 przez mewtwo

Utknąłem na tym zadaniu i za bardzo nie wiem co  zmienić. Wszystkie potrzebne rzeczy są w zadaniu, nie ma żadnych innych podpowiedzi ani map. 

Program napisałem sam. 

Polecenie: 

Robopies D500™ szkolony do uzupełniania towaru w automatach z batonami wyposażony jest w trzy czujniki odległości: jeden z przodu i dwa po bokach. Robot jest we wstępnej fazie testów, dlatego na razie może poruszać się jedynie do przodu oraz obracać się w prawo lub w lewo o 90o. 

Twoim zadaniem jest zaprogramowanie D500™ w taki sposób, aby zdołał opuścić budynek, w którym się znajduje. Do pokonania ma korytarz o szerokości 2 metrów, który  nigdzie nie rozwidla się i ma zakręty jedynie pod kątem prostym. Robot powinien zatrzymać się od razu po opuszczeniu budynku. Na zewnątrz budynku jest otwarta przestrzeń, bez żadnych przeszkód w promieniu co najmniej 50 metrów. 

Robotem możesz sterować za pomocą funkcji:
move() - powoduje jazdę do przodu na odległość pół metra
turnL() - powoduje obrót w lewo o 90o
turnR() - powoduje obrót w prawo o 90o

Wskazania czujników zwracają funkcje:
front() - zwraca odległość do przeszkody z przodu robota w centymetrach
left() - zwraca odległość do przeszkody z lewej strony robota w centymetrach
right() - zwraca odległość do przeszkody z prawej strony robota w centymetrach 

Uzupełnij funkcję route() tak, aby D500™ opuścił budynek. 

def route():
        
    while left() < 5000 and right() < 5000:
            
        if front() < 100:
            
            if right() < 100:
                turnL()
                move()
            else:
                turnR()
                move()
        else:
            move()
                

 

komentarz 15 lutego 2022 przez Oscar Nałogowiec (29,320 p.)
edycja 15 lutego 2022 przez Oscar
Kiedyś czytałem takie artykuły o robocikach co poruszały się w labiryncie. Zasadniczo sposobem wydostania się z labiryntu jest trzymanie się jednej ściany. Są wtedy dwie możliwości: wrócisz do punktu startu, albo trafisz na wyjście. W tym pierwszym przypadku trzeba powtórzyć, ale trzymając się drugiej ściany. Oczywiście, to też jeszcze nie rozwiązuje każdego przypadku. Wykrycie powrotu do punktu startu wymaga użycia nawigacji zliczeniowej - obliczania współrzędnych na podstawie wykonanych skrętów i ruchów.

Dodatkowym etapem 'po wyjściu' może być uproszczenie drogi - wykasowanie wszystkich etapów gdy powrócono do już odwiedzonego miejsca. Wtedy taki robocik umieszczony jeszcze raz w tym samym miejscu od razu zmierza najkrótszą drogą do wyjścia.

PS. Przemyślałem trochę, trochę w tym wcześniejszym jest dobrze, trochę nie. Faktycznie trzeba trzymać się jednej ściany i zapamiętywać drogę, jednak użyć już tego "upraszczenia" - jeśli nastąpi powrót trzeba tamtą drogę zaznaczyć jako "już sprawdzoną" i wykluczyć ją z dalszych poszukiwań. Dalej można "trzymać się tej samej ściany" ale z wyłączenie obszarów "już sprawdzonych". Tam nie wjeżdzamy.
komentarz 15 lutego 2022 przez VBService Ekspert (253,340 p.)
edycja 15 lutego 2022 przez VBService

smiley

 

def route():
    while True:
        if left() > 100 and right() > 100 and front() > 100:
            break
              
        if front() <= 100:             
            if right() <= 100:
                turnL()
            else:
                turnR()
        else:
            move()
                

 

 

P.S 

Zaloguj lub zarejestruj się, aby odpowiedzieć na to pytanie.

Podobne pytania

0 głosów
2 odpowiedzi 428 wizyt
pytanie zadane 27 maja 2023 w Python przez agantka Nowicjusz (150 p.)
0 głosów
0 odpowiedzi 128 wizyt
pytanie zadane 9 maja 2022 w Python przez mewtwo Użytkownik (830 p.)
0 głosów
2 odpowiedzi 556 wizyt
pytanie zadane 14 kwietnia 2022 w Python przez mewtwo Użytkownik (830 p.)

92,576 zapytań

141,426 odpowiedzi

319,651 komentarzy

61,961 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...