online compiler and debugger for c/c++

code. compile. run. debug. share.
Source Code   
Language
from task1 import task1 from task2 import task2 from task3 import task3 # funkcja wczytująca dane z podanego pliku def load_data(filename): # zmienna, która przechowa nam wynik # będzie to tablica plansz result = [] # zmienna, która przechowa nam aktualną planszę (tablica stringów) board = [] # otwieramy plik # konstrukcja `with` zadba o to, żebyśmy nie musieli pamiętać o zamknięciu pliku with open(filename, "r") as f: # iterujemy po kolejnych liniach pliku for line in f: # usuwamy znaki białe line = line.strip() # sprawdzamy czy linia nie jest pusta if line: # dodajemy linię do planszy board.append(line) else: # jeśli linia jest pusta, to dodajemy planszę do wyniku result.append(board) # samą planszę zerujemy board = [] # dodajemy ostatnią planszę do wyniku, jeśli jest niepusta if len(board) > 0: result.append(board) # zwracamy wynik return result # funkcja zapisująca wynik zadania def save_result(result, name): # otwieramy plik do zapisu # parametr 'w' spowoduje nadpisanie istniejącego pliku with open(f"{name}.txt", "w") as f: # zapisujemy wynik f.write(result) # dodatkowo wypiszmy go też w konsoli print(result) sample_data = load_data('szachy_przyklad.txt') real_data = load_data('szachy.txt') print('Zadanie 1.1, przykładowe dane') print(task1(sample_data)) print('Zadanie 1.1, prawdziwe dane') save_result(task1(real_data), 'zadanie1_1') print('Zadanie 1.2, przykładowe dane') print(task2(sample_data)) print('Zadanie 1.2, prawdziwe dane') save_result(task2(real_data), 'zadanie1_2') print('Zadanie 1.3, przykładowe dane') print(task3(sample_data)) print('Zadanie 1.3, prawdziwe dane') save_result(task3(real_data), 'zadanie1_3')
# zadanie 1.1 def task1(data): # zmienna przechowująca liczbę plansz z pustymi kolumnami count = 0 # zmienna z max liczbą pustych kolumn max_cols = 0 # iterujemy po kolei po planszach for board in data: # zmienna przechowująca liczbę pustych kolumn empty = 0 # iterujemy po kolei po 8 kolumnach for col_index in range(8): # zmienna przechowująca, czy kolumna jest pusta is_empty = True # iterujemy po kolei po 8 wierszach kolumny for row_index in range(8): # sprawdzamy, czy w danej pozycji jest inny znak niż '.' if board[row_index][col_index] != ".": # jeśli tak, to zmieniamy zmienną na False is_empty = False # i przerywamy pętlę break # jeśli kolumna była pusta if is_empty: # zwiększamy liczbę pustych kolumn empty += 1 # jeśli była przynajmniej jedna pusta kolumna if empty > 0: # zwiększamy liczbę plansz z pustymi kolumnami count += 1 # jeśli liczba pustych kolumn jest większa od poprzedniej # to przypisujemy ją do max_cols max_cols = max(max_cols, empty) # zwracamy rezultat zadania return f"{count} {max_cols}"
# zadanie 1.2 def task2(data): # zmienna przechowująca liczbę plansz w równowadze count = 0 # zmienna z min liczbą bierek min_stones = 9999 # iterujemy po kolei po planszach for board in data: # zmienna ze słownikiem zliczającym bierki danego rodzaju # dla ułatwienia zliczajmy też liczbę pustych pól symbols = { 'K': 0, 'k': 0, 'W': 0, 'w': 0, 'S': 0, 's': 0, 'H': 0, 'h': 0, 'G': 0, 'g': 0, 'P': 0, 'p': 0, '.': 0, } # iterujemy po kolei po wierszach for row in board: # iterujemy po kolei po znakach for char in row: # zwiększamy liczbę symbols[char] += 1 # sprawdźmy czy jest stan równowagi # zróbmy to w najprostszy możliwy sposób if (symbols['K'] == symbols['k'] and symbols['W'] == symbols['w'] and symbols['S'] == symbols['s'] and symbols['H'] == symbols['h'] and symbols['G'] == symbols['g'] and symbols['P'] == symbols['p']): # jeśli tak, to zwiększamy liczbę plansz w równowadze count += 1 # i sprawdzamy czy liczba bierek jest mniejsza od poprzedniej # wykorzystajmy fakt, że plansza ma 64 pola (8*8) i znamy liczbę pustych pól min_stones = min(min_stones, 64 - symbols['.']) # zwracamy rezultat zadania return f"{count} {min_stones}"
# funkcja pomocnicza do zadania 1.3 # znajduje pozycje, na których znajduje się wskazany znak def find_char(board, char): # zmienna przechowująca pozycje result = [] # iterujemy po kolei po wierszach for row_index in range(8): # iterujemy po kolei po znakach for col_index in range(8): # jeśli na danej pozycji jest wskazany znak, zapisujemy go if board[row_index][col_index] == char: result.append((row_index, col_index)) # zwracamy wynik return result # funkcja pomocnicza do zadania 1.3 # sprawdza czy jest pusta ścieżka poziomo do wskazanego znaku # wersja z przejściem w prawo def is_horizontal_right(board, row, col, char): # iterujemy po kolei po wskazanym wierszu od zadanej pozycji for col_index in range(col + 1, 8): # pobieramy aktualny znak do zmiennej current_char = board[row][col_index] # jeśli trafiliśmy na szukamy znak, to zwracamy True if current_char == char: return True # jeśli trafiliśmy na znak inny niż pusty to zwracamy False elif current_char != ".": return False # jak doszliśmy do końca nie znajdując znaku, również zwracamy False return False # funkcja pomocnicza do zadania 1.3 # sprawdza czy jest pusta ścieżka poziomo do wskazanego znaku # wersja z przejściem w lewo def is_horizontal_left(board, row, col, char): # iterujemy po kolei po wskazanym wierszu od zadanej pozycji # reversed() aby iterować od aktualnej pozycji do zera for col_index in reversed(range(col)): # pobieramy aktualny znak do zmiennej current_char = board[row][col_index] # jeśli trafiliśmy na szukamy znak, to zwracamy True if current_char == char: return True # jeśli trafiliśmy na znak inny niż pusty to zwracamy False elif current_char != ".": return False # jak doszliśmy do końca nie znajdując znaku, również zwracamy False return False # funkcja pomocnicza do zadania 1.3 # sprawdza czy jest pusta ścieżka pionowo do wskazanego znaku # wersja z przejściem w dół def is_vertical_down(board, row, col, char): # iterujemy po kolei po wskazanym wierszu od zadanej pozycji for row_index in range(row + 1, 8): # pobieramy aktualny znak do zmiennej current_char = board[row_index][col] # jeśli trafiliśmy na szukamy znak, to zwracamy True if current_char == char: return True # jeśli trafiliśmy na znak inny niż pusty to zwracamy False elif current_char != ".": return False # jak doszliśmy do końca nie znajdując znaku, również zwracamy False return False # funkcja pomocnicza do zadania 1.3 # sprawdza czy jest pusta ścieżka pionowo do wskazanego znaku # wersja z przejściem w górę def is_vertical_up(board, row, col, char): # iterujemy po kolei po wskazanym wierszu od zadanej pozycji # reversed() aby iterować od aktualnej pozycji do zera for row_index in reversed(range(row)): # pobieramy aktualny znak do zmiennej current_char = board[row_index][col] # jeśli trafiliśmy na szukamy znak, to zwracamy True if current_char == char: return True # jeśli trafiliśmy na znak inny niż pusty to zwracamy False elif current_char != ".": return False # jak doszliśmy do końca nie znajdując znaku, również zwracamy False return False # zadanie 1.3 def task3(data): # liczba plansz z szachem białej wieży white = 0 # liczba plansz z szachem czarnej wieży black = 0 # iterujemy po kolei po planszach for board in data: # pobierzmy pozycje wież white_pos = find_char(board, 'W') black_pos = find_char(board, 'w') # sprawdźmy najpierw czy któraś biała wieża szachuje for (row, col) in white_pos: # sprawdzamy czy szachuje poziomo lub pionowo if (is_horizontal_right(board, row, col, 'k') or is_horizontal_left(board, row, col, 'k') or is_vertical_down(board, row, col, 'k') or is_vertical_up(board, row, col, 'k')): # jeśli tak, zwiększamy zmienną o 1 white += 1 # powtarzamy to samo dla czarnych wież for (row, col) in black_pos: # sprawdzamy czy szachuje poziomo lub pionowo if (is_horizontal_right(board, row, col, 'K') or is_horizontal_left(board, row, col, 'K') or is_vertical_down(board, row, col, 'K') or is_vertical_up(board, row, col, 'K')): # jeśli tak, zwiększamy zmienną o 1 black += 1 # zwracamy rezultat zadania return f"{white} {black}"
k....... .w...s.. ........ ...pp... ...PP... ..S..... ......W. .......K k....... .w...s.. ........ ...pP... ....P... ..S..... ......W. .......K k....... .w...s.. ........ ....P... ....p... ..S..... ......W. .......K k....... .w...s.. ........ ....P... ....S... ........ ......W. .......K k....... .w...... ........ ....s... ....S... ........ ......W. .......K k.....W. .w...... ........ ....s... ....S... ........ ........ .......K kw....W. ........ ........ ....s... ....S... ........ ........ .......K kW...... ........ ........ ....s... ....S... ........ ........ .......K .k...... ........ ........ ....s... ....S... ........ ........ .......K
wsghkgsw pppppppp ........ ........ ....P... ........ PPPP.PPP WSGHKGSW wsghkgsw pp.ppppp ..p..... ........ ....P... ........ PPPP.PPP WSGHKGSW wsghkgsw pp.ppppp ..p..... ........ ...PP... ........ PPP..PPP WSGHKGSW wsghkgsw pp..pppp ..p..... ...p.... ...PP... ........ PPP..PPP WSGHKGSW wsghkgsw pp..pppp ..p..... ...p.... ...PP... ..S..... PPP..PPP W.GHKGSW wsghkgsw pp..pppp ..p..... ........ ...Pp... ..S..... PPP..PPP W.GHKGSW wsghkgsw pp..pppp ..p..... ........ ...PS... ........ PPP..PPP W.GHKGSW wsghkg.w pp..pppp ..p..s.. ........ ...PS... ........ PPP..PPP W.GHKGSW wsghkg.w pp..pppp ..p..S.. ........ ...P.... ........ PPP..PPP W.GHKGSW wsghkg.w pp...ppp ..p..p.. ........ ...P.... ........ PPP..PPP W.GHKGSW wsghkg.w pp...ppp ..p..p.. ........ ...P.... ..P..... PP...PPP W.GHKGSW wsghk..w pp...ppp ..pg.p.. ........ ...P.... ..P..... PP...PPP W.GHKGSW wsghk..w pp...ppp ..pg.p.. ........ ...P.... ..PG.... PP...PPP W.GHK.SW wsgh.wk. pp...ppp ..pg.p.. ........ ...P.... ..PG.... PP...PPP W.GHK.SW wsgh.wk. pp...ppp ..pg.p.. ........ ...P.... ..PG.... PPH..PPP W.G.K.SW wsghw.k. pp...ppp ..pg.p.. ........ ...P.... ..PG.... PPH..PPP W.G.K.SW wsghw.k. pp...ppp ..pg.p.. ........ ...P.... ..PG.... PPH.SPPP W.G.K..W wsghw.k. pp...pp. ..pg.p.. .......p ...P.... ..PG.... PPH.SPPP W.G.K..W wsghw.k. pp...pp. ..pg.p.. .......p ...P.... ..PGG... PPH.SPPP W...K..W w.ghw.k. pp.s.pp. ..pg.p.. .......p ...P.... ..PGG... PPH.SPPP W...K..W w.ghw.k. pp.s.pp. ..pg.p.. .......p ...P.... ..PGG... PPH.SPPP ..KW...W w.ghw.k. p..s.pp. ..pg.p.. .p.....p ...P.... ..PGG... PPH.SPPP ..KW...W w.ghw.k. p..s.pp. ..pg.p.. .p.P...p ........ ..PGG... PPH.SPPP ..KW...W w.ghw.k. p..s.pp. ...g.p.. .ppP...p ........ ..PGG... PPH.SPPP ..KW...W w.ghw.k. p..s.pp. ...g.p.. .GpP...p ........ ..P.G... PPH.SPPP ..KW...W .wghw.k. p..s.pp. ...g.p.. .GpP...p ........ ..P.G... PPH.SPPP ..KW...W .wghw.k. p..s.pp. ...g.p.. .GpP...p ..P..... ....G... PPH.SPPP ..KW...W .wghw.k. ...s.pp. p..g.p.. .GpP...p ..P..... ....G... PPH.SPPP ..KW...W .wghw.k. ...s.pp. p..g.p.. ..pP...p G.P..... ....G... PPH.SPPP ..KW...W .wgh..k. ...swpp. p..g.p.. ..pP...p G.P..... ....G... PPH.SPPP ..KW...W .wgh..k. ...swpp. p..g.p.. ..pP...p G.P..... ....G.S. PPH..PPP ..KW...W .wgh..k. ....wpp. p..g.p.. ..pPs..p G.P..... ....G.S. PPH..PPP ..KW...W .wgh..k. ....wpp. p..g.p.. ..pPs..p G.P.S... ....G... PPH..PPP ..KW...W .wgh..k. .w...pp. p..g.p.. ..pPs..p G.P.S... ....G... PPH..PPP ..KW...W .wgh..k. .w...pp. p..g.p.. ..pPs..p G.P.S... .P..G... P.H..PPP ..KW...W .wgh..k. .....pp. p..g.p.. ..pPs..p GwP.S... .P..G... P.H..PPP ..KW...W .wgh..k. .....pp. p..g.p.. ..pPs..p GwP.S... .P...... P.HG.PPP ..KW...W .wgh..k. .....pp. p..g.p.. ..pPs..p w.P.S... .P...... P.HG.PPP ..KW...W .wgh..k. .....pp. p..g.p.. ..pPs..p P.P.S... ........ P.HG.PPP ..KW...W .w.h..k. .....pp. p..g.p.. ..pPsg.p P.P.S... ........ P.HG.PPP ..KW...W .w.h..k. .....pp. p..g.p.. ..pPsg.p P.P.S... ........ P.HG.PPP ..K.W..W .w.h..k. .....pp. p..g.p.. ..pPsg.. P.P.S..p ........ P.HG.PPP ..K.W..W .w.h..k. .....pp. p..g.p.. ..pPsg.. P.P.S..p .......P P.HG.PP. ..K.W..W .w.h..k. .....pp. p..g.ps. ..pP.g.. P.P.S..p .......P P.HG.PP. ..K.W..W .w.h..k. .....pp. p..g.ps. ..pP.g.. P.P.S..p ....W..P P.HG.PP. ..K....W .w.h..k. .....pp. p..g.p.. ..pP.g.. P.P.Ss.p ....W..P P.HG.PP. ..K....W .w.h..k. .....pp. p..g.p.. ..pP.g.. P.P.SsPp ....W..P P.HG.P.. ..K....W .w.h..k. .....pp. p..g.pg. ..pP.... P.P.SsPp ....W..P P.HG.P.. ..K....W .w.h..k. .....pp. p..g.pg. ..pP.... P.P.SsPp ....W..P P.HG.P.. ...K...W .w.h..k. .....pp. p..g..g. ..pP.p.. P.P.SsPp ....W..P P.HG.P.. ...K...W .w.h..k. .....pp. p..S..g. ..pP.p.. P.P..sPp ....W..P P.HG.P.. ...K...W .w....k. .....pp. p..h..g. ..pP.p.. P.P..sPp ....W..P P.HG.P.. ...K...W .w....k. .....pp. p..h..g. ..pP.P.. P.P..s.p ....W..P P.HG.P.. ...K...W .w....k. .....pp. p..h.... ..pP.P.g P.P..s.p ....W..P P.HG.P.. ...K...W .w....k. .....pp. p..h.... ..pP.P.g P.P..s.p ....WP.P P.HG.... ...K...W .w....k. .....pp. p....h.. ..pP.P.g P.P..s.p ....WP.P P.HG.... ...K...W .w....k. .....pp. p....h.. ..pP.P.g P.P..s.p ..G.WP.P P.H..... ...K...W .w....k. .....pp. p....... ..pP.Phg P.P..s.p ..G.WP.P P.H..... ...K...W .w....k. .....pp. p....... ..pP.Phg P.P.Hs.p ..G.WP.P P....... ...K...W .w....k. .....pp. p....... ..pP.P.g P.P.Hs.p ..G.WP.P P.....h. ...K...W .w....k. .....pp. p....... ..pP.P.g P.P.Hs.p ..G.WP.P P.....h. ...KW... .w....k. .....pp. p....... ..pP.P.g P.P.Hs.p ..G.WP.P h....... ...KW... .w....k. .....pp. p....... ..pP.P.g P.P..s.p ..G.WP.P h.H..... ...KW... .w....k. .....pp. p....... ..pP.P.g P.h..s.p ..G.WP.P ..H..... ...KW... .w..W.k. .....pp. p....... ..pP.P.g P.h..s.p ..G..P.P ..H..... ...KW... .w..W... .....ppk p....... ..pP.P.g P.h..s.p ..G..P.P ..H..... ...KW... .W...... .....ppk p....... ..pP.P.g P.h..s.p ..G..P.P ..H..... ...KW... .W...... .....ppk p....... ..ph.P.g P....s.p ..G..P.P ..H..... ...KW... .W...... .....ppk p....... ..ph.P.g P....s.p ..G..P.P ...H.... ...KW... .W...... .....ppk p....... ..ph.P.. P....s.p ..G..g.P ...H.... ...KW... .W...... .....ppk p....... ..ph.P.. P....s.p ..G..g.P ...H.... ..K.W... .W...... .....ppk p....... ..p..h.. P....s.p ..G..g.P ...H.... ..K.W... .W...... .....ppk p....... ..p..h.. P....s.p ..G.Wg.P ...H.... ..K..... .W...... .....ppk p....... ..p..h.. P......p ..G.Wg.P ...Hs... ..K..... .W...... .....ppk p....... ..p..h.. P......p ..G.Wg.P .K.Hs... ........ .W...... .....ppk p....... ..p..h.. P......p ..s.Wg.P .K.H.... ........ .W...... .....ppk p....... ..p..h.. P......p ..H.Wg.P .K...... ........ .W...... .....ppk p....... ..p..... P....h.p ..H.Wg.P .K...... ........ .W...... .....ppk p....... ..p..... P....h.p ...HWg.P .K...... ........ .W...... ......pk p....... ..p..p.. P....h.p ...HWg.P .K...... ........ .....W.. ......pk p....... ..p..p.. P....h.p ...HWg.P .K...... ........ .....W.. ......pk p....... ..p..p.. Ph.....p ...HWg.P .K...... ........ .....W.. ......pk p....... ..p..p.. Ph.....p ...HWg.P ........ ..K..... .....W.. ......pk p....... ..p..p.. Ph..g..p ...HW..P ........ ..K..... .....W.. ......pk p....... ..p..p.. Ph..g..p .H..W..P ........ ..K..... .....W.. ......pk p....... ..p..p.. P..hg..p .H..W..P ........ ..K..... .....W.. ......pk p....... ..p..p.. P..hg..p ..H.W..P ........ ..K..... .....W.. ......pk p..h.... ..p..p.. P...g..p ..H.W..P ........ ..K..... ........ .....Wpk p..h.... ..p..p.. P...g..p ..H.W..P ........ ..K..... ........ .....Wpk p.....h. ..p..p.. P...g..p ..H.W..P ........ ..K..... ........ ...W..pk p.....h. ..p..p.. P...g..p ..H.W..P ........ ..K..... ........ ...W..pk p....... ..p..p.. P...g..p ..H.W..P ........ ..K...h. ........ ...W..pk p....... ..p..p.. P...g..p ..H.W..P .K...... ......h. ........ ...W..pk p....... .....p.. P.p.g..p ..H.W..P .K...... ......h. ........ ...W..pk p....... .....p.. P.p.W..p ..H....P .K...... ......h. ........ ...W..pk p....... ........ P.p.p..p ..H....P .K...... ......h. ........ ......pk p....... ........ P.pWp..p ..H....P .K...... ......h. ........ ......pk p....... ........ P.pWp..p ..H....P .K...h.. ........ ........ ......pk p....... ........ P.pWp..p .......P .K.H.h.. ........ ........ ......pk p....... ........ P..Wp..p ..p....P .K.H.h.. ........ ........ ......pk p....... ........ P..Wp..p ..K....P ...H.h.. ........ ........ ......pk p....... ........ P..Wp..p ..K...hP ...H.... ........ ........ ......pk p....... ........ P..Wp..p ......hP .K.H.... ........ ........ ......pk p....... ........ P..Wp..p .......h .K.H.... ........ ........ ......pk p....... ........ P...W..p .......h .K.H.... ........ ........ ......pk p....... ........ P...W..p ......h. .K.H.... ........ ........ ......pk p....... ........ P..HW..p ......h. .K...... ........ ........ ......pk p....... ........ P..HW..p ........ .K....h. ........ ........ ......pk p....... ........ P..HW..p ..K..... ......h. ........ ........ ......pk p....... ........ P..HW..p ..K..h.. ........ ........ ........ ......pk p....... ........ PK.HW..p .....h.. ........ ........ .....h.. ......pk p....... ........ PK.HW..p ........ ........ ........ .....h.. ......pk p....... K....... P..HW..p ........ ........ ........ ........ ......pk p....... K....h.. P..HW..p ........ ........ ........ ........ ......pk K....... .....h.. P..HW..p ........ ........ ........ ........ .......k K....... .....hp. P..HW..p ........ ........ ........ ........ .......k K....... P....hp. ...HW..p ........ ........ ........ ........ .......k K....... P....hp. ...HW... .......p ........ ........ ........ ....W..k K....... P....hp. ...H.... .......p ........ ........ ........ ....W... K.....k. P....hp. ...H.... .......p ........ ........ ........ ....W.H. K.....k. P....hp. ........ .......p ........ ........ ........ ....W.H. K....... P....hpk ........ .......p ........ ........ ........ ....W..H K....... P....hpk ........ .......p ........ ........ ........ ....W..H K....... P....hp. ......k. .......p ........ ........ ........ .......H K....... P....hp. ....W.k. .......p ........ ........
36 3
22 28
3 1

Compiling Program...

Command line arguments:
Standard Input: Interactive Console Text
×

                

                

Program is not being debugged. Click "Debug" button to start program in debug mode.

#FunctionFile:Line
VariableValue
RegisterValue
ExpressionValue