Этот вызов принес вам реальное (и трагическое) вдохновение. В последнее время числовой ряд на моей клавиатуре был немного спорадическим. Клавиши 1-9
работают иногда - но в других случаях они не дают результата. Как заядлый программист, это ужасно! (Видите этот восклицательный знак? Вот откуда вы знаете, что они работают прямо сейчас.) Не только мне часто нужны сами цифры, но и символы!@#$%^&*(
совершенно неэффективны и в половине случаев! Как программист на Си, вместо того, чтобы отвлекаться от моего напряженного графика работы с кодом для исправления моего ноутбука, я больше интересовался решением этой проблемы. В течение последних нескольких недель медленно все числовые литералы в моем коде заменялись шестнадцатеричными, чтобы мне не приходилось искать числа для копирования и вставки. Однако некоторые цифры нелегко набрать без ключей 1-9
. Например, число 1
нельзя записать так просто в шестнадцатеричном формате, и я прибегнул к замене 1
s в моем коде на 0xF - 0xE
. Единственные ключи, которые затронуты1-9
, поэтому я поддерживаю полное использование символов , таких как +
, -
и /
. Тем не менее, я не могу использовать умножение или скобки, так как*
и (
часто ломаются. Это приводит к вашей проблеме.
вход
Целое число, n
в стандартный ввод или эквивалент вашего языка. При желании, целому числу может предшествовать или следовать новая строка или другой символ пробела. Кроме того, вы можете получить ввод через аргумент командной строки.
Ваша программа должна правильно реагировать на отрицательный ввод и иметь возможность обрабатывать как минимум 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
в качестве аргумента, если эта функция производит какую-то форму удобочитаемого вывода. Возвращаемое значение вашей функции НЕ считается выходным.
Стандартные лазейки не допускаются.
Самый низкий балл побеждает! Удачи!
Я что-то пошёл по форматированию / опросу / ясности? Дай мне знать! Это моя первая отправка на этот сайт!