Використання модуля для спрощення введення даних
Це може бути занадто простим підказом, тому, якщо він є, я просто заміню його або видаляю.
Скажімо, ви хочете взяти введення двох символів "a" і "b" і повернути 1, і 2 відповідно для кожного. Ви, мабуть, використовуєте для цього умовні умови, оскільки це має найбільш сенс, і я буду використовувати для цього конкретний приклад більш стисну форму.
i:"a")+1+n
Це перевіряє, чи є вхід більшим за "a", і додає 1. Оскільки "a" поверне 0 і "b" 1, це дасть 1 і 2. Це робить роботу досить добре, але у випадку нашого Ми можемо піти ще далі.
i:3%n
У моді 3, 97, який є "a" s числовим еквівалентом, стає 1, а 98, що "b" s, стає 2. Для двох різних чисел гарантується мод, який дає унікальні результати для обох. Більше двох є мод, який дає унікальні результати, але я не маю математичної майстерності, щоб знайти найменший на простий спосіб (наприклад, якщо у вас є набір {100,101,102,103}, мод 104 дасть унікальні результати для кожне значення в ньому, але не дуже корисно). Однак у більшості випадків, якщо введення обмежується парою алфавітних символів, часто можна знайти мод, який працює.
Щоб знайти найменший модуль, який дає унікальні результати для двох чисел, a і, b, ви виконуєте наступне. Візьміть абсолютне значення різниці a і b ( |a - b|
) і знайдіть найменше число, n, яке не ділить його. наприклад, для 97 і 98, |98 - 97| = 1
і так 2 буде найменшим модом (але для нашої програми тестування це дає 1 для 97 і 0 для 98, тому мод 3 краще).