Fajnie, wpis Inform7. :) Po prostu musiałem spróbować.
Jestem prawie pewien, że jest to zamierzone rozwiązanie:
R is a room.
To f (n - number): say "[n * n * real square root of n]".
Zauważ, że to rozwiązanie działa tylko, jeśli zostało skompilowane z zapleczem Glulx, ze względu na użycie tej real square root of
funkcji.
BTW, podwójne cudzysłowy i nawiasy kwadratowe są w rzeczywistości niepotrzebne; po prostu say n * n * real square root of n
działałby równie dobrze. Można również pominąć kropki na końcu poleceń; lub moglibyśmy zachować pierwszy okres i zamiast tego pozbyć się nowych linii. Inne części kodu, które moglibyśmy usunąć, to artykuł „a” przed „pokojem” oraz spacje przed nawiasami i po dwukropku. Na szczęście, ponieważ mamy zapasową parę nawiasów, zawsze możemy ich użyć, aby skomentować wszystkie te dodatkowe znaki. ;) Więc to również jest prawidłowe rozwiązanie:
R is room.To f(n - number):say n * n * real square root of n[
" a . "
]
Aby interaktywnie przetestować to rozwiązanie, wygodnie jest dołączyć do kodu coś w rodzaju następującej wiązki testowej:
Effing is an action applying to one number.
Understand "f [number]" as effing.
Carry out effing: f the number understood.
Po skompilowaniu i uruchomieniu programu możesz wpisać np. f 4. f 6. f 9. f 25
W >
wierszu polecenia i otrzymać coś w rodzaju następującego wyniku:
Welcome
An Interactive Fiction
Release 1 / Serial number 170404 / Inform 7 build 6L38 (I6/v6.33 lib 6/12N) SD
R
>f 4. f 6. f 9. f 25
32.0
88.18164
243.0
3125.0
>
BTW, właśnie zauważyłem, że Inform (lub raczej Glulx) zaokrągla ostatnie miejsce dziesiętne f 6
zła: poprawna wartość jest znacznie bliższa 88,18163 niż 88,18164. Na szczęście nie sądzę, aby miało to wpływ na poprawność rozwiązania (rozwiązań), zwłaszcza, że wyzwanie określało „dowolny wybrany przez ciebie mechanizm zaokrąglania”. :)