Sử dụng mô-đun để đơn giản hóa đầu vào
Đây có thể là một mẹo quá đơn giản, vì vậy nếu đó là tôi sẽ chỉ thay thế hoặc xóa nó.
Giả sử bạn muốn nhập hai ký tự "a" và "b" và trả lại 1 và 2 cho mỗi ký tự tương ứng. Bạn có thể sử dụng các điều kiện cho việc này, vì nó có ý nghĩa nhất và tôi sẽ sử dụng một hình thức cô đọng hơn cho ví dụ cụ thể này.
i:"a")+1+n
Điều này kiểm tra xem liệu đầu vào có lớn hơn "a" không và thêm 1. Vì "a" sẽ trả về 0 và "b" 1, điều này sẽ cho 1 và 2. Điều này thực hiện công việc khá tốt, nhưng trong trường hợp của chúng tôi đầu vào, chúng ta có thể đi xa hơn.
i:3%n
Trong mod 3, 97, tương đương với số "a", trở thành 1 và 98, là "b" s, trở thành 2. Đối với hai số khác nhau, có một mod đảm bảo cho kết quả duy nhất cho cả hai. Đối với nhiều hơn hai, có một mod cho kết quả duy nhất, nhưng tôi không có khả năng toán học để tìm ra cái nhỏ nhất một cách đơn giản (ví dụ: nếu bạn có bộ {100,101,102,103}, mod 104 sẽ cho kết quả duy nhất cho mỗi giá trị trong đó nhưng không phải là một cách rất hữu ích). Tuy nhiên, trong hầu hết các trường hợp, với đầu vào bị giới hạn ở một vài ký tự chữ cái, bạn thường có thể tìm thấy một mod hoạt động.
Để tìm mô-đun nhỏ nhất mang lại kết quả duy nhất cho hai số, a và b, bạn làm như sau. Lấy giá trị tuyệt đối của hiệu của a và b ( |a - b|
) và tìm số nhỏ nhất, n, không chia nó. ví dụ: đối với 97 và 98, |98 - 97| = 1
và vì vậy 2 sẽ là mod nhỏ nhất (nhưng đối với chương trình thử nghiệm của chúng tôi, điều này mang lại 1 cho 97 và 0 cho 98, vì vậy mod 3 tốt hơn).