Язык Wolfram Language

Алгебра и теория чисел

Решение разложения числа

Новая функция Groupings предоставляет эффективный метод генерирования всех возможных результатов комбинирования определённых объектов и операций. В частности, она очень полезна для решения некоторых числовых игр, таких как во французской телепрограмме "Des chiffres et des lettres", или для нахождения ответов на некоторые популярные недавние арифметические вопросы, размещённые в социальных сетях.

Определить, как получить 10, используя целые числа 1, 1, 5, 8 и четыре основные арифметические действия.

In[1]:=
Click for copyable input
ints = {1, 1, 5, 8}; ops = {Plus, Subtract, Times, Divide};

Существует 3840 возможныx комбинаций данных четырёх целых чисел и действий с двумя величинами.

In[2]:=
Click for copyable input
Length[combs = Groupings[Permutations[ints], ops -> 2, HoldForm]]
Out[2]=

Далее представлены несколько примеров.

In[3]:=
Click for copyable input
RandomSample[combs, 10]
Out[3]=

Вычислите результат комбинаций, которыe содержат деление на 0.

In[4]:=
Click for copyable input
results = Quiet@ReleaseHold[combs];

Это единственная комбинация, в итоге которой получаем 10.

In[5]:=
Click for copyable input
Cases[Thread[Equal[combs, results]], _ == 10]
Out[5]=

Наиболее частым результатом является число 13, генерированное 240 различными способами.

In[6]:=
Click for copyable input
TakeLargestBy[Tally[results], Last, 5]
Out[6]=

Родственные примеры

de en es fr ja ko pt-br zh