Цей виклик вам приносить справжнє (і трагічне) натхнення. Останнім часом рядок цифр на моїй клавіатурі трохи спорадично. Клавіші 1-9
працюють іноді, але в інших випадках вони не мають результату. Як завзятий програміст, це жахливо! (Дивіться цей знак оклику? Ось так ви знаєте, що вони зараз працюють.) Мені не тільки часто потрібні самі цифри, але й символи!@#$%^&*(
також є неефективними в половині часу! Як програміст на C, замість того, щоб забирати час від мого напруженого розкладу малювання з кодом, щоб виправити мій ноутбук, я був більше зацікавлений у вирішенні проблеми. Протягом останніх декількох тижнів повільно всі літеральні цифри в моєму коді були замінені шістнадцятковими, так що мені не доведеться ходити на полювання за номерами, щоб скопіювати та вставити. Однак деякі цифри не легко ввести без клавіш 1-9
. Наприклад, число 1
не можна записати так просто шістнадцятковим, і я вдався до заміни 1
s у своєму коді на 0xF - 0xE
. Єдині клавіші, які уражаються 1-9
, тому я підтримую повне використання символів , таких як +
, -
і /
. Однак я не можу використовувати множення чи круглі дужки як*
і (
часто ламаються. Це призводить до вашого завдання.
Вхідні дані
Ціле число, n
stdin або еквівалент вашої мови. За бажанням, цілому числу може передувати або слідувати новий рядок або інший символ пробілу. Крім того, ви можете отримати вхід через аргумент командного рядка.
Ваша програма повинна правильно реагувати на негативний вхід і мати можливість обробляти принаймні 32-бітні цілі числа.
Вихід
Ваша програма повинна виводити в деякій видимій формі найкоротший (із символів без пробілів) можливий спосіб записати число n
у вигляді суми, різниці або поділу одного або кількох шістнадцяткових значень. Існує більше ніж один спосіб вирішити цю проблему, і немає жодної вимоги, щоб ви віддавали перевагу будь-якому результату однакової довжини перед будь-яким іншим.
Вихід повинен бути у формі, A % A % A...
де A
є шістнадцяткове значення, 0x
що містить лише цифри A-F a-f
, і %
є одним із символів -+/
. Нехай /
описує цілочисельне ділення, а НЕ з плаваючою точкою.
(Зверніть увагу, що ваш результат повинен мати результат n
при оцінці поділів спочатку зліва направо, а потім додавання та віднімання, зліва направо, як це умовно.)
Випробування
Введення-виведення
1
0xF - 0xE
(або0xF-0xE
або0xB-0xA
або0xd - 0xc
або0xF/0xF
)15
0xF
255
0xFF
30
0xF + 0xF
Оцінка та правила
Це код-гольф. Ваш попередній бал - кількість байтів у вихідному файлі.
Ви НЕ можете використовувати жодну з цифр 1-9
у своєму джерелі.
Ви МОЖЕТЕ використовувати символи !@#$%^&*(
у своєму джерелі, але кожен отримує штраф у розмірі +20 до вашого рахунку.
Ваша програма може бути замінена функцією, яка бере n
аргумент до тих пір, поки ця функція створює певну форму, зрозумілу людині. Повернене значення функції НЕ враховується як вихід.
Стандартні лазівки заборонені.
Найнижчий рахунок виграє! Удачі!
Я щось підробляв до форматування / запитання / чіткості? Дай мені знати! Це моє перше подання на цей сайт!