Натхненна цією публікацією на головоломки. Спойлери для цієї головоломки нижче.
З урахуванням трьох позитивних цілих чисел як вхідних даних, (x, y, z)побудуйте інклюзивний діапазон [x, y], об'єднайте цей діапазон разом, а потім видаліть zне обов'язково послідовні цифри, щоб отримати найбільші і найменші можливі додатні цілі числа. Провідні нулі заборонені (тобто цифри повинні починатися з [1-9]). Виведіть ці два числа в будь-якому порядку.
Для прикладу з загадкового поста, для введення (1, 100, 100), найбільше число можливо є 99999785960616263646566676869707172737475767778798081828384858687888990919293949596979899100,
а найменше число 10000012340616263646566676869707172737475767778798081828384858687888990919293949596979899100,
слідуючи нижче логіки від jafe в відповідь відправив туди:
- Ми не можемо впливати на довжину числа (є фіксована кількість цифр), тому для отримання максимального значення ми беремо максимальну першу цифру, потім другу цифру тощо.
- Видаліть 84 перших недев'яти (16 цифр залишилося видалити):
999995051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100 - Найбільше число в межах наступних 17 цифр - 7, тож звідси наступна цифра у відповіді може бути не більше 7 (ми не можемо видалити більше 16 цифр). Тому видаліть 15 осіб, які не належать 7 ... (1 цифра залишилася для видалення):
999997585960616263646566676869707172737475767778798081828384858687888990919293949596979899100 - Звідси наступна цифра може бути не більше 8, тому видаліть один не-8 із середини:
99999785960616263646566676869707172737475767778798081828384858687888990919293949596979899100 - Аналогічна логіка, але зворотна (тобто ми хочемо вести
1s замість ведучого9s) для найменшого числа.
Ось приклад менше: (1, 10, 5).
Ми побудуємо діапазон 12345678910і визначимо, які 5цифри ми можемо видалити, залишивши якомога більше число. Очевидно, це означає, що ми хочемо максимізувати провідну цифру, оскільки ми не можемо впливати на довжину виводу. Отже, якщо ми видалимо 12345, ми залишимося 678910, і це найбільше, що ми можемо зробити. Зробити найменшим - трохи складніше, оскільки замість цього ми можемо витягнути числа з середини, залишаючи 123410якнайменше.
Бо (20, 25, 11)результат досить нудний, як 5і 1.
Нарешті, щоб виключити відповіді, які намагаються провести нулі, (9, 11, 3)дає, 91011що в свою чергу дає 91і 10як найбільшу і найменшу.
I / O та правила
- Якщо це легше / коротше, ви можете кодувати дві програми / функції - одну для найбільшої та одну для найменшої - у такому випадку ваш бал становить суму обох частин.
- Введення та вихід можуть бути надані будь-яким зручним способом .
- Можна вважати, що вхід відповідає вхідному типу вашої мови, однак ні зв'язане число, ні вихід не можуть вважати цього.
- Прийнятна або повна програма, або функція. Якщо функція, ви можете повернути вихід, а не надрукувати його.
- Стандартні лазівки заборонені.
- Це код-гольф, тому застосовуються всі звичайні правила гольфу, і найкоротший код (у байтах) виграє.
9, 11, 3це зробить.