Created
January 16, 2023 18:07
-
-
Save thevops/6466e2aa3955cbe1adc5179e584f5f9e to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| # dla testów | |
| # ta część kodu nadpisuje wbudwaną funkcję input() | |
| # i podaje programowi dane udając użytkownika | |
| # ten fragment wystarczy zakomentować | |
| # i program wróci do normalnego trybu działa | |
| # czyli będzie pytał użytkownika o parametry | |
| def input_values(): | |
| a = [ | |
| '6 5 14', | |
| '1 3 1', | |
| '5 1 5', | |
| '2 3 2', | |
| '3 4 1', | |
| '3 5 3', | |
| 'Z 1 1', | |
| 'Z 1 2', | |
| 'P', | |
| 'P', | |
| 'D', | |
| 'D', | |
| 'P', | |
| 'Z 3 5', | |
| 'P', | |
| 'Z 3 5', | |
| 'D', | |
| 'Z 3 5', | |
| 'L', | |
| 'Z 3 5' | |
| ] | |
| for i in a: | |
| yield i | |
| g = input_values() | |
| def input(text): | |
| return g.__next__() | |
| ##################################### | |
| def graj(mapa, lista_polecen): | |
| glowa_w = 0 | |
| glowa_k = 0 | |
| snake_wk = [ | |
| [glowa_w, glowa_k] | |
| ] | |
| snake_c = [0] | |
| # wykonywanie poleceń | |
| for polecenie in lista_polecen: | |
| polecenie = polecenie.split() | |
| if polecenie[0] == "Z": | |
| wiersz = int(polecenie[1]) - 1 # -1 bo indeksujemy od zera | |
| kolumna = int(polecenie[2]) - 1 | |
| if [wiersz, kolumna] in snake_wk: | |
| i = snake_wk.index([wiersz, kolumna]) | |
| print("Wynik: ", snake_c[i]) | |
| else: | |
| print("Wynik: ", "-1") | |
| continue | |
| elif polecenie[0] == "G": | |
| glowa_w = glowa_w - 1 | |
| elif polecenie[0] == "D": | |
| glowa_w = glowa_w + 1 | |
| elif polecenie[0] == "L": | |
| glowa_k = glowa_k - 1 | |
| elif polecenie[0] == "P": | |
| glowa_k = glowa_k + 1 | |
| else: | |
| print("Błędne polecenie") | |
| exit(1) | |
| # wykonaj ruch | |
| # sprawdź czy na nowym miejscu jest przekąska | |
| if mapa[glowa_w][glowa_k] != ".": | |
| # jest przekąska - zjedz ją - przesun głowę na pozycję przekąski | |
| przekaska = mapa[glowa_w][glowa_k] | |
| snake_wk.append([glowa_w, glowa_k]) | |
| snake_c.append(przekaska) | |
| else: | |
| # nie ma nic - przesuń całego węża | |
| # weź wszystko oprócz ogona | |
| snake_wk = snake_wk[1:] | |
| # dodaj nową głowę | |
| snake_wk.append([glowa_w, glowa_k]) | |
| def main(): | |
| mpn = input("Podaj m p n: ") | |
| m = int(mpn.split()[0]) # wielkość planszy (liczba kolumn = liczba wierszy) | |
| p = int(mpn.split()[1]) # liczba przekąsek | |
| n = int(mpn.split()[2]) # liczba polecen | |
| # p - liczba wierszy | |
| # tablica 2d - współrzędne przekąski i jej kolor jako wartość | |
| # tablica wypełniona kropkami | |
| p_wkc = [['.' for k in range(p)] for w in range(p)] | |
| for i in range(p): | |
| _wkc = input("Podaj wspórzędne oraz kolor przekąski (w k c): ") | |
| w = int(_wkc.split()[0]) - 1 # -1 bo tablica jest indeksowana od zera | |
| k = int(_wkc.split()[1]) - 1 | |
| c = str(_wkc.split()[2]) | |
| p_wkc[w][k] = c | |
| # n - liczba polecen do obsłużenia | |
| n_polecenia = [] # lista stringów | |
| for i in range(n): | |
| _polecenie = input("Podaj polecenie: ") | |
| n_polecenia.append(_polecenie) | |
| # print wszystkiego | |
| print("mpn:", mpn) | |
| print("m", m) | |
| print("p", p) | |
| print("n", n) | |
| print("Mapa przekąsek: ") | |
| for i in range(p): | |
| print(p_wkc[i]) | |
| print("Lista poleceń: ") | |
| for i in range(n): | |
| print(n_polecenia[i]) | |
| graj(p_wkc, n_polecenia) | |
| # start | |
| main() |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment