Utilizzo del modulo per semplificare l'input
Questo potrebbe essere un suggerimento troppo semplice, quindi se lo è lo sostituirò o lo cancellerò.
Diciamo che vuoi prendere input di due caratteri, "a" e "b" e restituire 1 e 2 rispettivamente per ciascuno. Probabilmente useresti dei condizionali per questo, dal momento che ha più senso, e userò una forma più condensata per questo esempio specifico.
i:"a")+1+n
Questo controlla se l'input è maggiore di "a" e aggiunge 1. Poiché "a" restituirà 0 e "b" 1, questo darà 1 e 2. Questo fa abbastanza bene il lavoro, ma nel caso del nostro input, potremmo andare ancora oltre.
i:3%n
Nella mod 3, 97, che è l'equivalente numerico di "a", diventa 1 e 98, che è "b" s, diventa 2. Per due numeri diversi, è garantita una mod che fornisce risultati unici per entrambi. Per più di due, c'è una mod che dà risultati unici, ma non ho l'abilità matematica di trovare la più piccola in modo semplice (ad esempio se hai il set {100,101,102,103}, la mod 104 darebbe risultati unici per ogni valore in esso, ma non in modo molto utile). Tuttavia, nella maggior parte dei casi, con l'input limitato a un paio di caratteri alfabetici, puoi spesso trovare una mod che funziona.
Per trovare il modulo più piccolo che produce risultati univoci per due numeri, a, e, b, si procede come segue. Prendi il valore assoluto della differenza di aeb ( |a - b|) e trova il numero più piccolo, n, che non lo divide. ad es. per 97 e 98, |98 - 97| = 1e quindi 2 sarebbe la mod più piccola (ma per il nostro programma di test, questo dà 1 per 97 e 0 per 98, quindi la mod 3 è migliore).