NukeBoards

Pomysły i scenariusze - [Logiczna] Refunction

copperdragon - 04-07-2008, 19:13
: Temat postu: [Logiczna] Refunction
Na czym polegałaby ta gra? Już wyjaśniam.
Każdy poziom to oddzielna funkcja, którą wykonuje program. Zadaniem gracza jest ustalić, w jaki sposób ta funkcja działa. W jaki sposób ma do tego dojść?
Najprościej rzecz ujmując, metodą prób i błędów. Program może wykonać funkcję na tablicy składającej się z maksymalnie 20 liczb (jak ktoś chce skorzystać z tego pomysłu, może trochę zmienić), zwracając wynik. Każda z wprowadzanych liczb jest z zakresu od 0 do 255 (wynik może być dowolną liczbą rzeczywistą), wprowadzone dane są prezentowane w trzech kolumnach - w pierwszej dane są zapisane w systemie dziesiętnym, w drugiej w binarnym, w trzeciej w szesnastkowym (można również wprowadzać dane stosując odpowiedni system). Poniżej wyświetla się wynik również w trzech systemach. Oprócz tego gracz ma do dyspozycji kalkulator, który potrafi wykonać wszystkie działania znajdujące się w każdej funkcji. Jeśli funkcja działa tylko dla określonych warunków, np. dzieli przez pierwszy element tablicy sumę pozostałych, co oznacza, że pierwszym elementem nie może być 0, w przypadku nieodpowiedniego wyniku zwróci błąd.

Przykład?
Mamy jakąś funkcję. Wprowadzamy do tablicy danych 0. Otrzymujemy 0. Wprowadzamy drugą liczbę - 1 (na takich najlepiej operować ;) ). Otrzymujemy wynik 1. Wprowadzamy jeszcze 77, bo akurat ta liczba nam się podoba. Otrzymujemy 76. Skoro tak, to jeszcze 13 dodamy (a jak!). W ten sposób wychodzi 65. Próbujemy jeszcze z 59, otrzymany wynik to 122.
Teraz co mniej więcej widzi gracz:

Kod:

0 00000000 00
1 00000001 01
77 01001101 4D
13 00001101 0D
59 00111011 3B

122 01111010 6A

Na podstawie tego możemy wywnioskować, że wynikiem jest liczba, która odpowiednią cyfrę ma 0, gdy suma cyfr w wyższej kolumnie jest parzysta, lub 1, gdy jest nieparzysta.
Mając taką hipotezę możemy sprawdzić, czy jest prawdziwa. Mianowicie tym razem role się odwracają - program losuje nam dane, a my musimy je wprowadzić. Jeśli wynik okaże się nieprawidłowy, trzeba będzie znowu sprawdzić, być może już z inną metodą. Moim zdaniem program powinien losować 5-10 zestawów danych, co by była pewność, że gracz faktycznie prawidłowo określił funkcję. Jeśli może wystąpić błąd, wśród zestawów powinien być losowany taki, dla którego ten błąd zachodzi (gracz będzie mógł mieć nawet w prezencie taki czerwony przycisk ^^ ).

I jak pomysł się podoba?