PlayPendium
About this game ↓
PlayPendium · About · Contact · Privacy · Terms · Cookies · Accessibility · Copyright · Browse all games · Classic arcade games · © 2026

Claw Compiler

Steruj kodem dźwigiem w magazynie i przekładaj kolorowe skrzynki w limicie instrukcji tak ciasnym, że wymaga rekurencji.

Jak grać

Zbuduj program z instrukcji dźwigu (ruch w lewo i w prawo, chwyć, odłóż oraz warunki koloru), aby przełożyć skrzynki z pojemników w docelowy stos. Limit instrukcji jest celowo ciasny, więc będziesz polegać na poleceniu Call, które uruchamia cały program ponownie od początku; warunek, który nie jest spełniony, staje się przypadkiem bazowym, który zatrzymuje rekurencję. Jest dziesięć ręcznie zaprojektowanych poziomów, od jednej czerwonej skrzynki po wieżę z sześciu skrzynek, a osiem z nich nie da się rozwiązać bez Call.

Przykład krok po kroku

Wieża z trzech: trzy czerwone skrzynki stoją w pojemniku 1 i muszą trafić do pojemnika 2, a wolno użyć tylko sześciu instrukcji. Rozpisana w całości każda skrzynka potrzebuje Grab, Right, Drop i Left, czyli jedenastu instrukcji na trzy skrzynki, nawet po pominięciu ostatniego Left. Sześć nie wystarczy.

Napisz więc jeden kurs i pozwól mu się powtarzać: Grab, If-held czerwony, Right, Drop, Left, Call. To sześć instrukcji. Dźwig chwyta skrzynkę, sprawdza, czy trzyma czerwoną, przenosi ją, odkłada, wraca i wywołuje cały program od nowa. Przy czwartym wywołaniu pojemnik 1 jest pusty, Grab niczego nie podnosi, test If-held czerwony nie przechodzi i program się zatrzymuje. Ten niespełniony test to przypadek bazowy.

Zmień If-held czerwony na If-held niebieski, a te same sześć instrukcji rozwiąże także poziom z czterema skrzynkami i wieżę z sześciu, bo procedura nigdy nie liczy skrzynek; działa, dopóki jakieś zostały. Na tym polega rekurencja: program opisuje jeden krok i regułę zatrzymania, a dane wejściowe decydują, ile razy się wykona.

Sterowanie
Wskazówki i strategia
Czego się dowiesz

Claw Compiler uczy rekurencji za pomocą dźwigu układającego skrzynki i ścisłego limitu ruchów, dzięki czemu trudna idea staje się konkretna.

Początki

Instrukcje dźwigu — ruch w lewo i w prawo, chwytanie, odkładanie i warunki dotyczące koloru — to minimalny język asemblera z dołączonym fizycznym ciałem.

Nauka programowania za pomocą małego robota w małym świecie sięga Karel the Robot, języka dla początkujących, który Richard Pattis przedstawił w książce z 1981 roku i wykorzystywał na swoich zajęciach w Stanfordzie. Gry podchwyciły ten pomysł: Lightbot uczy pętli i procedur przez programowanie robota przechodzącego labirynt, a najbliższym przodkiem gry Claw Compiler jest Cargo-Bot, łamigłówka na iPada z 2012 roku, w której uczy się robota przenosić skrzynki. Studio Two Lives Left stworzyło ją wspólnie z Ruiem Vianą na podstawie jego prototypu w swojej aplikacji do programowania na iPadzie Codea i reklamowało jako pierwszą grę zaprogramowaną w całości na iPadzie.

Zadanie, czyli przestawianie pojemników ze skrzynkami w docelowy stos, to sortowanie wykonywane przez maszynę, która może trzymać dokładnie jedną rzecz naraz. To ograniczenie do jednego chwytaka jest lekcją samą w sobie. To samo ograniczenie narzuca rejestr i dlatego prawdziwe sortowanie potrzebuje miejsca, gdzie można coś odłożyć — odkrycie, że potrzebujesz zapasowego pojemnika, to odkrycie idei pamięci tymczasowej.

Ponieważ Call jest zawsze ostatnią instrukcją, każdy program jest tu rekurencyjny ogonowo: wywołanie samego siebie to ostatnia rzecz, jaką wykonuje. Wiele implementacji języków zamienia wywołanie ogonowe w zwykły skok z powrotem na początek, dlatego ten sam program można odczytać zarówno jako rekurencję, jak i jako pętlę. Dostrzeżenie, że to jedna i ta sama idea, to duża część zrozumienia rekurencji.

O grze Claw Compiler

Claw Compiler to oryginalna, darmowa gra przeglądarkowa stworzona dla PlayPendium: język dźwigu z siedmioma instrukcjami, dziesięć poziomów, których limity sprawiają, że rekurencja jest koniecznością, a nie opcją, wspólny poziom dnia oraz tryb treningowy, który rozdaje pozostałe.

Przeglądaj wszystkie gry →