Решить ребус (4 * Зерно = Колос) - Free Pascal

Узнай цену своей работы

Формулировка задачи:

Расшифровать ребус, полученный в результате замены одинаковых букв одинаковыми цифрами. Найти также такие значения цифр, при которых сумма цифр в результате окажется наибольшей ЗЕРНО+ ЗЕРНО+ЗЕРНО+ЗЕРНО=КОЛОС

Решение задачи: «Решить ребус (4 * Зерно = Колос)»

textual
Листинг программы
var
  z, e, r, n, o, k, l, s: integer;
  max, maxk, maxo, maxl, maxs: integer;
  m: set of byte;
 
begin
  m := [];
  for z := 1 to 9 do
    if not (z in m) then
    begin
      Include(m, z);
      for e := 0 to 9 do
        if not (e in m) then
        begin
          Include(m, e);
          for r := 0 to 9 do
            if not (r in m) then
            begin
              Include(m, r);
              for n := 0 to 9 do
                if not (n in m) then
                begin
                  Include(m, n);
                  for o := 0 to 9 do
                    if not (o in m) then
                    begin
                      Include(m, o);
                      for k := 1 to 9 do
                        if not (k in m) then
                        begin
                          Include(m, k);
                          for l := 0 to 9 do
                            if not (l in m) then
                            begin
                              Include(m, l);
                              for s := 0 to 9 do
                                if not (s in m) then
                                begin
                                  Include(m, s);
                                  if 4 * (z * 10000 + e * 1000 + r * 100 + n * 10 + o) = k * 10000 + o * 1000 + l * 100 + o * 10 + s then
                                  begin
                                    if k + o + l + o + s > max then
                                    begin
                                      max := k + o + l + o + s;
                                      maxk := k; maxo := o;
                                      maxl := l; maxs := s
                                    end;
                                    WriteLn('4 * ', z, e, r, n, o, ' = ', k, o, l, o, s)
                                  end;
                                  Exclude(m, s)
                                end;
                              Exclude(m, l)
                            end;
                          Exclude(m, k)
                        end;
                      Exclude(m, o)
                    end;
                  Exclude(m, n)
                end;
              Exclude(m, r)
            end;
          Exclude(m, e)
        end;
      Exclude(m, z)
    end;
  WriteLn('Значения цифр, при которых сумма цифр в результате наибольшая:');
  WriteLn('К = ', maxk, '; О = ', maxo, '; Л = ', maxl, '; С = ', maxs);
  ReadLn
end.

Объяснение кода листинга программы

В этом коде используется рекурсивный спуск для поиска всех возможных комбинаций чисел от 1 до 9 и их разрядов (десяток, сотен, тысяч и т.д.), которые могут быть использованы для представления числа, полученного умножением числа зерна (представленного числа колоса) на 4. Затем проверяется, является ли полученное число максимальным среди всех найденных комбинаций. Если да, то запоминаются значения цифр, при которых получается это число, и выводится сообщение с этими значениями.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

11   голосов , оценка 3.818 из 5