Круто, запись Inform7. :) Я просто должен был попробовать.
Я почти уверен, что это намеченное решение:
R is a room.
To f (n - number): say "[n * n * real square root of n]".
Обратите внимание, что это решение работает только в том случае, если оно скомпилировано с бэкэндом Glulx из-за использования real square root of
функции.
Кстати, двойные кавычки и квадратные скобки на самом деле не нужны; просто say n * n * real square root of n
будет работать так же хорошо. Точки в конце команд также могут быть опущены; или мы могли бы сохранить первый период и вместо этого избавиться от новых строк. Другие части кода, которые мы могли бы урезать, включают в себя статью «а» перед «комнатой» и пробелы перед скобками и после двоеточия. К счастью, поскольку у нас есть запасная пара скобок, мы всегда можем использовать их, чтобы закомментировать все эти дополнительные символы. ;) Так что это тоже правильное решение:
R is room.To f(n - number):say n * n * real square root of n[
" a . "
]
Для интерактивного тестирования этого решения удобно добавить в код что-то вроде следующего тестового набора:
Effing is an action applying to one number.
Understand "f [number]" as effing.
Carry out effing: f the number understood.
После компиляции и запуска программы вы можете напечатать, например, f 4. f 6. f 9. f 25
в >
командной строке и получить что-то вроде следующего:
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
>
Кстати, я только что заметил, что Inform (или, скорее, Glulx) округляет последнее десятичное число f 6
неправильного: правильное значение гораздо ближе к 88.18163, чем к 88.18164. К счастью, я не думаю, что это влияет на правильность решения (ий), тем более что в задаче указывалось «любой механизм округления на ваш выбор». :)