Помогите с задачкой про Ханойские башни плиизРасписать порядок ходов для перекладывания
Помогите с задачкой про Ханойские башни плииз
Расписать порядок ходов для перекладывания 5 дисков со второго стержня на 3-ий.
Если что, 31 ход всего.
Nikita Zabijachenko
Можно каждый ход нарисовать, а не описывать?))
Игорь
ну да)
Чиверов
Валек
Выложить больше четырёх картинок нельзя((
1 ответ
Viktor Tehterev
Крутить это все в разуме - незапятнанное наказание. Проще было написать программу.
// PascalABC.NET 3.2, сборка 1417 от 28.03.2017
// Внимание! Если программка не работает, обновите версию!
type
Pinnacle=record
St:Stacklt;integergt;;
No:integer;
constructor (n:integer);
begin
St:=new Stacklt;integergt;;
No:=n
end;
end;
var
MoveNo:integer;
procedure MoveDisk(s1,s2:Pinnacle);
begin
if s1.St.Countgt;0 then begin
MoveNo+=1;
s2.St.Push(s1.St.Pop);
Writeln(MoveNo:3,': ',s2.St.Peek,' ',s1.No,' -gt; ',s2.No)
end
end;
procedure MovePinnacle(n:integer; s1,s2,s3:Pinnacle);
begin
if n=0 then exit;
MovePinnacle(n-1,s1,s3,s2);
MoveDisk(s1,s2);
MovePinnacle(n-1,s3,s2,s1);
end;
begin
var n:=5;
var p1:=new Pinnacle(1);
var p2:=new Pinnacle(2);
var p3:=new Pinnacle(3);
Range(n,1,-1).ForEach(i-gt;p2.St.Push(i));
MoveNo:=0;
MovePinnacle(n,p2,p3,p1);
end.
Итог работы
1: 1 2 -gt; 3
2: 2 2 -gt; 1
3: 1 3 -gt; 1
4: 3 2 -gt; 3
5: 1 1 -gt; 2
6: 2 1 -gt; 3
7: 1 2 -gt; 3
8: 4 2 -gt; 1
9: 1 3 -gt; 1
10: 2 3 -gt; 2
11: 1 1 -gt; 2
12: 3 3 -gt; 1
13: 1 2 -gt; 3
14: 2 2 -gt; 1
15: 1 3 -gt; 1
16: 5 2 -gt; 3
17: 1 1 -gt; 2
18: 2 1 -gt; 3
19: 1 2 -gt; 3
20: 3 1 -gt; 2
21: 1 3 -gt; 1
22: 2 3 -gt; 2
23: 1 1 -gt; 2
24: 4 1 -gt; 3
25: 1 2 -gt; 3
26: 2 2 -gt; 1
27: 1 3 -gt; 1
28: 3 2 -gt; 3
29: 1 1 -gt; 2
30: 2 1 -gt; 3
31: 1 2 -gt; 3
Иллюстрация первых 5 шагов приведена во вложении.
// PascalABC.NET 3.2, сборка 1417 от 28.03.2017
// Внимание! Если программка не работает, обновите версию!
type
Pinnacle=record
St:Stacklt;integergt;;
No:integer;
constructor (n:integer);
begin
St:=new Stacklt;integergt;;
No:=n
end;
end;
var
MoveNo:integer;
procedure MoveDisk(s1,s2:Pinnacle);
begin
if s1.St.Countgt;0 then begin
MoveNo+=1;
s2.St.Push(s1.St.Pop);
Writeln(MoveNo:3,': ',s2.St.Peek,' ',s1.No,' -gt; ',s2.No)
end
end;
procedure MovePinnacle(n:integer; s1,s2,s3:Pinnacle);
begin
if n=0 then exit;
MovePinnacle(n-1,s1,s3,s2);
MoveDisk(s1,s2);
MovePinnacle(n-1,s3,s2,s1);
end;
begin
var n:=5;
var p1:=new Pinnacle(1);
var p2:=new Pinnacle(2);
var p3:=new Pinnacle(3);
Range(n,1,-1).ForEach(i-gt;p2.St.Push(i));
MoveNo:=0;
MovePinnacle(n,p2,p3,p1);
end.
Итог работы
1: 1 2 -gt; 3
2: 2 2 -gt; 1
3: 1 3 -gt; 1
4: 3 2 -gt; 3
5: 1 1 -gt; 2
6: 2 1 -gt; 3
7: 1 2 -gt; 3
8: 4 2 -gt; 1
9: 1 3 -gt; 1
10: 2 3 -gt; 2
11: 1 1 -gt; 2
12: 3 3 -gt; 1
13: 1 2 -gt; 3
14: 2 2 -gt; 1
15: 1 3 -gt; 1
16: 5 2 -gt; 3
17: 1 1 -gt; 2
18: 2 1 -gt; 3
19: 1 2 -gt; 3
20: 3 1 -gt; 2
21: 1 3 -gt; 1
22: 2 3 -gt; 2
23: 1 1 -gt; 2
24: 4 1 -gt; 3
25: 1 2 -gt; 3
26: 2 2 -gt; 1
27: 1 3 -gt; 1
28: 3 2 -gt; 3
29: 1 1 -gt; 2
30: 2 1 -gt; 3
31: 1 2 -gt; 3
Иллюстрация первых 5 шагов приведена во вложении.
, оставишь ответ?
Похожие вопросы
-
Вопросы ответы
Новое
NEW
Статьи
Информатика
Статьи
Последние вопросы
Игорь 14 лет назад был на 8 лет моложе, чем его
Математика.
Два тела массами m1 и m2 находящие на расстоянии R друг
Физика.
В сосуде 4целых одна пятая литр воды что бы заполнить сосуд
Математика.
Двум малярам Диме И Олегу поручили выкрасить фасад дома они разделили
Разные вопросы.
найти порядковый номер 41Э если в ядре 20 нейтронов
Разные вопросы.
в ряду натуральных чисел 3, 8, 10, 24, … 18 одно
Математика.
Предприятие по производству с/хоз продукции на производство затратило 3527000 руб Валовый
Разные вопросы.
Математика, задано на каникулы. ВАРИАНТ 1004
НОМЕР 1,2,3,4,5,6,7,8.
Математика.
Имеются три конденсатора емкостью С1=1мкФ, С2=2мкФ и С3=3мкФ. Какую наименьшую емкость
Физика.
Из точки м выходят 3 луча MP MN и MK причём
Геометрия.
Облако тегов