Menggunakan modulus untuk menyederhanakan input
Ini mungkin tip yang terlalu sederhana, jadi jika ya saya akan menggantinya atau menghapusnya.
Katakanlah Anda ingin mengambil input dari dua karakter, "a" dan "b" dan masing-masing mengembalikan 1, dan 2. Anda mungkin menggunakan kondisional untuk ini, karena ini paling masuk akal, dan saya akan menggunakan formulir yang lebih ringkas untuk contoh khusus ini.
i:"a")+1+n
Ini memeriksa untuk melihat apakah input lebih besar dari "a" dan menambahkan 1. Karena "a" akan mengembalikan 0 dan "b" 1, ini akan memberikan 1 dan 2. Ini melakukan pekerjaan dengan cukup baik, tetapi dalam kasus kami input, kita bisa melangkah lebih jauh.
i:3%n
Dalam mod 3, 97, yang "setara" numerik, menjadi 1, dan 98, yang "b", menjadi 2. Untuk dua angka yang berbeda, ada jaminan mod yang memberikan hasil unik untuk keduanya. Untuk lebih dari dua, ada mod yang memberikan hasil yang unik, tetapi saya tidak memiliki kecakapan matematika untuk menemukan yang terkecil dengan cara yang sederhana (misalnya jika Anda memiliki set {100.101.102.103}, mod 104 akan memberikan hasil yang unik untuk setiap nilai di dalamnya tetapi tidak dengan cara yang sangat membantu). Namun, dalam kebanyakan kasus, dengan input dibatasi pada beberapa karakter alfabet, Anda sering dapat menemukan mod yang berfungsi.
Untuk menemukan modulus terkecil yang menghasilkan hasil unik untuk dua angka, a, dan, b, Anda lakukan sebagai berikut. Ambil nilai absolut dari selisih a dan b ( |a - b|) dan temukan angka terkecil, n, yang tidak membaginya. misalnya untuk 97 dan 98,, |98 - 97| = 1dan 2 akan menjadi mod terkecil (tetapi untuk program pengujian kami, ini memberikan 1 untuk 97 dan 0 untuk 98, jadi mod 3 lebih baik).