Verwenden des Moduls zur Vereinfachung der Eingabe
Dies könnte ein zu einfacher Tipp sein. Wenn dies der Fall ist, ersetze ich ihn einfach oder lösche ihn.
Angenommen, Sie möchten zwei Zeichen eingeben, "a" und "b", und jeweils 1 und 2 zurückgeben. Sie würden hierfür wahrscheinlich Bedingungen verwenden, da dies am sinnvollsten ist, und ich werde für dieses spezielle Beispiel eine komprimiertere Form verwenden.
i:"a")+1+n
Dies prüft, ob die Eingabe größer als "a" ist und addiert 1. Da "a" 0 und "b" 1 zurückgibt, ergibt dies 1 und 2. Dies erledigt den Job ziemlich gut, aber im Fall von unserem eingaben könnten wir noch weiter gehen.
i:3%n
In Mod 3 wird 97, was das numerische Äquivalent von "a" ist, zu 1 und 98, was das Äquivalent von "b" ist, zu 2. Für zwei verschiedene Zahlen ist ein Mod garantiert, der für beide eindeutige Ergebnisse liefert. Für mehr als zwei gibt es einen Mod, der eindeutige Ergebnisse liefert, aber ich habe nicht die mathematische Fähigkeit, den kleinsten auf einfache Weise zu finden (z. B. wenn Sie die Menge {100,101,102,103} haben, würde Mod 104 eindeutige Ergebnisse für liefern jeder Wert drin, aber nicht sehr hilfreich). In den meisten Fällen kann man jedoch einen Mod finden, der funktioniert, wenn die Eingabe auf ein paar alphabetische Zeichen beschränkt ist.
Um den kleinsten Modul zu finden, der eindeutige Ergebnisse für die beiden Zahlen a und b liefert, gehen Sie wie folgt vor. Nimm den absoluten Wert der Differenz von a und b ( |a - b|
) und finde die kleinste Zahl n, die sie nicht teilt. zB für 97 und 98, |98 - 97| = 1
und so wäre 2 der kleinste Mod (aber für unser Testprogramm ergibt dies 1 für 97 und 0 für 98, also ist Mod 3 besser).