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.

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ć.

Wordle

Był taki moment, że był boom na grę Wordle. Nie pamiętam, kiedy dokładnie, kojarzy mi się z okolicami pandemii. W każdym razie, w mojej bańce na Twitterze trochę ludzi wrzucało wyniki. Zaciekawiło mnie to, pobawiłem się i… stwierdziłem, że trochę nie dla mnie – za mały zasób słów itp.

Przeróbek, wariacji i podobnych programów było sporo, śledziłem je jednym okiem. Spodobało mi się passwordle. Choć nie dojdę teraz łatwo, które, bo projekty o tej nazwie są dwa. Ale też tylko na chwilę. Były też programy do rozwiązywania Wordle i w ogóle cała otoczka. Jednym słowem hype.

Potem zapomniałem o Wordle. Sądząc po ilości wpisów na jej temat – nie tylko ja. Popularność spadła, a przynajmniej ludzie przestali chwalić się wynikami.

Po dłuższym czasie coś mi o Wordle przypomniało. Zrobiłem raz i drugi – bez problemu. Zacząłem nieregularnie grywać dla rozruszania mózgownicy. Grywam sporadycznie, ale teraz praktycznie zawsze udaje mi się odgadnąć słowo. A przecież nie trenowałem słówek. Nawet czasem odgaduję słowo, którego nie znam. I dopiero później sprawdzam znaczenia. Taka ciekawostka.

UPDATE: Strona Wikipedii poświęcona Wordle – trochę ciekawostek o rozwiązywaniu.