Вызов
Дав действительную арифметическую сумму с некоторыми пропущенными числами, выведите полное выражение.
Пример:
1#3 123
+ 45# => + 456
-------- --------
579 579
вход
- Формат выражения может быть массивом
["1#3", "45#", "579"]
, строкой"1#3+45#=579"
или 3 входамиf("1#3","45#","579")
Выход
- Так же, как вход
- Вам не нужно выводить результат
Примечания
- Пропущенные числа будут представлены с помощью
#
или любого другого нецифрового символа, который вы хотите - Предположим, что результат не будет иметь пропущенного числа
- Предположим, что ввод / вывод состоят из 2-х членов и конечного результата
- Предположим, что и терм> 0, и результат> = 2
- Там может быть несколько решений. Вы можете выводить кого угодно, если совпадает сумма результата
Тестовые случаи с возможными выходами (симпатичный формат)
#79 879
+ 44# => + 444
-------- --------
1323 1323
5#5 555
+ 3#3 => + 343
-------- --------
898 898
# 1
+ # => + 1
-------- --------
2 2
### 998
+ ### => + 1 PD: there are a lot of possible outputs for this one
-------- --------
999 999
123 123
+ # => + 1
-------- --------
124 124
9 9
+ #6 => + 46
-------- --------
55 55
#123651 1123651
+ #98# => + 7981
------------ -----------
1131632 1131632
Применяются стандартные правила игры в гольф
code-golf
arithmetic
integer
Луис Фелипе Де Иисус Муньос
источник
источник
=
обменом сторон ? напр.579=1#3+45#
Ответы:
Брахилог ,
2216 байтПопробуйте онлайн!
-6 байт благодаря @Fatelize
объяснение
источник
{"#"∧Ị∋|}ᵐ²ịᵐ.k+~t
на 4 байта короче. Я не уверен, почему ты сделал что-то такое запутанное на своей карте.Ṣ
вместо"#"
которого будет сохранено еще два байта.JavaScript (ES6),
7457 байтПринимает input как
(a)(b)(result)
, где a и b - строки с.
неизвестными цифрами, а result - целое число. Возвращает массив из 2 целых чисел.Попробуйте онлайн!
комментарии
источник
-~n
не может быть простоn+1
и какF=(c,n)=>
его использовали. Теперь, когда вы добавили объяснение, все это имеет смысл.c
является третьим входом,n
не определено (и~undefined
становится-1
непохожимundefined+1
). Теперь все ясно (и не то, что я могу портировать на Java, к сожалению, именно поэтому я пытался понять это xD). PS: вчера уже проголосовали, так что я просто проголосовал за один из ваших других ответов (который я уже не голосовал, не так много доступно ...); pnull
, вручную преобразовав его в-1
. Тем не менее, Java имеет (очень) ограниченный рекурсивный предел StackOverflow, поэтому использование рекурсивного метода со случайностью, в надежде, что он окажется правильным в течение примерно 1024 рекурсивных вызовов, не будет работать в Java в любом случае. Ах хорошо. Я проголосовал за ваш совет. Хороших выходных! :)###+###=999
, ваши шансы равны 1 на 1000. Таким образом, с 1024 итерациями вы должны добиться успеха чуть чаще, чем потерпели неудачу. :)Matlab,
143134132119115 байтов-4 байта благодаря @Luismendo
Попробуйте онлайн
Довольно большой и довольно глупый. Он просто заменяет все
#
случайными цифрами, пока не найдет правильные.источник
R ,
6751 байтКачайте просто и масштабно ужасно, просто соберите все комбинации сумм. Используйте "." для неизвестных цифр. Он не будет найти такой же ответ , как тест случае с номером 4, но это даст возможный ответ, который следует букве правил , как указано.
-16 байт после формирования оглавления вывода и замены
paste
с?
оператором.Попробуйте онлайн!
источник
?
... Я думаю, что это первое. кстати, я забыл, если уже говорил вам, но мы пытаемся выдвинуть кандидатуру R на сентябрьский язык месяца - вы можете проголосовать, если еще не сделали этого.Древесный уголь , 32 байта
Попробуйте онлайн! Ссылка на подробную версию кода. Объяснение:
Переместите две строки
0
s в предопределенный пустой список,u
чтобы запустить цикл while.Повторите, пока сумма приведения значений в
u
целое число не равна желаемому результату.Создайте массив из двух входов и отобразите его.
Замените каждый
#
случайной цифрой и присвойте результат обратноu
.Вывести результат правильно выровнен. (Выравнивание по левому краю будет только
υ
для 4-байтового сохранения.)источник
Желе , 20 байт
Попробуйте онлайн!
источник
05AB1E (наследие),
2320 байтов-3 байта благодаря @Emigna .
Неизвестные цифры - это пробелы (
). Порядок ввода должен быть: ожидаемый результат; самая длинная строка; самая короткая строка.
Попробуйте онлайн .
Объяснение:
источник
Perl 6 ,
8174 байта-7 байт благодаря nwellnhof!
Попробуйте онлайн!
Блок анонимного кода, который принимает входные данные в виде строки, содержащей арифметическое выражение, например, «12 # + 45 # = 579». Заменяет каждый
#
с возможными перестановками цифр, подставляет=
с==
и находит первый достоверный результат.Объяснение:
источник
S:g[\#]=$a[$++]
вместоtrans
для 74 байт .S///
в таком синтаксисе! Благодарность!APL (Dyalog Unicode) , 22 байта
Попробуйте онлайн!
источник
Java 10,
203,198,193 байтаПопробуйте онлайн.
Объяснение:
источник
C (gcc) ,
228213203172170 байт-15 байт благодаря @ceilingcat . Я никогда не использовал
index
раньше.-10 байт благодаря @Logem . Препроцессорная магия
рефакторированный вызов
exit(0)
с параметром put.Попробуйте онлайн!
источник
-DX=c=index(v
,-DX=(c=index(v
используя ссылку TIO в моем последнем комментарии.C # .NET,
225220196 байтПорт моего Java 10 ответа .
(Я очень заржавел в C # .NET, поэтому могу определенно играть в гольф ..)
-3 байта неявно благодаря @ user82593 и новому совету C #, который он добавил .
-29 байт благодаря @hvd .
Попробуйте онлайн.
Объяснение:
источник
using System;
вместо обычного , он короче, чемnamespace System{}
.using System.*;
аналогично импорту в Java, но это не сработало. Забыл, я должен был удалить.*
часть .. Спасибо за -5 байтов.int.Parse
(-4), использоватьnew System.Random()
(+7) и удалитьusing System;
(-13), чтобы сохранить еще 10 байтов. :) Кроме того, вам не нужно.ToCharArray()
, что снимает еще 14 байтов.int.Parse
vsSystem.Int32.Parse
... Это в основном то же самое, чтоSystem.String
иstring
.. И не знал, что можно было перебрать символы без.ToCharArray()
. Спасибо за еще -24 байта. : DPython 3 ,
121155152149 байтПопробуйте онлайн!
+34 Новое решение с регулярным выражением, позволяющее обойти тот факт, что python не поддерживает числа с ведущими нулями.
-3 благодаря @ Джонатану Фреху
Старое решение не работает, если # является первым символом в любом числе (потому что eval не принимает начальные нули) и поэтому недопустимо :(
Попробуйте онлайн!
источник
PHP, 112 байт
решение для грубой грубой силы
принимает строку в качестве входных данных, останавливается на первом решении. Запустите как трубу с
-nR
или попробуйте онлайн .источник
Powershell, 91 байт
Скрипт находит все решения. Общее количество итераций равно 10 степеням числа символов
#
. Глубина рекурсии равна количеству символов#
.Тестовый скрипт:
Powershell, «Предположим, оба термина> 0» является обязательным, 110 байтов
источник