tło
Manufaktura to gra o programowaniu. Gracz musi używać formy dwuwymiarowego języka programowania do wykonywania zadań. Jeśli nigdy o tym nie słyszałeś, najłatwiejszym sposobem na naukę jest wypróbowanie kilku pierwszych poziomów gry.
Wyzwanie
Twoim wyzwaniem jest stworzenie programu, który testuje pierwotność liczby.
Dane wejściowe będą ciągiem N niebieskich znaczników w kolejce. Jeśli N jest liczbą pierwszą, wówczas twój program powinien ją zaakceptować (przenieść robota do mety). Jeśli N jest złożony, to twój program powinien go odrzucić (upuścić gdzieś na podłogę).
Opcje przesyłania
Ponieważ jest to bardziej złożone wyzwanie niż typowe wyzwanie Manufaktury, postanowiłem umożliwić więcej sposobów przesyłania odpowiedzi.
Wanilia
Stworzyłem niestandardowy poziom 13x13 do budowania i testowania zgłoszeń. Niestandardowy poziom testowania jest następujący.
Gra pozwala tylko na 8 przypadków testowych na niestandardowym poziomie, ale twoje dzieło powinno teoretycznie być w stanie obsłużyć dowolną liczbę naturalną N, ograniczoną tylko dostępną pamięcią. Do celów informacyjnych przypadki testowe udostępnione na poziomie niestandardowym są następujące:
1 -> reject
2 -> accept
4 -> reject
5 -> accept
7 -> accept
9 -> reject
11-> accept
15-> reject
Rozszerzona siatka
Niektórzy użytkownicy mogą chcieć więcej miejsca niż siatka 13 x 13. Oto link do niestandardowego poziomu w grze 15 x 15, utworzonego przez zmianę liczby w adresie URL:
Niestety większe niestandardowe poziomy nie działają, ponieważ dodatkowe komórki są niedostępne.
Manufaktura Esolang
Nastąpiła adaptacja Manufaktury na język oparty na ASCII. Jeśli chcesz inny sposób zaprojektowania / przetestowania swojego dzieła lub jeśli nie jesteś w stanie zmieścić ostatecznego rozwiązania na planszy, możesz użyć tego esolangu. Informacje na temat tego esolangu można znaleźć tutaj:
Istnieje kilka rozbieżności między esolangiem a rzeczywistą grą. Na przykład przejścia przez przenośniki są obsługiwane w różny sposób. Staraj się unikać korzystania z tych rozbieżności.
Szybszy sposób testowania
Gra jest bardzo wolna, jeśli chodzi o programy, których wykonanie wymaga kilku tysięcy kroków. Moje rozwiązanie sprawdzające koncepcję wymagało 28042 kroków, aby odrzucić 15. Nawet przy 50-krotnym przyspieszeniu w grze, to po prostu trwa zbyt długo.
Znalazłem tę bardzo pomocną stronę internetową . Wystarczy skopiować i wkleić link do swojej odpowiedzi, aby przetestować swoją odpowiedź przy użyciu określonych danych wejściowych. 28042-etapowy proces zajął sekundę.
Należy zauważyć, że często powie coś „niepoprawnie zaakceptowane”, nawet jeśli maszyna działała poprawnie. Wynika to z faktu, że strona internetowa zna tylko przypadki testowe. Na przykład oznaczałoby to, że moje rozwiązanie „nieprawidłowo zaakceptowało” cyfrę 3, mimo że moja maszyna była rzeczywiście poprawna.
Jak wygrać
Kryterium punktacji to liczba części (zajętych komórek). To jest kod golfowy, więc wygrywa zgłoszenie z najmniejszą liczbą części.
Dla zainteresowanych moje rozwiązanie porównawcze składa się z 96 części i pasuje do siatki 13x13. Znalezienie lepszego algorytmu może prowadzić do kolosalnych ulepszeń, ponieważ wiem, że użyłem algorytmu nieoptymalnego.