Вы должны написать программу или функцию, которая получает целые числа в качестве входных данных и выводит или возвращает два целых числа, сумма которых является первой.
Есть еще одно требование: ни один номер не может быть частью вывода для двух разных входов .
подробности
- Вы должны иметь возможность обрабатывать входные данные как минимум для диапазона
-32768 .. 32767
(включительно). - Если ваш тип данных не может обрабатывать произвольные целые числа, это нормально, но ваш алгоритм должен работать для произвольных больших и малых чисел в теории.
Примеры
Каждый блок показывает часть правильного или неправильного решения в формате input => output
.
1 => 6 -5
2 => -2 4
15 => 20 -5
Incorrect, as `-5` is used in two outputs.
-5 => -15 10
0 => 0 0
1 => 5 6
2 => -5 7
Incorrect, as `5 + 6` isn't `1`.
-1 => -1 0
0 => 6 -6
2 => 1 1
Can be correct if other outputs doesn't collide.
Это код гольф, поэтому выигрывает самый короткий вход.
Ответы:
Pyth, 8 байт
Демонстрация. Эквивалент к коду Python 2:
Итак, вывод имеет вид
(-n**3, n+n**3)
Некоторые выводы:
Они отличаются друг от друга, потому что кубы расположены достаточно далеко, поэтому добавление
n
кn**3
ним недостаточно, чтобы пересечь пробел до следующего куба:n**3 < n+n**3 < (n+1)**3
для положительногоn
и симметрично для отрицательногоn
.источник
,
в начале, кажется, что две строки разрешены.J
задание подавляет печать?-
в pyth не унарный оператор отрицания, его_
, так_J^Q3+QJ
работает, как и ожидалось.J
чтобы не быть на улице. Спасибо, что ткнул меня об этом.Снеговик 0.1.0 , 101 символ
Вход на STDIN, выход через пробел на STDOUT.
При этом используется тот же метод, что и в ответе isaacg.
Прокомментированная версия с переводом строки для «читабельности»:
Комментарий к самому первому решению Snowman для PPCG: я думаю, что моя цель в дизайне - сделать мой язык как можно более запутанным был достигнут.
На самом деле это могло бы быть намного короче, но я идиот и забыл реализовать отрицательные числа для разбора строк -> чисел. Поэтому мне пришлось вручную проверить, был ли
-
первый символ, и удалить его, если это так.источник
Pyth,
1511 байтов4 байта благодаря @Jakube
Демонстрация.
Это карты следующим образом:
И так далее, всегда с участием
n^2
иn^2 + n
, плюс или минус.источник
APL, 15 байт
Это создает безымянную монадическую функцию, которая возвращает пару -n ^ 3 (
-⍵*3
), n + n ^ 3 (⍵+⍵*3
).Вы можете попробовать это онлайн .
источник
Pyth -
1110 байтПросто умножаем на
10e10 и -10e10 + 1Спасибо @xnor за то, что показали мне, что я могу использоватьCG
для числа.Попробуйте это онлайн здесь .
источник
CG
.О ,
17 159 байтИспользует некоторые новые функции O.
Старая версия
источник
Python 3,
2927Изменить: не соответствует требованию во втором пункте «Сведения»
Бонус: работает с -99998 до 99998 включительно
Это создает анонимную функцию *, которую вы можете использовать, заключив ее в квадратные скобки, а затем поместив аргумент в квадратные скобки следующим образом:
* Спасибо @ vioz- за предложение этого.
Пример ввода / вывода:
источник
f=
и оставить его как анонимную функцию, которая по-прежнему является правильным ответом. Тогда вы можете уменьшить количество байт до 27 :)(lambda n:[99999*n,-99998*n])(99999)
и(lambda n:[99999*n,-99998*n])(-99998)
столкнется в теории (и на практике).Haskell, 16 байт
Я беззастенчиво скопировал метод @ xnor. Там, вероятно, не намного лучше, чем это.
источник