(ac) Botwars
Konkurs Programistyczny dla XII LO

Wskazówki techniczne

Znajdziesz tutaj kilka istotnych wskazówek, które pomogą Tobie właściwie przygotować, przetestować i zgłosić program do turnieju (ac) Botwars.

Jak przygotować program, który zgłosisz do turnieju?

Program powinien:
  • składać się z jednego pliku źródłowego (w trakcie wysyłania pliku, jego nazwa zostanie automatycznie zmieniona na nazwę składającą się z Twojego ID, daty i godziny wysłania pliku, np. 10_20201119120513.cpp lub 10_20201119120513.py),
  • czytać dane ze standardowego wejścia, zapisywać wynik na standardowe wyjście,
  • kończyć działanie kodem wyjścia 0 – każdy inny kod zakończenia programu jest równoważny błędowi wykonania.
Program może:
  • korzystać z biblioteki standardowej (STL),
  • być napisany w standardzie C++17.
  • być napisany w języku Python
Program nie może:
  • otwierać jakichkolwiek plików (w szczególności zabronione jest tworzenie plików tymczasowych),
  • oczekiwać na interakcję użytkownika,
  • korzystać z zewnętrznych bibliotek (oprócz dozwolonych bibliotek dla C++).
Programy napisane w języku C++:
  • nie powinny używać plików nagłówkowych typowych dla środowiska DOS/Windows, np. conio.h czy windows.h,
  • nie powinny używać niestandardowych argumentów do funkcji printf, takich jak %D czy %F.

Jak przygotować wersję wykonywalną mojego bota dla środowiska testowego?

C++
Twój program będziemy kompilować przy pomocy kompilatora g++ w wersji 8.1.0 lub wyższej.
Wersję kompilatora sprawdzisz parametrem --version:

g++ --version
Polecenie kompilacji:
g++ -O3 -std=c++17 -static twoj_bot.cpp -o twoj_bot.exe
Jeżeli Twój system nie wie, gdzie znajduje się kompilator g++, musisz podać pełną ścieżkę jego położenia.

Python
Programy napisane w języky Python będziemy uruchamiać w środowisku Python 3.8.x.

python --version
Polecenie uruchamiania programu:
python twoj_bot.py

C++: Jak zrobić to w Code::Blocks?

Jeżeli używasz środowiska Code::Blocks, zanim zbudujesz plik wykonywalny swojego programu, musisz włączyć odpowiednie przełączniki kompilatora:
CB1
CB2
Jeżeli nie widzisz u siebie flagi dot. C++17 ISO (-std=c++17), możesz to pominąć, bądź zaznaczyć flagę dla standardu C++14 ISO.

Teraz możesz zbudować program (CTRL+F9).
W folderze swojego projektu nazwa_projektu -> bin -> Release znajdziesz wersję wykonywalną swojego programu.

Tak przygotowany program możesz skopiować do folderu ze środowiskiem testowym i rozpocząć testowanie działania swojego bota.

Czytanie ze standardowego wejścia i zapisywanie na standardowe wyjście

Program zgłoszony do konkursu powinien czytać dane ze standardowego wejścia i zapisywać dane na standardowe wyjście. Oznacza to, że jeżeli zwyczajnie uruchomisz swój program, to będzie on dane czytał z klawaitury, a wyniki wyświetlał na ekranie.

Przykład 1

Wersja w stylu C++ z wykorzystaniem strumieni (cin i cout). Wczytamy i wyświetlimy pojedynczą liczbę.

std_we_wy

Wersja w stylu C (scanf i printf). Wczytamy i wyświetlimy pojedynczą liczbę całkowitą (%d).

std_we_wy

Przekierowanie standardowego wejści i wyjścia.

Standardowe wejście i wyjście możemy przekierować, co pozwala wczytywać do naszego programu dane z pliku tekstowego (zamiast klawiatury) oraz dane wyjściowe zapisać do pliku (zamiast na ekran).

Poniżej kilka poleceń realizujących to:

Załóżmy, że projekt powyższego programu nazywa się moj_bot i zapisaliśmy go w folderze C:\Botwars\moj_bot\bin\Release (lub w ...\Debug - w zależności od ustawień w Code::Blocks).

  1. Kompilujemy i budujemy program (w Code::Blocks jest to opcja Build - CTRL+F9) - otrzymujemy moj_bot.exe (dla środowiska Windows).
  2. W folderze z programem moj_bot.exe tworzymy plik tekstowy o nazwie wejscie.txt i zapisujemy w nim jakąś liczbę całkowitą, np. 753
    Ważne: nie stawiamy żadnych spacji, tabulacji, itp.
    plik_txt_wejscie
  3. Uruchamiamy 'Wiersz polecenia' i wchodzimy do folderu z naszym programem moj_bot.exe i wykonujemy polecenia jak na ekranie niżej:
    test_we_wy
    Jeżeli wynik działania programu chcesz zapisać do pliku a nie na standardowe wyjście, użyj polecenia: test_we_wy
    W folderze z programem moj_bot.exe powstanie plik wyjscie.txt, do którego przekierowane zostało wyjście z programu i tym samym zapisany został wynik działania programu.

Przykład 2
Wczytujemy wiersz z trzema liczbami oddzielonymi spacjami.

Załóżmy, że nasz poprzedni program (moj_bot) teraz wygląda tak:

std_we_wy
  1. Kompilujemy i budujemy nasz program. W folderze jak wyżej pojawi się nowy moj_bot.exe.
  2. Do pliku wejscie.txt zapisujemy wiersz z danymi:
    plik_txt_wejscie
  3. W 'Wierszu polecenia' wykonujemy takie samo polecenie jak poprzednio:
    test_we_wy

Wskazówka dot. zadania turniejowego:
Standardowe wyjście jest przechwytywane przez środowisko testowe dlatego ważne jest, aby na wyjściu przekazywać dane dokładnie w takiej postaci, jak podano w opisie zadania turniejowego.

Podpisanie swojego programu zgłoszonego do konkursu.

Programy wysyłane z tej strony, są automatycznie przypisywane osobie, która zgłasza program.
Dobrą praktyką i zaleceniem jest jednak, aby każdy wysłany plik z programem zawierał na początku, w komentarzu, dane wysyłającego.

Przykładowo:
podpis