Решение ребуса: "4 * Дома = Район" - Free Pascal

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

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

Помогите пожалуйста с решением ребуса. ДОМА +ДОМА +ДОМА +ДОМА _______ РАЙОН В интернете нашла но код не тот.нужно написать ,как пример со(шлак*3=блок)
PROGRAM _1; 
CONST D=10; 
TYPE CIPFER=0..9; 
VAR A,P2,P4,PR,O,L,L1,S,FLAG: CIPFER; 
K,P1,P3,B,SLAK,BLOK: INTEGER; 
BEGIN 
K:=0; FLAG:=0; 
REPEAT 
PR:=K*3 DIV D; 
FOR A:=0 TO 9 DO 
IF A<>K THEN 
BEGIN 
P1:=A*3+PR; P2:=P1 DIV D; O:=P1 MOD D; 
IF(O<>A) AND (O<>K) THEN 
FOR L:=0 TO 9 DO 
IF (L<>O) AND (L<>A) AND (L<>K) THEN 
BEGIN 
P3:=L*3+P2; P4:=P3 DIV D; L1:=P3 MOD D; 
IF L1=L THEN 
FOR S:=1 TO 3 DO 
IF (S<>L) AND (S<>A) AND (S<>O) AND (S<>K) THEN 
BEGIN 
B:=S*3+P4; 
IF(B<D)AND(B<>L)AND(B<>A)AND(B<>O)AND(B<>K) THEN 
BEGIN SLAK:=S*1000+L*100+A*D+K; 
BLOK:=B*1000+L*100+O*D+K; 
WRITE (SLAK:5,'*3=',BLOK:5,' '); 
INC(FLAG); 
IF FLAG>3 THEN 
BEGIN WRITELN; FLAG:=0 
END; 
END 
END
END 
END; 
K:=K+5 
UNTIL K>5 
END.
Спасите тупенького студента....

Решение задачи: «Решение ребуса: "4 * Дома = Район"»

textual
Листинг программы
var
    d, o, m, a, r, y, n: 0..9;
    
    dig: set of 0..9;
    sum, MaxSum: Integer;
    st: string;
 
begin
    MaxSum := 0;st := '';
    for d := 0 to 9 do 
    begin
        include(dig, d);
        for o := 0 to 9 do 
            if not (o in dig) then begin
                include(dig, o);
                for m := 0 to 9 do 
                    if not (m in dig) then begin
                        include(dig, m);
                        for a := 0 to 9 do 
                            if not (a in dig) then begin
                                include(dig, a);
                                for r := 0 to 9 do 
                                    if not (r in dig) then begin
                                        include(dig, r);
                                        for y := 0 to 9 do 
                                            if not (y in dig) then begin
                                                include(dig, y);
                                                for n := 0 to 9 do 
                                                    if not (n in dig) then begin
                                                        include(dig, n); 
                                                        if ((1000 * d + 100 * o + 10 * m + a) * 3 = 10000 * r + 1000 * a + 100 * y + 10 * o + n) and (r<>0) then
                                                        begin
                                                            writeln('3*', d, o, m, a, '=', r, a, y, o, n);
                                                        end;
                                                        exclude(dig, n);
                                                    end;
                                                exclude(dig, y);
                                            end;
                                        exclude(dig, r);
                                    end;
                                exclude(dig, a);
                            end;
                        exclude(dig, m);
                    end;
                exclude(dig, o);
            end;
        exclude(dig, d);
    end;   
end.

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

Код решает ребус 4 * Дома = Район

  1. Переменные:
    • d, o, m, a, r, y, n: 0..9 - представляют цифры, которые могут быть использованы в решении ребуса
    • dig: set of 0..9 - множество, которое содержит все возможные цифры
    • MaxSum: Integer - максимальная сумма цифр, которые могут быть использованы в решении ребуса
    • st: string - строка, которая будет содержать решение ребуса
  2. Перебираются все возможные комбинации цифр для каждой позиции в ребусе:
    • Первая позиция: перебираются все цифры от 0 до 9, которые не входят в текущее множество dig
    • Вторая позиция: перебираются все цифры от 0 до 9, которые не входят в текущее множество dig и не являются текущей цифрой на первой позиции
    • Третья позиция: перебираются все цифры от 0 до 9, которые не входят в текущее множество dig, не являются текущей цифрой на первой и второй позициях
    • Четвертая позиция: перебираются все цифры от 0 до 9, которые не входят в текущее множество dig, не являются текущей цифрой на первой, второй и третьей позициях
    • Проверяется условие из ребуса: (1000 d + 100 o + 10 m + a) 3 = 10000 r + 1000 a + 100 y + 10 o + n
    • Если условие выполняется и r не равно 0, то выводится решение ребуса
  3. В конце кода выводится решение ребуса, если оно было найдено

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


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

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

15   голосов , оценка 4.067 из 5