Skip to content

Commit f749094

Browse files
committed
Nowa struktura katalogów, dodano autogenerowane checklisty
1 parent f4e8957 commit f749094

File tree

337 files changed

+1235
-71
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

337 files changed

+1235
-71
lines changed

.github/workflows/checklist.yml

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
name: Aktualizacja checklisty
2+
3+
on:
4+
push:
5+
branches: ["main"]
6+
7+
permissions:
8+
contents: write
9+
jobs:
10+
build:
11+
runs-on: ubuntu-latest
12+
steps:
13+
- name: Checkoutuj repo
14+
uses: actions/checkout@v4
15+
with:
16+
fetch-depth: 0
17+
ref: main
18+
- name: Zainstaluj Pythona
19+
uses: actions/setup-python@v5
20+
with:
21+
python-version: "3.11"
22+
23+
- name: Generuj checklistę
24+
run: python checklista/update_readme.py
25+
- name: Dodaj checklistę do ostatniego commita
26+
run: |
27+
git config user.name "github-actions[bot]"
28+
git config user.email "github-actions[bot]@users.noreply.github.com"
29+
git add README.md checklista/tasks.json
30+
# Amend the last commit and add the bot as a co-author
31+
git commit --amend --no-edit -m "$(git log -1 --pretty=%B)
32+
33+
Co-authored-by: GitHub Actions <github-actions[bot]@users.noreply.github.com>" || echo "No changes to commit"
34+
- name: Push changes
35+
uses: ad-m/[email protected]
36+
with:
37+
github_token: ${{ secrets.GITHUB_TOKEN }}
38+
branch: main
39+
force: true
40+

.gitignore

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,4 +33,3 @@
3333
*.in
3434
*.out
3535

36-
*.json

README.md

Lines changed: 119 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,4 +4,122 @@ Archiwum moich rozwiązań do zadań z Olimpiady Informatycznej.
44
Katalog `<edycja>/<etap>/<skrót zadania>` zawiera:
55
- `<skrót zadania>.cpp` moje rozwiązanie, które otrzymuje 100 pkt na testach na sio2/szkopule.
66
- `<skrót zadania><liczba punktów>.cpp` moje rozwiązania z olimpiady, które dostały mniej niż 100 punktów na zawodach.
7-
- Katalog `virtual contest/`, zawierający moje skrypty, generatorki, czekerki i różne podejścia do zadania w przypadku, gdy symulowałem ograniczenia czasu i widoczności werdyktów występujące na olimpiadzie, tzn. w przypadku etapów I i II olimpiady, nie mogłem poznać liczby punktów, które dostanie moje zadanie na sprawdzarce szkopuł. Testowałem rozwiązanie lokalnie, i wysyłałem dopiero po przetestowaniu. Rozwiązania zadań z III etapu mogłem wysłać do 10 rozwiązań na szkopuła poznając ich wynik.
7+
- Katalog `virtual contest/`, zawierający moje skrypty, generatorki, czekerki i różne podejścia do zadania w przypadku, gdy symulowałem ograniczenia czasu i widoczności werdyktów występujące na olimpiadzie, tzn. w przypadku etapów I i II olimpiady, nie mogłem poznać liczby punktów, które dostanie moje zadanie na sprawdzarce szkopuł. Testowałem rozwiązanie lokalnie, i wysyłałem dopiero po przetestowaniu. Rozwiązania zadań z III etapu mogłem wysłać do 10 rozwiązań na szkopuła poznając ich wynik.
8+
<!-- AUTO-CHECKLIST -->
9+
10+
> ⚠️ **UWAGA:** Sekcja poniżej jest generowana automatycznie.
11+
> Nie modyfikuj README poniżej tego napisu.
12+
> ✅ oznacza wykonane zadanie.
13+
> 🤔 oznacza zadanie z mniej niż 100 punktów.
14+
## Etap 1
15+
16+
Edycja | zad. 1 | zad. 2 | zad. 3 | zad. 4 | zad. 5 | zad. 6
17+
:--- | ---: | ---: | ---: | ---: | ---: | ---:
18+
I | pio ✅ | tro ✅ | | — | — | —
19+
II | jed ✅ | pal ✅ | | | — | —
20+
III | gon ✅ | | | | — | —
21+
IV | | | | | — | —
22+
V | wie ✅ | | | | — | —
23+
VI | | | | | — | —
24+
VII | bro ✅ | | | | — | —
25+
VIII | ant ✅ | | | | — | —
26+
IX | kol ✅ | kom ✅ | | | — | —
27+
X | | | | | | —
28+
XI | zaw ✅ | gra ✅ | | | | —
29+
XII | | | | | | —
30+
XIII | kra ✅ | okr ✅ | | | | —
31+
XIV | | | | | | —
32+
XV | pla ✅ | | | | | —
33+
XVI | | | | | | —
34+
XVII | kor ✅ | | | | | —
35+
XVIII | liz ✅ | | | | | —
36+
XIX | odl ✅ | | | | | —
37+
XX | | | | | | —
38+
XXI | kur ✅ | | | | | —
39+
XXII | kin ✅ | | | | | —
40+
XXIII | | | | | | —
41+
XXIV | fla ✅ | | | | | —
42+
XXV | pow ✅ | roz ✅ | pla ✅ | pra ✅ | pio ✅ | —
43+
XXVI | klu ✅ | par ✅ | rob ✅ | nie ✅ | pod ✅ | —
44+
XXVII | | | | | | —
45+
XXVIII | gan ✅ | | | | | —
46+
XXIX | | | | | | —
47+
XXX | | | | | | —
48+
XXXI | cza ✅ | | | | | —
49+
XXXII | spr ✅ | bit ✅ | zam ✅ | usu ✅ | wal ✅ | kas 🤔
50+
51+
52+
## Etap 2
53+
54+
Edycja | zad. próbne | Dzień 1 - zad. 1 | Dzień 1 - zad. 2 | Dzień 2 - zad. 1 | Dzień 2 - zad. 2
55+
:--- | ---: | ---: | ---: | ---: | ---:
56+
I | | prz ✅ | — | | —
57+
II | | tro ✅ | | |
58+
III | | | — | haz ✅ |
59+
IV | | | | |
60+
V | | row ✅ | | |
61+
VI | | lun ✅ | | |
62+
VII | | | | |
63+
VIII | | | | |
64+
IX | izo ✅ | dzi ✅ | | |
65+
X | | aut ✅ | | |
66+
XI | | | | |
67+
XII | | ban ✅ | | kos ✅ |
68+
XIII | | naj ✅ | | |
69+
XIV | | ska ✅ | | tet ✅ |
70+
XV | | | | |
71+
XVI | | | | arc ✅ |
72+
XVII | | cho ✅ | klo ✅ | |
73+
XVIII | | roz ✅ | | |
74+
XIX | | roz ✅ | okr ✅ | sza ✅ |
75+
XX | | luk ✅ | | mor ✅ |
76+
XXI | | prz ✅ | | pta ✅ |
77+
XXII | | pus ✅ | | |
78+
XXIII | | dro ✅ | zaj ✅ | |
79+
XXIV | | sum ✅ | | kon ✅ | zam ✅
80+
XXV | | kon ✅ | dro ✅ | tom ✅ | tel ✅
81+
XXVI | | kol ✅ | gwi ✅ | roz 🤔 | osi 🤔
82+
XXVII | | czw ✅ | | |
83+
XXVIII | | ple ✅ | | pla ✅ |
84+
XXIX | | | | kon ✅ |
85+
XXX | | | | |
86+
XXXI | | ryc ✅ | lic ✅ | |
87+
XXXII | sss ✅ | drz ✅ | | |
88+
89+
90+
## Etap 3
91+
92+
Edycja | Dzień próbny, zad. 1 | Dzień próbny, zad. 2 | Dzień 1 - zad. 1 | Dzień 1 - zad. 2 | Dzień 1 - zad. 3 | Dzień 2 - zad. 1 | Dzień 2 - zad. 2 | Dzień 2 - zad. 3
93+
:--- | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---:
94+
I | | — | | | | | | —
95+
II | | — | | | | sze ✅ | |
96+
III | | — | | | | | |
97+
IV | | — | kaj ✅ | tro ✅ | | rez ✅ | |
98+
V | | — | | | | | |
99+
VI | | — | mag ✅ | | | | |
100+
VII | | — | | | | pow ✅ | age ✅ |
101+
VIII | | — | | | | kop ✅ | |
102+
IX | min ✅ | — | | | | szy ✅ | |
103+
X | | — | | | | | |
104+
XI | | — | | | | | |
105+
XII | dzi ✅ | — | | | | aut ✅ | |
106+
XIII | | — | | | | zos ✅ | pal ✅ |
107+
XIV | | — | | | | klo ✅ | |
108+
XV | | — | kup ✅ | | | sta ✅ | |
109+
XVI | | — | | | | | |
110+
XVII | | — | zab ✅ | | | pil ✅ | |
111+
XVIII | | — | imp ✅ | | | met ✅ | pat ✅ |
112+
XIX | | — | | | | | |
113+
XX | | — | | | | gdz ✅ | |
114+
XXI | far ✅ | — | tur ✅ | | | pan ✅ | |
115+
XXII | | — | wil ✅ | | | kol ✅ | |
116+
XXIII | | — | zyw ✅ | | | | |
117+
XXIV | piz ✅ | — | zap ✅ | | | | |
118+
XXV | trz 🤔 | dwa ✅ | tur ✅ | kom ✅ | ogr ✅ | wie ✅ | tak ✅ | ddl ✅
119+
XXVI | | — | | | | dlu ✅ | |
120+
XXVII | — | — | | | — | | — | —
121+
XXVIII | | — | | | | | |
122+
XXIX | | | | | | | |
123+
XXX | | — | | | | | |
124+
XXXI | | — | | | | | |
125+
XXXII | | — | | | | | |

checklist/tabela.md

Lines changed: 0 additions & 34 deletions
This file was deleted.

checklist/gen_etap1_checklist.py renamed to checklista/gen_etap1_checklist.py

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ def zadania_edycja(edycja):
4646
wszystkie_edycje = range(1, max(v["edycja"] for v in data.values()) + 1)
4747

4848
# Przygotowujemy tabelę markdown
49-
header = ["edycja"] + [f"zadanie{i}" for i in range(1, 7)]
49+
header = ["Edycja"] + [f"zad. {i}" for i in range(1, 7)]
5050
# Pierwszy wiersz to nagłówek
5151
lines = [" | ".join(header)]
5252
# Drugi wiersz to wyrównanie: pierwszy do lewej, reszta do prawej
@@ -71,9 +71,5 @@ def zadania_edycja(edycja):
7171

7272
markdown = "\n".join(lines)
7373

74-
# Zapis do pliku
75-
with open("tabela.md", "w", encoding="utf-8") as f:
76-
f.write(markdown)
77-
7874
print(markdown)
7975

checklist/gen_etap2_checklist.py renamed to checklista/gen_etap2_checklist.py

Lines changed: 9 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -43,17 +43,19 @@ def zadania_edycja(edycja):
4343
return [1, 2, 2]
4444

4545
# Dla numeru zadania zwraca parę (dzień, numer zadania w dniu)
46-
def ktory_dzien(numer):
47-
# 0 -> 1, 1 -> 1, 2 -=> 2, 3 -> 1, 4 -> 2
48-
if numer == 0:
49-
return 0, 1
50-
return (numer + 1) // 2, (numer - 1) % 2 + 1
46+
ktory_dzien = {
47+
0: (0, 1),
48+
1: (1, 1),
49+
2: (1, 2),
50+
3: (2, 1),
51+
4: (2, 2),
52+
}
5153

5254
# Znajdź wszystkie edycje
5355
wszystkie_edycje = range(1, max(v["edycja"] for v in data.values()) + 1)
5456

5557
# Przygotowujemy tabelę markdown
56-
header = ["edycja", "próbne", "Dzień 1 - zad. 1", "Dzień 1 - zad. 2", "Dzień 2 - zad. 1", "Dzień 2 - zad. 2"]
58+
header = ["Edycja", "zad. próbne", "Dzień 1 - zad. 1", "Dzień 1 - zad. 2", "Dzień 2 - zad. 1", "Dzień 2 - zad. 2"]
5759
# Pierwszy wiersz to nagłówek
5860
lines = [" | ".join(header)]
5961
# Drugi wiersz to wyrównanie: pierwszy do lewej, reszta do prawej
@@ -65,7 +67,7 @@ def ktory_dzien(numer):
6567

6668
i = 0
6769
for col in range(5):
68-
dzien, ktore = ktory_dzien(col)
70+
dzien, ktore = ktory_dzien[col]
6971
if i < len(zadania):
7072
zad = zadania[i]
7173
if zad["dzien"] == dzien:
@@ -87,9 +89,5 @@ def ktory_dzien(numer):
8789

8890
markdown = "\n".join(lines)
8991

90-
# Zapis do pliku
91-
with open("tabela.md", "w", encoding="utf-8") as f:
92-
f.write(markdown)
93-
9492
print(markdown)
9593

checklist/gen_etap3_checklist.py renamed to checklista/gen_etap3_checklist.py

Lines changed: 12 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -61,19 +61,22 @@ def zadania_edycja(edycja):
6161

6262

6363
# Dla numeru zadania zwraca parę (dzień, numer zadania w dniu)
64-
def ktory_dzien(numer):
65-
# 0 -> 1, 1 -> 1, 2 -=> 2, 3 -> 1, 4 -> 2
66-
if numer < 2:
67-
return 0, numer + 1
68-
if numer < 6:
69-
return 1, numer - 3
70-
return 2, numer - 5
64+
ktory_dzien = {
65+
0: (0, 1),
66+
1: (0, 2),
67+
2: (1, 1),
68+
3: (1, 2),
69+
4: (1, 3),
70+
5: (2, 1),
71+
6: (2, 2),
72+
7: (2, 3),
73+
}
7174

7275
# Znajdź wszystkie edycje
7376
wszystkie_edycje = range(1, max(v["edycja"] for v in data.values()) + 1)
7477

7578
# Przygotowujemy tabelę markdown
76-
header = ["edycja", "Dzień próbny, zad. 1", "Dzień próbny, zad. 2", "Dzień 1 - zad. 1", "Dzień 1 - zad. 2", "Dzień 1 - zad. 3", "Dzień 2 - zad. 1", "Dzień 2 - zad. 2", "Dzień 2 - zad. 3"]
79+
header = ["Edycja", "Dzień próbny, zad. 1", "Dzień próbny, zad. 2", "Dzień 1 - zad. 1", "Dzień 1 - zad. 2", "Dzień 1 - zad. 3", "Dzień 2 - zad. 1", "Dzień 2 - zad. 2", "Dzień 2 - zad. 3"]
7780
# Pierwszy wiersz to nagłówek
7881
lines = [" | ".join(header)]
7982
# Drugi wiersz to wyrównanie: pierwszy do lewej, reszta do prawej
@@ -85,7 +88,7 @@ def ktory_dzien(numer):
8588

8689
i = 0
8790
for col in range(8):
88-
dzien, ktore = ktory_dzien(col)
91+
dzien, ktore = ktory_dzien[col]
8992
if i < len(zadania):
9093
zad = zadania[i]
9194
if zad["dzien"] == dzien:
@@ -107,9 +110,5 @@ def ktory_dzien(numer):
107110

108111
markdown = "\n".join(lines)
109112

110-
# Zapis do pliku
111-
with open("tabela.md", "w", encoding="utf-8") as f:
112-
f.write(markdown)
113-
114113
print(markdown)
115114

checklist/gen_json.py renamed to checklista/gen_json.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ def extract_points(filename: str):
3030

3131
tasks = {}
3232

33-
for oi_dir, edycja in [("../" + edycja, i+1) for i, edycja in enumerate(oi)]:
33+
for oi_dir, edycja in [("../rozwiazania/" + edycja, i+1) for i, edycja in enumerate(oi)]:
3434
if not os.path.isdir(oi_dir):
3535
continue
3636

@@ -60,7 +60,7 @@ def extract_points(filename: str):
6060
max_points = punkty
6161

6262
if max_points is not None:
63-
key = f"{oi_dir}_{etap}_{dzien}_{task_dir}"
63+
key = f"{oi[edycja-1]}_{etap}_{dzien}_{task_dir}"
6464
tasks[key] = {
6565
"edycja": edycja,
6666
"etap": int(re.search(r"\d+", etap).group()),
@@ -86,7 +86,7 @@ def extract_points(filename: str):
8686
max_points = punkty
8787

8888
if max_points is not None:
89-
key = f"{oi_dir}_{etap}_{task_dir}"
89+
key = f"{oi[edycja-1]}_{etap}_{task_dir}"
9090
tasks[key] = {
9191
"edycja": edycja,
9292
"etap": int(re.search(r"\d+", etap).group()),

0 commit comments

Comments
 (0)