Cool, ein Inform7-Eintrag. :) Ich musste es nur versuchen.
Ich bin mir ziemlich sicher, dass dies die beabsichtigte Lösung ist:
R is a room.
To f (n - number): say "[n * n * real square root of n]".
Beachten Sie, dass diese Lösung aufgrund der Verwendung der real square root of
Funktion nur funktioniert, wenn sie mit dem Glulx-Backend kompiliert wurde .
Übrigens sind die doppelten Anführungszeichen und eckigen Klammern eigentlich unnötig; nur say n * n * real square root of n
würde genauso gut funktionieren. Die Punkte am Ende der Befehle könnten auch weggelassen werden; oder wir könnten die erste Periode beibehalten und stattdessen die Zeilenumbrüche entfernen. Andere Teile des Codes, die wir wegschneiden könnten, sind der Artikel "a" vor "room" und die Leerzeichen vor den Klammern und nach dem Doppelpunkt. Glücklicherweise können wir diese zusätzlichen Zeichen jederzeit auskommentieren, da wir ein Ersatzpaar von Klammern haben. ;) Das ist also auch eine gültige Lösung:
R is room.To f(n - number):say n * n * real square root of n[
" a . "
]
Um diese Lösung interaktiv zu testen, können Sie dem Code den folgenden Testsatz hinzufügen:
Effing is an action applying to one number.
Understand "f [number]" as effing.
Carry out effing: f the number understood.
Nach dem Kompilieren und Ausführen des Programms können Sie z. B. f 4. f 6. f 9. f 25
an der >
Eingabeaufforderung Folgendes eingeben und erhalten:
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
>
Übrigens ist mir gerade aufgefallen, dass Inform (oder vermutlich Glulx) die letzte f 6
falsche Dezimalstelle rundet : Der richtige Wert liegt viel näher an 88.18163 als an 88.18164. Glücklicherweise glaube ich nicht, dass dies die Richtigkeit der Lösung (en) beeinträchtigt, zumal die Herausforderung "einen beliebigen Rundungsmechanismus Ihrer Wahl" spezifizierte. :)