OR-tools

Niedawno xpil wrzucił zagadkę dotyczącą rozmieszczenia liczb na wierzchołkach dwunastościanu foremnego. Nieco rozochocony zeszłorocznym Advent of Code (który w znacznym stopniu odpuściłem, za wiele srok) stwierdziłem, że „to się zaprogramuje”.

Suma liczb na każdym boku była dość spora, ale istniało ograniczenie w postaci wymogu, że muszą być liczbami pierwszymi, więc może nie będzie tak źle? No bo na ile sposobów można wybrać pięć liczb z nieco ponad trzystu tak, by suma dawała określoną wartość? Otóż niestety na wiele i po wstępnej przymiarce wiedziałem, że brnę w ślepą uliczkę.

Przypomniałem sobie o Z3 solver, które bywa wykorzystywane w CTFach do rozwiązywania zadań i wyglądało trochę na szwajcarski scyzoryk. Tyle, że nie znam tego rozwiązania – nigdy nie znalazłem czasu, by się nauczyć. Ale od czego mamy AI? Porozmawiam z chatem, na pewno pomoże.

Rozmowę zacząłem jednak od problemu ogólnego, trochę licząc, że jest jakiś wyjątkowa właściwość lub algorytm dla tego dwunastościanu. Gdy poprosiłem o kod w Pythonie, ku mojemu zdziwieniu zaproponował rozwiązanie z użyciem nie Z3, tylko OR-tools. Zerknąłem i okazuje się, że Microsoft zrobił Z3, a Google zrobiło coś może mniej uniwersalnego, ale podobno szybszego, przeznaczonego do optymalizacji.

Przyznaję, że OR-tools robi dobre wrażenie. Podobnie jak Z3 nie jest proste i intuicyjne, ale po krótkiej chwili walki z chatGPT udało się złożyć program, który znalazł rozwiązanie. W bardzo krótkim czasie, rzędu kilkunastu sekund. Co ciekawe, algorytm jest niedeterministyczny. Rozwiązania nie podaję, bo jest na stronie z rozwiązaniem zagadki – na oko bardzo podobne. Jeśli komuś zależy to znajdę to co chatGPT zaproponował.

To teraz wypadałoby nauczyć się obu narzędzi, ale raczej nie znajdę na to czasu. Za to przynajmniej będę wiedział, że istnieją i co mniej więcej potrafią.

I ciekawostka. Wiecie co to jest „LUB-przykładowe narzędzia”? Jest to odpowiednik „OR-Tools Examples” w tłumaczeniu na oficjalnej stronie Google. To tak dla ustalenia, gdzie jesteśmy z automatycznymi tłumaczeniami. Chciałem napisać, „z AI”, ale chyba nie było tam wykorzystane – Gemini tłumaczy znacznie lepiej i całkiem sensownie.

Bieganie i rower 2024 – podsumowanie

Pierwszy bieg 14 stycznia, czyli można powiedzieć, że biegam całorocznie. Dla przypomnienia, ostatni bieg w zeszłym roku to 17 grudnia. Niestety, później dłuższa przerwa, bo aż do początku kwietnia. I zmiana trasy. Niestety nowa jest okrążeniem, które łącznie z dobiegiem i „odbiegiem” ma ok. 4,7 km. Co prawda już w lipcu zrobiłem przymiarkę do dwóch okrążeń, co łącznie dało ok. 7,7 km, ale… trochę za dużo, szczególnie w upale. Trochę nieelastycznie, szczególnie w niesprzyjających warunkach. Nie utrzymało się i w sierpniu wróciłem do jednego okrążenia.

Bieganie 38 aktywności, 185 km, 17,5h w ruchu, czyli regres.

Gdybym miał wskazywać na przyczynę spadku to pewnie głównie zmiana trasy. Dłuższe dojście do miejsca w którym biegam kanibalizowało czas na aktywność. Brak elastyczności nie sprzyjały stopniowemu wydłużaniu trasy, co przełożyło się na finalny wynik. Dopiero w grudniu (15 grudnia, ostatni bieg) sprawdziłem inny wariant dobiegu, który pozwala na pewną elastyczność w wydłużaniu trasy. Myślę, że 5 do 5,5km się da wycisnąć z jednym okrążeniem, co pozwoli na dość płynny zakres 5-8 km.

W kwietniu uruchomiłem też rower, głównie komunikacyjnie, na krótkich dystansach. Było kilka dłuższych (ponad 20km) rekreacyjnych, ale rower skończył sezon szybko w tym roku, bo już we wrześniu.

Rower 53 aktywności, 324 km, 22,5h w ruchu. Czyli niedramatyczny, ale jednak regres.

Z ciekawostek organizacyjnych/technicznych – zacząłem biegać z komunikatami głosowymi, które Strava ma zrobione raczej słabo. I – z różnych względów – rozważam porzucenie Stravy na rzecz FitoTrack. Jeden bieg był w obu systemach naraz i wydaje się, że może być OK. Ale nic nie jest przesądzone.

Szachy

W szachy nauczył mnie grać dziadek, gdy byłem małym dzieckiem. Grałem nieźle jak na swój wiek, ale jakoś specjalnie szachowego bakcyla nie połknąłem. Ani nie grałem później w klubach, ani nie czytałem zaawansowanych książek. Owszem, czytałem jakieś proste książki dla dzieci, gdzie były jakieś podstawy taktyki i wartości figur, ale nic więcej.

Potem zetknąłem się z ludźmi, którzy wiedzieli co to obrona sycylijska, znali otwarcia i umieli tę wiedzę wykorzystać. Czyli – patrząc z perspektywy – mieli dużą przewagę i tak też z tego co pamiętam przebiegały rozgrywki. Studiowanie książek tylko po to, by lepiej grać w grę, która miała być rozrywką jakoś nie wydawało mi się sensowne. Odpuściłem. Albo po prostu właśnie nie połknąłem bakcyla.

Fast forward. O szachach przypomniał mi serial Gambit królowej. Nakręcony na podstawie książki Waltera Tevisa. O samym serialu pisali Zuzanka i Boni, nieco udzielałem się w komentarzach w pierwszym linku, więc nie ma sensu powtarzać. Ważne jest to, że serial przypomniał mi – i nie tylko mi – o istnieniu szachów. I ogólnie wpłynął mocno na zainteresowanie nimi na świecie[1]. Postanowiłem odświeżyć temat.

Pierwszą rzeczą było zainstalowanie programu na smartfonie. Nawet dłuższą chwilę – pewnie około miesiąca – pograłem. I nawet jakieś efekty były. Tylko była to gra przeciwko komputerowi. I bez żadnych dodatków. Program został, czasem go włączałem i… tyle. W zasadzie bardziej był na telefonie, niż realnie używałem. Znaczy się kolejny raz nie połknąłem szachowego bakcyla.

Zupełnie niedawno zarejestrowałem się na chess.com i zainstalowałem ich aplikację. I był to strzał w dziesiątkę. Zadania, lekcje, przyjemne analizy. I mocna gamifikacja: ligi, zliczanie codziennego grania, zbieranie flag państw ludzi, z którymi się grało. Wciągnęło mnie. Gram regularnie. Dodatkowo można grać ze znajomymi, a okazało się, że w firmie są użytkownicy tej platformy.

Jest to podlewane elementami analizy i nauki (wszystko w appce!) i… widzę postępy. Zatem, jeśli ktoś chce się nauczyć grać w szachy – bezinteresownie polecam. Tym bardziej, że można korzystać za darmo. A dla chętnych jest krótki, zdaje się tygodniowy, trial dający dostęp do wszystkich funkcjonalności i usuwający niektóre limity typu ilość lekcji w tygodniu.

[1] Z tego co pamiętam. Linków ani danych nie mam, ale i trendy Google, i szybkie wyszukiwania zdają się potwierdzać.