Добавлен модуль МозаикаABC.pas В NUnitABC в InitPABCSystem добавлена установка кодировки В Robot добавлено 5 задач на break
2774 lines
64 KiB
ObjectPascal
2774 lines
64 KiB
ObjectPascal
// Copyright (c) Ivan Bondarev, Stanislav Mikhalkovich (for details please see \doc\copyright.txt)
|
||
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
|
||
unit RobotZadan;
|
||
|
||
interface
|
||
|
||
procedure a1;
|
||
procedure a2;
|
||
procedure a3;
|
||
procedure a4;
|
||
|
||
procedure c1;
|
||
procedure c2;
|
||
procedure c3;
|
||
procedure c4;
|
||
procedure c5;
|
||
procedure c6;
|
||
procedure c7;
|
||
procedure c8;
|
||
procedure c9;
|
||
procedure c10;
|
||
procedure c11;
|
||
procedure c12;
|
||
procedure c13;
|
||
procedure c14;
|
||
procedure c15;
|
||
procedure c16;
|
||
|
||
procedure if1;
|
||
procedure if2;
|
||
procedure if3;
|
||
procedure if4;
|
||
procedure if5;
|
||
procedure if6;
|
||
procedure if7;
|
||
procedure if8;
|
||
procedure if9;
|
||
procedure if10;
|
||
procedure if11;
|
||
|
||
procedure w1;
|
||
procedure w2;
|
||
procedure w3;
|
||
procedure w4;
|
||
procedure w5;
|
||
procedure w6;
|
||
procedure w7;
|
||
procedure w8;
|
||
procedure w9;
|
||
procedure w10;
|
||
procedure w11;
|
||
procedure w12;
|
||
procedure w13;
|
||
procedure w14;
|
||
procedure w15;
|
||
procedure w16;
|
||
procedure w17;
|
||
|
||
procedure cif1;
|
||
procedure cif2;
|
||
procedure cif3;
|
||
procedure cif4;
|
||
procedure cif5;
|
||
procedure cif6;
|
||
procedure cif7;
|
||
procedure cif8;
|
||
procedure cif9;
|
||
procedure cif10;
|
||
procedure cif11;
|
||
procedure cif12;
|
||
procedure cif13;
|
||
procedure cif14;
|
||
procedure cif15;
|
||
procedure cif16;
|
||
procedure cif17;
|
||
procedure cif18;
|
||
procedure cif19;
|
||
procedure cif20;
|
||
procedure cif21;
|
||
procedure cif22;
|
||
|
||
procedure count1;
|
||
procedure count2;
|
||
procedure count3;
|
||
procedure count4;
|
||
procedure count5;
|
||
procedure count6;
|
||
procedure count7;
|
||
procedure count8;
|
||
procedure count9;
|
||
procedure count10;
|
||
procedure count11;
|
||
procedure count12;
|
||
procedure count13;
|
||
procedure count14;
|
||
procedure count15;
|
||
procedure count16;
|
||
procedure count17;
|
||
|
||
procedure cc1;
|
||
procedure cc2;
|
||
procedure cc3;
|
||
procedure cc4;
|
||
procedure cc5;
|
||
procedure cc6;
|
||
procedure cc7;
|
||
procedure cc8;
|
||
procedure cc9;
|
||
procedure cc10;
|
||
procedure cc11;
|
||
procedure cc12;
|
||
procedure cc13;
|
||
procedure cc14;
|
||
procedure cc15;
|
||
procedure cc16;
|
||
procedure cc17;
|
||
procedure cc18;
|
||
procedure cc19;
|
||
|
||
procedure mix1;
|
||
procedure mix2;
|
||
procedure mix3;
|
||
procedure mix4;
|
||
procedure mix5;
|
||
procedure mix6;
|
||
procedure mix7;
|
||
procedure mix8;
|
||
procedure mix9;
|
||
procedure mix10;
|
||
|
||
procedure p1;
|
||
procedure p2;
|
||
procedure p3;
|
||
procedure p4;
|
||
procedure p5;
|
||
procedure p6;
|
||
procedure p7;
|
||
procedure p8;
|
||
procedure p9;
|
||
procedure p10;
|
||
procedure p11;
|
||
procedure p12;
|
||
procedure p13;
|
||
procedure p14;
|
||
procedure p15;
|
||
|
||
procedure ps1;
|
||
procedure ps2;
|
||
procedure ps3;
|
||
|
||
procedure pp1;
|
||
procedure pp2;
|
||
procedure pp3;
|
||
procedure pp4;
|
||
procedure pp5;
|
||
procedure pp6;
|
||
procedure pp7;
|
||
procedure pp8;
|
||
|
||
procedure br1;
|
||
procedure br2;
|
||
procedure br3;
|
||
procedure br4;
|
||
procedure br5;
|
||
|
||
procedure examen1;
|
||
procedure examen2;
|
||
procedure examen3;
|
||
procedure examen4;
|
||
procedure examen5;
|
||
procedure examen6;
|
||
procedure examen7;
|
||
procedure examen8;
|
||
procedure examen9;
|
||
procedure examen10;
|
||
|
||
///--
|
||
procedure __InitModule__;
|
||
|
||
implementation
|
||
|
||
uses RobotTaskMaker;
|
||
|
||
procedure HorizontalWall(x,y,len: integer);
|
||
begin
|
||
RobotTaskMaker.HorizontalWall(x-1,y,len);
|
||
end;
|
||
|
||
procedure VerticalWall(x,y,len: integer);
|
||
begin
|
||
RobotTaskMaker.VerticalWall(x,y-1,len);
|
||
end;
|
||
|
||
procedure a1;
|
||
begin
|
||
TaskText('Задание a1. Закрасить помеченные клетки');
|
||
Field(7,4);
|
||
RobotBeginEnd(2,2,1,1);
|
||
HorizontalWall(1,1,5);
|
||
TagRect(2,1,5,1);
|
||
end;
|
||
|
||
procedure a2;
|
||
var n: integer;
|
||
begin
|
||
TaskText('Задание a2. Закрасить помеченные клетки');
|
||
n:=3;
|
||
Field(n,n);
|
||
RobotBeginEnd(1,1,1,1);
|
||
TagRect(1,1,n,1);
|
||
TagRect(n,1,n,n);
|
||
TagRect(1,n,n,n);
|
||
TagRect(1,1,1,n);
|
||
end;
|
||
|
||
procedure a3;
|
||
begin
|
||
TaskText('Задание a3. Закрасить помеченные клетки');
|
||
Field(4,2);
|
||
RobotBeginEnd(1,1,4,1);
|
||
TagRect(1,1,4,2);
|
||
VerticalWall(1,1,1);
|
||
VerticalWall(3,1,1);
|
||
VerticalWall(2,2,1);
|
||
end;
|
||
|
||
procedure a4;
|
||
begin
|
||
TaskText('Задание a4. Закрасить помеченные клетки');
|
||
Field(4,3);
|
||
RobotBeginEnd(1,3,1,3);
|
||
Tag(2,3);Tag(3,3);Tag(4,3);
|
||
VerticalWall(1,2,2);
|
||
VerticalWall(2,2,2);
|
||
VerticalWall(3,2,2);
|
||
end;
|
||
|
||
procedure c1;
|
||
begin
|
||
TaskText('Задание c1. Дойти до правой клетки');
|
||
Field(11,1);
|
||
RobotBeginEnd(1,1,11,1);
|
||
end;
|
||
|
||
procedure c2;
|
||
begin
|
||
TaskText('Задание c2. Закрасить помеченные клетки');
|
||
Field(11,1);
|
||
RobotBeginEnd(1,1,11,1);
|
||
TagRect(1,1,10,1);
|
||
end;
|
||
|
||
procedure c3;
|
||
begin
|
||
TaskText('Задание c3. Закрасить помеченные клетки');
|
||
Field(11,1);
|
||
RobotBeginEnd(1,1,11,1);
|
||
TagRect(2,1,11,1);
|
||
end;
|
||
|
||
procedure c4;
|
||
begin
|
||
TaskText('Задание c4. Закрасить помеченные клетки');
|
||
Field(11,1);
|
||
RobotBeginEnd(1,1,11,1);
|
||
TagRect(1,1,11,1);
|
||
end;
|
||
|
||
procedure c5;
|
||
begin
|
||
TaskText('Задание c5. Закрасить помеченные клетки');
|
||
Field(11,11);
|
||
RobotBeginEnd(1,1,11,11);
|
||
for var i:=1 to 10 do
|
||
Tag(i,i);
|
||
end;
|
||
|
||
procedure c6;
|
||
begin
|
||
TaskText('Задание c6. Закрасить помеченные клетки');
|
||
Field(17,1);
|
||
RobotBeginEnd(17,1,17,1);
|
||
for var i:=1 to 8 do
|
||
Tag(2*i,1);
|
||
end;
|
||
|
||
procedure c7;
|
||
begin
|
||
TaskText('Задание c7. Закрасить помеченные клетки');
|
||
Field(11,2);
|
||
RobotBeginEnd(11,1,1,1);
|
||
TagRect(2,1,11,2);
|
||
for var i:=1 to 5 do
|
||
begin
|
||
VerticalWall(2*i,1,1);
|
||
VerticalWall(2*i-1,2,1);
|
||
end
|
||
end;
|
||
|
||
procedure c8;
|
||
begin
|
||
TaskText('Задание c8. Закрасить помеченные клетки');
|
||
Field(11,2);
|
||
RobotBeginEnd(11,1,1,1);
|
||
TagRect(1,1,11,1);
|
||
for var i:=1 to 10 do
|
||
VerticalWall(i,1,1);
|
||
end;
|
||
|
||
procedure c9;
|
||
begin
|
||
TaskText('Задание c9. Закрасить помеченные клетки');
|
||
Field(11,2);
|
||
RobotBeginEnd(1,2,11,2);
|
||
for var i:=1 to 5 do
|
||
begin
|
||
Tag(2*i,1);
|
||
Tag(2*i-1,2);
|
||
end
|
||
end;
|
||
|
||
procedure c10;
|
||
begin
|
||
TaskText('Задание c10. Закрасить помеченные клетки');
|
||
Field(11,2);
|
||
RobotBeginEnd(1,1,1,2);
|
||
TagRect(1,1,10,2);
|
||
HorizontalWall(1,1,10);
|
||
end;
|
||
|
||
procedure c11;
|
||
begin
|
||
TaskText('Задание c11. Закрасить помеченные клетки');
|
||
Field(10,2);
|
||
RobotBeginEnd(10,1,10,2);
|
||
HorizontalWall(2,1,9);
|
||
TagRect(1,1,10,2);
|
||
end;
|
||
|
||
procedure c12;
|
||
begin
|
||
TaskText('Задание c12. Закрасить помеченные клетки');
|
||
Field(11,1);
|
||
RobotBeginEnd(6,1,6,1);
|
||
TagRect(1,1,11,1);
|
||
end;
|
||
|
||
procedure c13;
|
||
begin
|
||
TaskText('Задание c13. Закрасить помеченные клетки');
|
||
Field(9,9);
|
||
RobotBeginEnd(9,1,9,1);
|
||
TagRect(1,1,9,1);
|
||
TagRect(1,9,9,9);
|
||
TagRect(1,1,1,9);
|
||
TagRect(9,1,9,9);
|
||
end;
|
||
|
||
procedure c14;
|
||
begin
|
||
TaskText('Задание c14. Закрасить помеченные клетки');
|
||
Field(9,9);
|
||
RobotBeginEnd(1,5,1,5);
|
||
Tag(5,1); Tag(4,2); Tag(3,3); Tag(2,4);
|
||
Tag(1,5); Tag(2,6); Tag(3,7); Tag(4,8);
|
||
Tag(5,9); Tag(6,8); Tag(7,7); Tag(8,6);
|
||
Tag(9,5); Tag(8,4); Tag(7,3); Tag(6,2);
|
||
end;
|
||
|
||
procedure c15;
|
||
begin
|
||
TaskText('Задание c15. Закрасить помеченные клетки');
|
||
Field(11,11);
|
||
RobotBeginEnd(6,6,6,6);
|
||
TagRect(6,1,6,11);
|
||
TagRect(1,6,11,6);
|
||
end;
|
||
|
||
procedure c16;
|
||
begin
|
||
TaskText('Задание c16. Закрасить помеченные клетки');
|
||
Field(12,3);
|
||
RobotBeginEnd(2,2,2,2);
|
||
TagRect(2,2,11,2);
|
||
for var i:=1 to 5 do
|
||
begin
|
||
HorizontalWall(2*i,1,1);
|
||
HorizontalWall(1+2*i,2,1);
|
||
VerticalWall(2*i,2,1);
|
||
VerticalWall(1+2*i,2,1);
|
||
end;
|
||
VerticalWall(1,2,1);
|
||
end;
|
||
|
||
procedure if1;
|
||
begin
|
||
TaskText('Задание if1. Обойти препятствие и закрасить клетку');
|
||
Field(5,5);
|
||
RobotBeginEnd(2,3,4,3);
|
||
Tag(4,3);
|
||
VerticalWall(3,3,1);
|
||
var r:=random(2);
|
||
if r=0 then
|
||
begin
|
||
HorizontalWall(3,2,1);
|
||
VerticalWall(2,1,2);
|
||
end
|
||
else
|
||
begin
|
||
HorizontalWall(3,3,1);
|
||
VerticalWall(2,4,2);
|
||
end;
|
||
end;
|
||
|
||
procedure if2;
|
||
var r1,r2,r3,r4: integer;
|
||
begin
|
||
TaskText('Задание if2. Закрасить клетки у стен (стены могут быть независимо слева, справа, сверху и снизу)');
|
||
Field(5,5);
|
||
RobotBeginEnd(3,3,3,3);
|
||
r1:=random(2);
|
||
r2:=random(2);
|
||
r3:=random(2);
|
||
r4:=random(2);
|
||
Tag(3,3);
|
||
if r1=0 then
|
||
begin
|
||
Tag(3,2);
|
||
HorizontalWall(3,1,1);
|
||
end;
|
||
if r2=0 then
|
||
begin
|
||
Tag(2,3);
|
||
VerticalWall(1,3,1);
|
||
end;
|
||
if r3=0 then
|
||
begin
|
||
Tag(3,4);
|
||
HorizontalWall(3,4,1);
|
||
end;
|
||
if r4=0 then
|
||
begin
|
||
Tag(4,3);
|
||
VerticalWall(4,3,1);
|
||
end;
|
||
end;
|
||
|
||
procedure if3;
|
||
var n,r: integer;
|
||
begin
|
||
TaskText('Задание if3. Закрасить клетку в противоположном углу (Робот может находиться в любом из углов)');
|
||
n:=2;
|
||
Field(n,n);
|
||
r:=random(4);
|
||
if r=0 then
|
||
begin
|
||
RobotBegin(1,1);
|
||
Tag(n,n);
|
||
RobotEnd(n,n);
|
||
end;
|
||
if r=1 then
|
||
begin
|
||
RobotBegin(1,n);
|
||
Tag(n,1);
|
||
RobotEnd(n,1);
|
||
end;
|
||
if r=2 then
|
||
begin
|
||
RobotBegin(n,1);
|
||
Tag(1,n);
|
||
RobotEnd(1,n);
|
||
end;
|
||
if r=3 then
|
||
begin
|
||
RobotBegin(n,n);
|
||
Tag(1,1);
|
||
RobotEnd(1,1);
|
||
end;
|
||
end;
|
||
|
||
procedure if4;
|
||
var r: integer;
|
||
begin
|
||
TaskText('Задание if4. Закрасить клетку, противоположную стене (стена может располагаться слева, справа, сверху или снизу)');
|
||
Field(5,5);
|
||
RobotBegin(3,3);
|
||
r:=random(4);
|
||
if r=0 then
|
||
begin
|
||
Tag(2,3);
|
||
RobotEnd(2,3);
|
||
VerticalWall(3,3,1);
|
||
end;
|
||
if r=1 then
|
||
begin
|
||
Tag(4,3);
|
||
RobotEnd(4,3);
|
||
VerticalWall(2,3,1);
|
||
end;
|
||
if r=2 then
|
||
begin
|
||
Tag(3,2);
|
||
RobotEnd(3,2);
|
||
HorizontalWall(3,3,1);
|
||
end;
|
||
if r=3 then
|
||
begin
|
||
Tag(3,4);
|
||
RobotEnd(3,4);
|
||
HorizontalWall(3,2,1);
|
||
end;
|
||
end;
|
||
|
||
procedure if5;
|
||
var r: integer;
|
||
begin
|
||
TaskText('Задание if5. Закрасить клетки в зависимости от наличия стены (стена может располагаться слева, справа, сверху или снизу)');
|
||
Field(5,5);
|
||
RobotBeginEnd(3,3,3,3);
|
||
r:=random(4);
|
||
if r=0 then
|
||
begin
|
||
Tag(2,3);
|
||
Tag(4,3);
|
||
HorizontalWall(3,2,1);
|
||
end;
|
||
if r=1 then
|
||
begin
|
||
Tag(2,3);
|
||
Tag(4,3);
|
||
HorizontalWall(3,3,1);
|
||
end;
|
||
if r=2 then
|
||
begin
|
||
Tag(3,2);
|
||
Tag(3,4);
|
||
VerticalWall(3,3,1);
|
||
end;
|
||
if r=3 then
|
||
begin
|
||
Tag(3,2);
|
||
Tag(3,4);
|
||
VerticalWall(2,3,1);
|
||
end;
|
||
end;
|
||
|
||
procedure if6;
|
||
var r: integer;
|
||
begin
|
||
TaskText('Задание if6. Закрасить клетку, противоположную закрашенной (закрашенная клетка может находиться слева, справа, сверху или снизу)');
|
||
Field(5,5);
|
||
RobotBegin(3,3);
|
||
r:=random(4);
|
||
if r=0 then
|
||
begin
|
||
Tag(2,3);
|
||
RobotEnd(2,3);
|
||
MarkPainted(4,3);
|
||
end;
|
||
if r=1 then
|
||
begin
|
||
Tag(4,3);
|
||
RobotEnd(4,3);
|
||
MarkPainted(2,3);
|
||
end;
|
||
if r=2 then
|
||
begin
|
||
Tag(3,2);
|
||
RobotEnd(3,2);
|
||
MarkPainted(3,4);
|
||
end;
|
||
if r=3 then
|
||
begin
|
||
Tag(3,4);
|
||
RobotEnd(3,4);
|
||
MarkPainted(3,2);
|
||
end;
|
||
end;
|
||
|
||
procedure if7;
|
||
var r: integer;
|
||
begin
|
||
TaskText('Задание if7. Закрасить клетку, противоположную углу');
|
||
Field(4,4);
|
||
r:=random(4);
|
||
if r=0 then
|
||
begin
|
||
Tag(3,3);
|
||
RobotBeginEnd(2,2,3,3);
|
||
VerticalWall(1,2,1);
|
||
HorizontalWall(2,1,1);
|
||
end;
|
||
if r=1 then
|
||
begin
|
||
Tag(2,2);
|
||
RobotBeginEnd(3,3,2,2);
|
||
VerticalWall(3,3,1);
|
||
HorizontalWall(3,3,1);
|
||
end;
|
||
if r=2 then
|
||
begin
|
||
Tag(2,3);
|
||
RobotBeginEnd(3,2,2,3);
|
||
VerticalWall(3,2,1);
|
||
HorizontalWall(3,1,1);
|
||
end;
|
||
if r=3 then
|
||
begin
|
||
Tag(3,2);
|
||
RobotBeginEnd(2,3,3,2);
|
||
VerticalWall(1,3,1);
|
||
HorizontalWall(2,3,1);
|
||
end;
|
||
end;
|
||
|
||
procedure if8;
|
||
var r1,r2: integer;
|
||
begin
|
||
TaskText('Задание if8. Закрасить клетки, используя вложенные операторы if');
|
||
Field(6,6);
|
||
RobotBeginEnd(2,2,3,3);
|
||
r1:=random(2);
|
||
r2:=random(2);
|
||
if r1=0 then
|
||
begin
|
||
Tag(3,2);
|
||
Tag(4,2);
|
||
VerticalWall(1,2,1);
|
||
if r2=0 then
|
||
begin
|
||
VerticalWall(4,2,1);
|
||
RobotEnd(4,2);
|
||
end
|
||
else
|
||
begin
|
||
RobotEnd(5,2);
|
||
Tag(5,2);
|
||
end;
|
||
end
|
||
else
|
||
begin
|
||
Tag(2,3);
|
||
Tag(2,4);
|
||
HorizontalWall(2,1,1);
|
||
if r2=0 then
|
||
begin
|
||
HorizontalWall(2,4,1);
|
||
RobotEnd(2,4);
|
||
end
|
||
else
|
||
begin
|
||
RobotEnd(2,5);
|
||
Tag(2,5);
|
||
end;
|
||
end;
|
||
end;
|
||
|
||
procedure if9;
|
||
var r: integer;
|
||
begin
|
||
TaskText('Задание if9. Закрасить клетки в зависимости от наличия стен слева и справа');
|
||
Field(5,5);
|
||
RobotBeginEnd(3,3,3,3);
|
||
r:=random(4);
|
||
if r=0 then
|
||
begin
|
||
Tag(3,2);
|
||
Tag(3,4);
|
||
HorizontalWall(2,2,1);
|
||
HorizontalWall(4,3,1);
|
||
end;
|
||
if r=1 then
|
||
begin
|
||
Tag(3,3);
|
||
HorizontalWall(2,2,1);
|
||
end;
|
||
if r=2 then
|
||
begin
|
||
Tag(3,3);
|
||
HorizontalWall(4,3,1);
|
||
end;
|
||
if r=3 then
|
||
begin
|
||
Tag(3,3);
|
||
end;
|
||
end;
|
||
|
||
procedure if10;
|
||
var r: integer;
|
||
begin
|
||
TaskText('Задание if10. Закрасить клетки в зависимости от наличия закрашенных клеток слева и справа');
|
||
Field(5,5);
|
||
RobotBeginEnd(3,3,3,3);
|
||
r:=random(4);
|
||
if r=0 then
|
||
begin
|
||
Tag(3,2);
|
||
MarkPainted(2,3);
|
||
end;
|
||
if r=1 then
|
||
begin
|
||
Tag(3,2);
|
||
MarkPainted(4,3);
|
||
end;
|
||
if r=2 then
|
||
begin
|
||
Tag(3,2);
|
||
MarkPainted(4,3);
|
||
MarkPainted(2,3);
|
||
end;
|
||
if r=3 then
|
||
Tag(3,3);
|
||
end;
|
||
|
||
procedure if11;
|
||
var r: integer;
|
||
begin
|
||
TaskText('Задание if11. Закрасить первую незакрашенную клетку справа');
|
||
Field(5,5);
|
||
RobotBeginEnd(2,2,4,2);
|
||
r:=random(3);
|
||
if r=0 then
|
||
begin
|
||
Tag(3,2);
|
||
end;
|
||
if r=1 then
|
||
begin
|
||
Tag(3,3);
|
||
MarkPainted(3,2);
|
||
end;
|
||
if r=2 then
|
||
begin
|
||
Tag(3,4);
|
||
MarkPainted(3,2);
|
||
MarkPainted(3,3);
|
||
end;
|
||
end;
|
||
|
||
procedure w1;
|
||
var n: integer;
|
||
begin
|
||
TaskText('Задание w1. Пройти коридор переменной длины');
|
||
n:=random(7)+8;
|
||
Field(n,1);
|
||
RobotBeginEnd(1,1,n,1);
|
||
end;
|
||
|
||
procedure w2;
|
||
var n: integer;
|
||
begin
|
||
TaskText('Задание w2. Закрасить коридор переменной длины');
|
||
n:=random(7)+8;
|
||
Field(n,1);
|
||
RobotBeginEnd(1,1,n,1);
|
||
TagRect(1,1,n,1);
|
||
end;
|
||
|
||
procedure w3;
|
||
var n: integer;
|
||
begin
|
||
TaskText('Задание w3. Дойти до конца стены переменной длины');
|
||
n:=random(8)+3;
|
||
Field(12,3);
|
||
RobotBeginEnd(1,1,n+1,1);
|
||
HorizontalWall(1,1,n);
|
||
end;
|
||
|
||
procedure w4;
|
||
var n: integer;
|
||
begin
|
||
TaskText('Задание w4. Дойти до конца закрашенного ряда переменной длины');
|
||
n:=random(7)+3;
|
||
Field(10,3);
|
||
RobotBeginEnd(2,2,n+1,2);
|
||
for var i:=3 to n do
|
||
MarkPainted(i,2);
|
||
end;
|
||
|
||
procedure w5;
|
||
var n,m: integer;
|
||
begin
|
||
TaskText('Задание w5. Дойти до правого нижнего угла закрашенного прямоугольника переменного размера');
|
||
n:=random(7)+3;
|
||
m:=random(6)+3;
|
||
Field(10,9);
|
||
RobotBeginEnd(2,2,n,m);
|
||
for var j:=2 to m do
|
||
for var i:=2 to n do
|
||
MarkPainted(i,j);
|
||
end;
|
||
|
||
procedure w6;
|
||
var n,m: integer;
|
||
begin
|
||
TaskText('Задание w6. Найти в стене проход и попасть в правый нижний угол');
|
||
n:=random(7)+2;
|
||
m:=random(12)+2;
|
||
Field(15,10);
|
||
RobotBeginEnd(1,1,15,10);
|
||
HorizontalWall(1,n,m-1);
|
||
HorizontalWall(m+1,n,15-m);
|
||
end;
|
||
|
||
procedure w7;
|
||
var n,m,k: integer;
|
||
begin
|
||
TaskText('Задание w7. Дойти до третьей закрашенной клетки. После первой закрашенной клетки надо идти вверх, после второй - вправо');
|
||
n:=random(7)+2;
|
||
m:=random(7)+1;
|
||
k:=random(7)+1;
|
||
Field(15,10);
|
||
RobotBeginEnd(1,8,n+k,8-m);
|
||
MarkPainted(n,8);
|
||
MarkPainted(n,8-m);
|
||
MarkPainted(n+k,8-m);
|
||
end;
|
||
|
||
procedure w8;
|
||
var n1,n2,len: integer;
|
||
begin
|
||
TaskText('Задание w8. Закрасить все клетки над стеной переменной длины');
|
||
n1:=random(3)+2;
|
||
n2:=n1+random(4);
|
||
len:=random(5)+4;
|
||
Field(13,5);
|
||
RobotBeginEnd(n2,2,n1-1,2);
|
||
HorizontalWall(n1,2,len);
|
||
TagRect(n1,2,n1+len-1,2);
|
||
end;
|
||
|
||
procedure w9;
|
||
var n: integer;
|
||
begin
|
||
TaskText('Задание w9. Перепрыгнуть стену с закрашиванием');
|
||
n:=random(7)+2;
|
||
Field(15,10);
|
||
RobotBeginEnd(7,10,8,10);
|
||
VerticalWall(7,11-n,n);
|
||
TagRect(7,10-n,8,10);
|
||
end;
|
||
|
||
procedure w10;
|
||
var n1,n2,r1,r2: integer;
|
||
begin
|
||
TaskText('Задание w10. Обойти препятствия');
|
||
n1:=random(7)+2;
|
||
n2:=random(7)+2;
|
||
r1:=4+random(3);
|
||
r2:=9+random(3);
|
||
Field(15,10);
|
||
RobotBeginEnd(1,10,15,10);
|
||
VerticalWall(r1,11-n1,n1);
|
||
TagRect(r1,10-n1,r1+1,10);
|
||
VerticalWall(r2,11-n2,n2);
|
||
TagRect(r2,10-n2,r2+1,10);
|
||
end;
|
||
|
||
procedure w11;
|
||
var n1,len: integer;
|
||
begin
|
||
TaskText('Задание w11. Закрасить все клетки вокруг стены');
|
||
n1:=random(3)+3;
|
||
len:=random(5)+4;
|
||
Field(15,5);
|
||
RobotBeginEnd(n1-1,2,n1-1,2);
|
||
HorizontalWall(n1,2,len);
|
||
TagRect(n1-1,2,n1+len,3);
|
||
end;
|
||
|
||
procedure w12;
|
||
var n1,n2,len1,len2: integer;
|
||
begin
|
||
TaskText('Задание w12. Закрасить все клетки вокруг прямоугольника');
|
||
n1:=random(3)+3;
|
||
len1:=random(5)+4;
|
||
n2:=random(3)+3;
|
||
len2:=random(5)+4;
|
||
Field(14,14);
|
||
RobotBeginEnd(n1-1,n2,n1-1,n2);
|
||
HorizontalWall(n1,n2,len1);
|
||
HorizontalWall(n1,n2+len2,len1);
|
||
VerticalWall(n1-1,n2+1,len2);
|
||
VerticalWall(n1-1+len1,n2+1,len2);
|
||
TagRect(n1-1,n2,n1+len1,n2);
|
||
TagRect(n1-1,n2+len2+1,n1+len1,n2+len2+1);
|
||
TagRect(n1-1,n2,n1-1,n2+len2);
|
||
TagRect(n1+len1,n2,n1+len1,n2+len2);
|
||
end;
|
||
|
||
procedure w13;
|
||
var n,m: integer;
|
||
begin
|
||
TaskText('Задание w13. Подняться до клетки, имеющей проход налево или проход направо');
|
||
n:=random(7)+2;
|
||
Field(5,10);RobotBegin(3,10);
|
||
VerticalWall(2,9,2);
|
||
VerticalWall(3,9,2);
|
||
RobotEnd(3,10-n-1);
|
||
for var i:=0 to n-2 do
|
||
begin
|
||
m:=random(3);
|
||
if m=0 then VerticalWall(2,10-n+i,1);
|
||
if m=1 then VerticalWall(3,10-n+i,1);
|
||
if m=2 then
|
||
begin
|
||
VerticalWall(2,10-n+i,1);
|
||
VerticalWall(3,10-n+i,1);
|
||
end;
|
||
if m<>2 then
|
||
RobotEnd(3,10-n+i);
|
||
end;
|
||
end;
|
||
|
||
procedure w14;
|
||
var n,m: integer;
|
||
begin
|
||
TaskText('Задание w14. Подняться до клетки, имеющей проход налево и проход направо');
|
||
n:=random(7)+2;
|
||
Field(5,10);RobotBegin(3,10);
|
||
VerticalWall(2,9,2); VerticalWall(3,9,2);
|
||
RobotEnd(3,10-n-1);
|
||
for var i:=0 to n-2 do
|
||
begin
|
||
m:=random(4);
|
||
if m=0 then
|
||
VerticalWall(2,10-n+i,1);
|
||
if m=1 then
|
||
VerticalWall(3,10-n+i,1);
|
||
if m=2 then
|
||
begin
|
||
VerticalWall(2,10-n+i,1);
|
||
VerticalWall(3,10-n+i,1);
|
||
end;
|
||
if m=3 then
|
||
RobotEnd(3,10-n+i);
|
||
end;
|
||
end;
|
||
|
||
procedure w15;
|
||
var n,z: integer;
|
||
begin
|
||
TaskText('Задание w15. Закрасить клетку под первой закрашенной клеткой, под которой свободно');
|
||
Field(15,5);
|
||
RobotBegin(2,3);
|
||
HorizontalWall(2,3,2);
|
||
z:=14;
|
||
MarkPainted(14,3);
|
||
for var i:=3 to 12 do
|
||
begin
|
||
n:=random(4);
|
||
if n=0 then
|
||
begin
|
||
MarkPainted(16-i,3);
|
||
z:=16-i;
|
||
end;
|
||
if n=1 then
|
||
begin
|
||
MarkPainted(16-i,3);
|
||
HorizontalWall(16-i,3,1);
|
||
end;
|
||
if n=2 then
|
||
HorizontalWall(16-i,3,1);
|
||
end;
|
||
RobotEnd(z,4);
|
||
Tag(z,4);
|
||
end;
|
||
|
||
procedure w16;
|
||
var n: integer;
|
||
begin
|
||
TaskText('Задание w16. Идти до конца забора переменной длины');
|
||
n:=random(6)+8;
|
||
Field(15,5);
|
||
RobotBeginEnd(2,3,n+1,3);
|
||
for var i:=2 to n do
|
||
VerticalWall(i,3,1);
|
||
end;
|
||
|
||
procedure w17;
|
||
var n: integer;
|
||
begin
|
||
TaskText('Задание w17. Идти до конца забора переменной длины');
|
||
n:=random(6)+1;
|
||
Field(15,5);
|
||
RobotBeginEnd(2,3,2*n+1,3);
|
||
for var i:=1 to n do
|
||
VerticalWall(2*i,3,1);
|
||
end;
|
||
|
||
procedure cif1;
|
||
var n,r: integer;
|
||
begin
|
||
TaskText('Задание cif1. Закрасить все клетки под стенами');
|
||
n:=14;
|
||
Field(n,3);
|
||
RobotBeginEnd(1,2,n-1,2);
|
||
VerticalWall(n-1,2,1);
|
||
for var i:=2 to n-1 do
|
||
begin
|
||
r:=random(2);
|
||
if r=1 then
|
||
begin
|
||
HorizontalWall(i,1,1);
|
||
Tag(i,2);
|
||
end;
|
||
end;
|
||
end;
|
||
|
||
procedure cif2;
|
||
var n,r: integer;
|
||
begin
|
||
TaskText('Задание cif2. Закрасить помеченные клетки');
|
||
n:=14;
|
||
Field(n,3);
|
||
RobotBeginEnd(1,2,n-1,2);
|
||
VerticalWall(n-1,2,1);
|
||
for var i:=2 to n-1 do
|
||
begin
|
||
r:=random(3);
|
||
if r=1 then
|
||
begin
|
||
HorizontalWall(i,1,1);
|
||
Tag(i,2);
|
||
end;
|
||
if r=2 then
|
||
begin
|
||
HorizontalWall(i,2,1);
|
||
Tag(i,2);
|
||
end;
|
||
end;
|
||
end;
|
||
|
||
procedure cif3;
|
||
var n,r: integer;
|
||
begin
|
||
TaskText('Задание cif3. Закрасить помеченные клетки');
|
||
n:=25;
|
||
Field(n,3);
|
||
RobotBeginEnd(1,2,n-1,2);
|
||
VerticalWall(n-1,2,1);
|
||
for var i:=2 to n-1 do
|
||
begin
|
||
r:=random(4);
|
||
if r=1 then
|
||
begin
|
||
HorizontalWall(i,1,1);
|
||
HorizontalWall(i,2,1);
|
||
Tag(i,2);
|
||
end;
|
||
if r=2 then
|
||
HorizontalWall(i,1,1);
|
||
if r=3 then
|
||
HorizontalWall(i,2,1);
|
||
end;
|
||
end;
|
||
|
||
procedure cif4;
|
||
var n,r1,r2: integer;
|
||
begin
|
||
TaskText('Задание cif4. Закрасить помеченные клетки');
|
||
n:=25;
|
||
Field(n,3);
|
||
RobotBeginEnd(1,2,n-1,2);
|
||
VerticalWall(n-1,2,1);
|
||
for var i:=2 to n-1 do
|
||
begin
|
||
r1:=random(2);
|
||
r2:=random(2);
|
||
if r1=1 then
|
||
HorizontalWall(i,1,1);
|
||
if r2=1 then
|
||
HorizontalWall(i,2,1);
|
||
if (r1=1) and (r2=0) then
|
||
Tag(i,2);
|
||
end;
|
||
end;
|
||
|
||
procedure cif5;
|
||
var n,r1,r2: integer;
|
||
begin
|
||
TaskText('Задание cif5. Закрасить помеченные клетки');
|
||
n:=25;
|
||
Field(n,3);
|
||
RobotBeginEnd(1,2,n-1,2);
|
||
VerticalWall(n-1,2,1);
|
||
for var i:=2 to n-1 do
|
||
begin
|
||
r1:=random(2);
|
||
r2:=random(2);
|
||
if r1=1 then
|
||
HorizontalWall(i,1,1);
|
||
if r2=1 then
|
||
HorizontalWall(i,2,1);
|
||
if (r1=0) or (r2=1) then
|
||
Tag(i,2);
|
||
end;
|
||
end;
|
||
|
||
procedure cif6;
|
||
var n,r1,r2: integer;
|
||
begin
|
||
TaskText('Задание cif6. Закрасить помеченные клетки');
|
||
n:=25;
|
||
Field(n,3);
|
||
RobotBeginEnd(1,2,n-1,2);
|
||
VerticalWall(n-1,2,1);
|
||
for var i:=2 to n-1 do
|
||
begin
|
||
r1:=random(2); r2:=random(2);
|
||
if r1=1 then
|
||
HorizontalWall(i,1,1);
|
||
if r2=1 then
|
||
HorizontalWall(i,2,1);
|
||
if (r1=0) or (r2=0) then
|
||
Tag(i,2);
|
||
end;
|
||
end;
|
||
|
||
procedure cif7;
|
||
var n,r1,r2: integer;
|
||
begin
|
||
TaskText('Задание cif7. Закрасить помеченные клетки, используя два условных оператора в цикле');
|
||
n:=25;
|
||
Field(n,3);
|
||
RobotBeginEnd(1,2,n-1,2);
|
||
VerticalWall(n-1,2,1);
|
||
for var i:=2 to n-1 do
|
||
begin
|
||
r1:=random(2);
|
||
r2:=random(2);
|
||
if r1=1 then
|
||
HorizontalWall(i,1,1)
|
||
else Tag(i,1);
|
||
if r2=1 then
|
||
HorizontalWall(i,2,1)
|
||
else Tag(i,3);
|
||
end;
|
||
end;
|
||
|
||
procedure cif8;
|
||
var n,r1,r2: integer;
|
||
begin
|
||
TaskText('Задание cif8. Закрасить помеченные клетки, используя два условных оператора в цикле');
|
||
n:=25;
|
||
Field(n,3);
|
||
RobotBeginEnd(1,2,n-1,2);
|
||
VerticalWall(n-1,2,1);
|
||
for var i:=2 to n-1 do
|
||
begin
|
||
r1:=random(2); r2:=random(2);
|
||
if (r1=1) and (r2=0) then
|
||
begin
|
||
HorizontalWall(i,1,1);
|
||
Tag(i,3);
|
||
end;
|
||
if (r2=1) and (r1=0) then
|
||
begin
|
||
HorizontalWall(i,2,1);
|
||
Tag(i,1);
|
||
end;
|
||
end;
|
||
end;
|
||
|
||
procedure cif9;
|
||
var n,r1,r2: integer;
|
||
begin
|
||
TaskText('Задание cif9. Закрасить помеченные клетки, используя три условных оператора в цикле');
|
||
n:=25;
|
||
Field(n,3);
|
||
RobotBeginEnd(1,2,n-1,2);
|
||
VerticalWall(n-1,2,1);
|
||
for var i:=2 to n-1 do
|
||
begin
|
||
r1:=random(2); r2:=random(2);
|
||
if r1=1 then
|
||
HorizontalWall(i,1,1);
|
||
if r2=1 then
|
||
HorizontalWall(i,2,1);
|
||
if (r1=1) and (r2=0) then
|
||
Tag(i,3);
|
||
if (r2=1) and (r1=0) then
|
||
Tag(i,1);
|
||
if (r1=1) and (r2=1) then
|
||
Tag(i,2);
|
||
end;
|
||
end;
|
||
|
||
procedure cif10;
|
||
var n,r1,r2,r3: integer;
|
||
begin
|
||
TaskText('Задание cif10. Закрасить помеченные клетки');
|
||
n:=25;
|
||
Field(n,3);
|
||
RobotBeginEnd(1,2,n-1,2);
|
||
VerticalWall(n-1,2,1);
|
||
for var i:=2 to n-1 do
|
||
begin
|
||
r1:=random(2);
|
||
r2:=random(2);
|
||
r3:=random(2);
|
||
if r1=1 then
|
||
HorizontalWall(i,1,1);
|
||
if r2=1 then
|
||
HorizontalWall(i,2,1);
|
||
if r3=1 then
|
||
MarkPainted(i,2);
|
||
if (r3=1) and (r2=0) then
|
||
Tag(i,3);
|
||
end;
|
||
end;
|
||
|
||
procedure cif11;
|
||
var n,r1,r2,r3: integer;
|
||
begin
|
||
TaskText('Задание cif11. Закрасить помеченные клетки, используя в условии две операции and');
|
||
n:=25;
|
||
Field(n,3);
|
||
RobotBeginEnd(1,2,n-1,2);
|
||
VerticalWall(n-1,2,1);
|
||
for var i:=2 to n-1 do
|
||
begin
|
||
r1:=random(2);
|
||
r2:=random(2);
|
||
r3:=random(2);
|
||
if r1=1 then
|
||
HorizontalWall(i,1,1);
|
||
if r2=1 then
|
||
HorizontalWall(i,2,1);
|
||
if r3=1 then
|
||
MarkPainted(i,2);
|
||
if (r3=1) and (r2=0) and (r1=1) then
|
||
Tag(i,3);
|
||
end;
|
||
end;
|
||
|
||
procedure cif12;
|
||
var n,r1,r2,r3: integer;
|
||
begin
|
||
TaskText('Задание cif12. Закрасить помеченные клетки, используя в условии операции and и or');
|
||
n:=25;
|
||
Field(n,3);
|
||
RobotBeginEnd(1,2,n-1,2);
|
||
VerticalWall(n-1,2,1);
|
||
for var i:=2 to n-1 do
|
||
begin
|
||
r1:=random(2);
|
||
r2:=random(2);
|
||
r3:=random(2);
|
||
if r1=1 then
|
||
HorizontalWall(i,1,1);
|
||
if r2=1 then
|
||
HorizontalWall(i,2,1);
|
||
if r3=1 then
|
||
MarkPainted(i,2);
|
||
if (r1=0) and ((r3=1) or (r2=0)) then
|
||
Tag(i,1);
|
||
end;
|
||
end;
|
||
|
||
procedure cif13;
|
||
var n,r2,r3: integer;
|
||
begin
|
||
TaskText('Задание cif13. Закрасить помеченные клетки, используя в условии две операции and и одну or');
|
||
n:=25;
|
||
Field(n,3);
|
||
RobotBeginEnd(1,2,n-1,2);
|
||
VerticalWall(n-1,2,1);
|
||
for var i:=2 to n-1 do
|
||
begin
|
||
r2:=random(2);
|
||
r3:=random(2);
|
||
if r2=1 then
|
||
HorizontalWall(i,2,1);
|
||
if r3=1 then
|
||
MarkPainted(i,2);
|
||
if (r3=1) and (r2=1) or (r3=0) and (r2=0) then
|
||
Tag(i,1);
|
||
end;
|
||
end;
|
||
|
||
procedure cif14;
|
||
var n,r2,r3: integer;
|
||
begin
|
||
TaskText('Задание cif14. Закрасить помеченные клетки, используя вложенные условные операторы');
|
||
n:=25;
|
||
Field(n,4);
|
||
RobotBeginEnd(1,2,n-1,2);
|
||
VerticalWall(n-1,2,1);
|
||
HorizontalWall(1,2,1);
|
||
for var i:=2 to n-1 do
|
||
begin
|
||
r2:=random(2);
|
||
r3:=random(2);
|
||
if r2=1 then
|
||
HorizontalWall(i,2,1);
|
||
if r3=1 then
|
||
MarkPainted(i,3);
|
||
if (r3=1) and (r2=0) then
|
||
Tag(i,4);
|
||
end;
|
||
end;
|
||
|
||
procedure cif15;
|
||
var n,r2,r3: integer;
|
||
begin
|
||
TaskText('Задание cif15. Закрасить помеченные клетки, используя вложенные условные операторы');
|
||
n:=25;
|
||
Field(n,3);
|
||
RobotBeginEnd(1,2,n-1,2);
|
||
VerticalWall(n-1,2,1);
|
||
HorizontalWall(1,2,1);
|
||
for var i:=2 to n-1 do
|
||
begin
|
||
r2:=random(2);
|
||
r3:=random(2);
|
||
if r2=1 then
|
||
MarkPainted(i,1);
|
||
if r3=1 then
|
||
MarkPainted(i,3);
|
||
if (r3=1) and (r2=1) then
|
||
Tag(i,2);
|
||
end;
|
||
end;
|
||
|
||
procedure cif16;
|
||
var n: integer;
|
||
begin
|
||
TaskText('Задание cif16. Перейти в противоположный угол');
|
||
Field(9,9);
|
||
n:=random(4);
|
||
if n=0 then
|
||
RobotBeginEnd(1,1,9,9);
|
||
if n=1 then
|
||
RobotBeginEnd(1,9,9,1);
|
||
if n=2 then
|
||
RobotBeginEnd(9,1,1,9);
|
||
if n=3 then
|
||
RobotBeginEnd(9,9,1,1);
|
||
end;
|
||
|
||
procedure cif17;
|
||
var n,m,s: integer;
|
||
begin
|
||
TaskText('Задание cif17. Дойти до конца тупика переменного размера (вертикальный коридор может сворачивать направо или налево)');
|
||
Field(15,10);
|
||
RobotBeginEnd(8,10,8,1);
|
||
n:=random(9)+2;
|
||
m:=random(6)+2;
|
||
s:=random(2);
|
||
VerticalWall(8,10-n+2,n-1);
|
||
VerticalWall(7,10-n+2,n-1);
|
||
if s=0 then
|
||
begin
|
||
HorizontalWall(8-m,10-n+1,m);
|
||
HorizontalWall(8-m,10-n,m+1);
|
||
VerticalWall(8,10-n+1,1);
|
||
VerticalWall(8-m-1,10-n+1,1);
|
||
RobotEnd(8-m,10-n+1);
|
||
end
|
||
else
|
||
begin
|
||
HorizontalWall(9,10-n+1,m);
|
||
HorizontalWall(8,10-n,m+1);
|
||
VerticalWall(7,10-n+1,1);
|
||
VerticalWall(8+m,10-n+1,1);
|
||
RobotEnd(8+m,10-n+1);
|
||
end;
|
||
end;
|
||
|
||
procedure cif18;
|
||
var n,c: integer;
|
||
begin
|
||
TaskText('Задание cif18. Перейти в конец более короткого ряда');
|
||
Field(15,4);
|
||
RobotBegin(2,2);
|
||
c:=random(2);
|
||
n:=random(11)+1;
|
||
for var i:=3 to 3+n-1 do
|
||
begin
|
||
MarkPainted(i,2);MarkPainted(i,3)
|
||
end;
|
||
if c=0 then
|
||
begin
|
||
MarkPainted(3+n,2);
|
||
RobotEnd(3+n,3);
|
||
end
|
||
else
|
||
begin
|
||
MarkPainted(3+n,3);
|
||
RobotEnd(3+n,2);
|
||
end
|
||
end;
|
||
|
||
procedure cif19;
|
||
var n1,n2: integer;
|
||
begin
|
||
TaskText('Задание cif19. Перейти в конец более короткой стены');
|
||
Field(15,4);
|
||
RobotBegin(2,3);
|
||
n1:=random(9)+4;
|
||
n2:=random(9)+4;
|
||
if n1=n2 then
|
||
n1:=n1+1;
|
||
HorizontalWall(2,1,n1);
|
||
HorizontalWall(2,3,n2);
|
||
if (n1<n2) then
|
||
RobotEnd(n1+2,2)
|
||
else RobotEnd(n2+2,3);
|
||
end;
|
||
|
||
procedure cif20;
|
||
var n1,n2: integer;
|
||
begin
|
||
TaskText('Задание cif20. Перейти в конец более длинной стены');
|
||
Field(15,4);
|
||
RobotBegin(2,3);
|
||
n1:=random(9)+4;
|
||
n2:=random(9)+4;
|
||
if n1=n2 then
|
||
n1:=n1+1;
|
||
HorizontalWall(2,1,n1);
|
||
HorizontalWall(2,3,n2);
|
||
if n1>n2 then
|
||
RobotEnd(n1+2,2)
|
||
else RobotEnd(n2+2,3);
|
||
end;
|
||
|
||
procedure cif21;
|
||
var n,m,c: integer;
|
||
begin
|
||
TaskText('Задание cif21. Перейти на вторую закрашенную клетку');
|
||
Field(15,8);
|
||
RobotBegin(8,2);
|
||
c:=random(2);
|
||
m:=random(6)+1;
|
||
n:=random(5)+1;
|
||
if c=0 then
|
||
begin
|
||
MarkPainted(8-m,2);
|
||
MarkPainted(8-m,2+n);
|
||
RobotEnd(8-m,2+n);
|
||
end
|
||
else
|
||
begin
|
||
MarkPainted(8+m,2);
|
||
MarkPainted(8+m,2+n);
|
||
RobotEnd(8+m,2+n);
|
||
end
|
||
end;
|
||
|
||
procedure cif22;
|
||
var n1,n2,n,m,c: integer;
|
||
begin
|
||
TaskText('Задание cif22. Найти выход и переместиться в левую верхнюю клетку поля ');
|
||
Field(15,5);
|
||
n1:=random(3)+2;
|
||
n2:=random(10)+5;
|
||
n:=random(n2-n1+1)+n1;
|
||
m:=random(n2-n1+1);
|
||
RobotBegin(n,3);
|
||
c:=random(4);
|
||
if c=0 then
|
||
begin
|
||
HorizontalWall(n1,2,n2-n1+1);
|
||
HorizontalWall(n1,3,n2-n1+1);
|
||
VerticalWall(n1-1,3,1);
|
||
end;
|
||
if c=1 then
|
||
begin
|
||
HorizontalWall(n1,2,n2-n1+1);
|
||
HorizontalWall(n1,3,n2-n1+1);
|
||
VerticalWall(n2,3,1);
|
||
end;
|
||
if c=2 then
|
||
begin
|
||
HorizontalWall(n1,2,m);
|
||
HorizontalWall(n1+m+1,2,n2-n1-m);
|
||
HorizontalWall(n1,3,n2-n1+1); VerticalWall(n2,3,1);
|
||
VerticalWall(n1-1,3,1);
|
||
end;
|
||
if c=3 then
|
||
begin
|
||
HorizontalWall(n1,3,m);
|
||
HorizontalWall(n1+m+1,3,n2-n1-m);
|
||
HorizontalWall(n1,2,n2-n1+1);
|
||
VerticalWall(n2,3,1);
|
||
VerticalWall(n1-1,3,1);
|
||
end;
|
||
end;
|
||
|
||
procedure count1;
|
||
var n: integer;
|
||
begin
|
||
TaskText('Задание count1. Дойти до правой стены, закрасить клетку и вернуться. Использовать переменную-счетчик');
|
||
Field(10,5);
|
||
n:=random(7)+3;
|
||
RobotBeginEnd(n,3,n,3);
|
||
Tag(10,3);
|
||
end;
|
||
|
||
procedure count2;
|
||
var n1,n2,m: integer;
|
||
begin
|
||
TaskText('Задание count2. Закрасить правый нижний угол и вернуться. Использовать два счетчика');
|
||
m:=8;
|
||
Field(m,m);
|
||
n1:=random(6)+2;
|
||
n2:=random(6)+2;
|
||
RobotBeginEnd(n1,n2,n1,n2);
|
||
Tag(m,m);
|
||
end;
|
||
|
||
procedure count3;
|
||
var n1,n2,m,t: integer;
|
||
begin
|
||
TaskText('Задание count3. Переместить Робота в клетку, симметричную относительно диагонали');
|
||
m:=10;
|
||
Field(m,m);
|
||
n1:=random(7)+2;
|
||
n2:=random(7)+2;
|
||
if n1=n2 then
|
||
n1:=n1+1;
|
||
if n1>n2 then
|
||
begin
|
||
t:=n1;
|
||
n1:=n2;
|
||
n2:=t;
|
||
end;
|
||
for var i:=1 to m do
|
||
MarkPainted(i,i);
|
||
RobotBeginEnd(n1,n2,n2,n1);
|
||
end;
|
||
|
||
procedure count4;
|
||
var n1,n2: integer;
|
||
begin
|
||
TaskText('Задание count4. Обойти стену переменной длины');
|
||
Field(10,4);
|
||
n1:=random(5)+4;
|
||
n2:=random(4)+1;
|
||
HorizontalWall(1,2,n1);
|
||
RobotBeginEnd(n2,2,n2,3);
|
||
end;
|
||
|
||
procedure count5;
|
||
var n,m,n1,m1: integer;
|
||
begin
|
||
TaskText('Задание count5. Закрасить периметр и вернуться назад');
|
||
n:=random(3)+8;
|
||
m:=random(3)+8;
|
||
Field(n,m);
|
||
n1:=random(n-2)+2;
|
||
m1:=random(m-2)+2;
|
||
RobotBeginEnd(n1,m1,n1,m1);
|
||
TagRect(1,1,n,1);
|
||
TagRect(1,1,1,m);
|
||
TagRect(1,m,n,m);
|
||
TagRect(n,1,n,m);
|
||
end;
|
||
|
||
procedure count6;
|
||
var n,m: integer;
|
||
begin
|
||
TaskText('Задание count6. Переместиться к ближайшей стене');
|
||
Field(15,5);
|
||
RobotBegin(8,3);
|
||
n:=random(5)+2;
|
||
m:=random(5)+2;
|
||
if m=n then
|
||
m:=m+1;
|
||
VerticalWall(8-m,2,3);
|
||
VerticalWall(8+n-1,2,3);
|
||
if m<n then
|
||
RobotEnd(8-m+1,3)
|
||
else RobotEnd(8+n-1,3);
|
||
end;
|
||
|
||
procedure count7;
|
||
var n,l,r: integer;
|
||
begin
|
||
TaskText('Задание count7. Обойти стену переменной длины (перегородка нахоится слева или справа)');
|
||
Field(16,4);
|
||
n:=random(3)+2;
|
||
l:=random(12)+1;
|
||
r:=random(l)+n;
|
||
HorizontalWall(n,2,l);
|
||
RobotBeginEnd(r,2,r,3);
|
||
if l mod 2 = 0 then
|
||
VerticalWall(n-1,1,2);
|
||
if l mod 2 = 1 then
|
||
VerticalWall(n+l-1,1,2);
|
||
end;
|
||
|
||
procedure count8;
|
||
var r,cc: integer;
|
||
begin
|
||
TaskText('Задание count8. Остановиться на пятой закрашенной клетке');
|
||
Field(21,3);
|
||
RobotBeginEnd(2,2,1,2);
|
||
cc:=0;
|
||
for var i:=2 to 20 do
|
||
begin
|
||
if i<16 then
|
||
r:=random(2)
|
||
else
|
||
begin
|
||
if cc<5 then
|
||
r:=1
|
||
else r:=0;
|
||
end;
|
||
if r=1 then
|
||
begin
|
||
MarkPainted(i,2);
|
||
cc:=cc+1;
|
||
if cc=5 then
|
||
RobotEnd(i,2);
|
||
end;
|
||
end;
|
||
end;
|
||
|
||
procedure count9;
|
||
var cc,r: integer;
|
||
begin
|
||
TaskText('Задание count9. Остановиться на третьей закрашенной подряд клетке');
|
||
Field(20,3);
|
||
RobotBeginEnd(2,2,1,2);
|
||
cc:=0;
|
||
for var i:=2 to 19 do
|
||
begin
|
||
if i<17 then
|
||
r:=random(2)
|
||
else
|
||
begin
|
||
if cc<3 then
|
||
r:=1
|
||
else r:=0;
|
||
end;
|
||
if r=1 then
|
||
begin
|
||
MarkPainted(i,2);
|
||
cc:=cc+1;
|
||
if cc=3 then
|
||
RobotEnd(i,2);
|
||
end
|
||
else
|
||
if cc<3 then
|
||
cc:=0;
|
||
end;
|
||
end;
|
||
|
||
procedure count10;
|
||
var n,m: integer;
|
||
begin
|
||
TaskText('Задание count10. Закрасить клетки до конца нижней стены, но не менее пяти');
|
||
Field(11,3);
|
||
n:=random(9)+1;
|
||
if n<5 then
|
||
m:=5
|
||
else m:=n;
|
||
TagRect(2,2,m+1,2);
|
||
RobotBeginEnd(2,2,m+2,2);
|
||
HorizontalWall(2,2,n);
|
||
end;
|
||
|
||
procedure count11;
|
||
var n: integer;
|
||
begin
|
||
TaskText('Задание count11. Если длина тупика больше 4, то закрасить его первую клетку');
|
||
Field(11,3);
|
||
n:=random(9)+1;
|
||
RobotBeginEnd(1,2,2,2);
|
||
HorizontalWall(2,2,n);
|
||
HorizontalWall(2,1,n);
|
||
VerticalWall(n+1,2,1);
|
||
if n>4 then
|
||
Tag(2,2);
|
||
end;
|
||
|
||
procedure count12;
|
||
var n: integer;
|
||
begin
|
||
TaskText('Задание count12. Закрасить помеченные клетки в коридоре переменной длины');
|
||
n:=random(4)+10;
|
||
Field(n,1);
|
||
RobotBeginEnd(1,1,n,1);
|
||
for var i:=1 to n div 2 do
|
||
Tag(i*2,1);
|
||
end;
|
||
|
||
procedure count13;
|
||
var n: integer;
|
||
begin
|
||
TaskText('Задание count13. Закрасить помеченные клетки в коридоре переменной длины');
|
||
n:=random(4)+10;
|
||
Field(n,1);
|
||
RobotBeginEnd(1,1,n,1);
|
||
for var i:=1 to n div 2 + 1 do
|
||
Tag(i*2-1,1);
|
||
end;
|
||
|
||
procedure count14;
|
||
var n: integer;
|
||
begin
|
||
TaskText('Задание count14. Закрасить помеченные клетки в коридоре переменной длины');
|
||
n:=random(4)+16;
|
||
Field(n,1);
|
||
RobotBeginEnd(1,1,n,1);
|
||
for var i:=1 to n div 3 do
|
||
Tag(i*3,1);
|
||
end;
|
||
|
||
procedure count15;
|
||
var n: integer;
|
||
begin
|
||
TaskText('Задание count15. Закрасить помеченные клетки в коридоре переменной длины');
|
||
n:=random(4)+16;
|
||
Field(n,1);
|
||
RobotBeginEnd(1,1,n,1);
|
||
for var i:=1 to n div 3 + 1 do
|
||
Tag(i*3-2,1);
|
||
end;
|
||
|
||
procedure count16;
|
||
var n,f,z: integer;
|
||
begin
|
||
TaskText('Задание count16. Закрасить все нечетные пролеты между закрашенными клетками');
|
||
Field(25,3);
|
||
RobotBeginEnd(2,2,25,2);
|
||
n:=2+random(5);
|
||
f:=0;
|
||
for var i:=2 to 24 do
|
||
begin
|
||
if i=n then
|
||
begin
|
||
MarkPainted(i,2);
|
||
n:=i+2+random(5);
|
||
if f=0 then
|
||
begin
|
||
f:=1;
|
||
z:=i
|
||
end
|
||
else
|
||
begin
|
||
f:=0;
|
||
TagRect(z+1,2,i-1,2);
|
||
end;
|
||
end;
|
||
end;
|
||
if f=1 then
|
||
TagRect(z+1,2,25,2);
|
||
end;
|
||
|
||
procedure count17;
|
||
var n,f: integer;
|
||
begin
|
||
TaskText('Задание count17. Остановиться на первой клетке, нарушающей закономерность');
|
||
Field(25,3);
|
||
n:=random(20)+4;
|
||
RobotBeginEnd(2,2,n,2);
|
||
f:=0;
|
||
for var i:=2 to 24 do
|
||
begin
|
||
if i<>n then
|
||
begin
|
||
if f=0 then
|
||
f:=1
|
||
else f:=0;
|
||
end;
|
||
if f=1 then
|
||
HorizontalWall(i,2,1);
|
||
end;
|
||
end;
|
||
|
||
procedure cc1;
|
||
begin
|
||
TaskText('Задание cc1. Закрасить помеченные клетки, используя вложенные циклы');
|
||
Field(31,7);
|
||
RobotBeginEnd(1,1,31,7);
|
||
for var i:=1 to 6 do
|
||
TagRect(5*i-4,i,5*i,i);
|
||
end;
|
||
|
||
procedure cc2;
|
||
var a,b: integer;
|
||
begin
|
||
TaskText('Задание cc2. Закрасить помеченные клетки, используя вложенные циклы');
|
||
Field(22,7);
|
||
RobotBeginEnd(1,1,22,7);
|
||
a:=1;
|
||
b:=1;
|
||
for var i:=1 to 6 do
|
||
begin
|
||
TagRect(a,i,b,i);
|
||
a:=b+1;
|
||
b:=a+i;
|
||
end
|
||
end;
|
||
|
||
procedure cc3;
|
||
var a,b: integer;
|
||
begin
|
||
TaskText('Задание cc3. Закрасить помеченные клетки, используя вложенный цикл с downto');
|
||
Field(22,7);
|
||
RobotBeginEnd(1,1,22,7);
|
||
a:=1;
|
||
b:=6;
|
||
for var i:=1 to 6 do
|
||
begin
|
||
TagRect(a,i,b,i);
|
||
a:=b+1;
|
||
b:=a+5-i;
|
||
end
|
||
end;
|
||
|
||
procedure cc4;
|
||
begin
|
||
TaskText('Задание cc4. Закрасить помеченные клетки, используя во внешнем цикле два вложенных цикла');
|
||
Field(11,10);
|
||
RobotBeginEnd(1,1,1,10);
|
||
TagRect(1,1,11,9);
|
||
for var i:=1 to 9 do
|
||
HorizontalWall(2,i,10);
|
||
end;
|
||
|
||
procedure cc5;
|
||
begin
|
||
TaskText('Задание cc5. Пройти лабиринт, используя во внешнем цикле два вложенных цикла');
|
||
Field(14,9);
|
||
RobotBeginEnd(1,1,1,9);
|
||
for var i:=1 to 4 do
|
||
begin
|
||
HorizontalWall(1,2*i-1,13);
|
||
HorizontalWall(2,2*i,13);
|
||
end
|
||
end;
|
||
|
||
procedure cc6;
|
||
var n,j: integer;
|
||
begin
|
||
TaskText('Задание cc6. Закрасить помеченные клетки');
|
||
n:=10;
|
||
Field(20,n); RobotBeginEnd(1,n,20,n);
|
||
j:=1;
|
||
for var i:=1 to 5 do
|
||
begin
|
||
HorizontalWall(j,n-1,3);
|
||
VerticalWall(j+3,1,n-1);Tag(j+3,1);j:=j+4;
|
||
end
|
||
end;
|
||
|
||
procedure cc7;
|
||
begin
|
||
TaskText('Задание cc7. Закрасить помеченные клетки, используя во внешнем цикле два вложенных цикла');
|
||
Field(10,10);
|
||
RobotBeginEnd(1,1,1,10);
|
||
for var i:=1 to 9 do
|
||
TagRect(1,i,i,i);
|
||
end;
|
||
|
||
procedure cc8;
|
||
begin
|
||
TaskText('Задание cc8. Закрасить помеченные клетки, используя цикл с downto');
|
||
Field(10,10);
|
||
RobotBeginEnd(1,1,1,10);
|
||
for var i:=1 to 9 do
|
||
TagRect(1,i,10-i,i);
|
||
end;
|
||
|
||
procedure cc9;
|
||
begin
|
||
TaskText('Задание cc9. Закрасить помеченные клетки, используя во внешнем цикле два вложенных цикла');
|
||
Field(10,10);
|
||
RobotBeginEnd(10,1,10,10);
|
||
TagRect(10,1,10,9);
|
||
for var i:=1 to 9 do
|
||
begin
|
||
HorizontalWall(11-i,i,i);
|
||
HorizontalWall(1,i,9-i);
|
||
end;
|
||
end;
|
||
|
||
procedure cc10;
|
||
begin
|
||
TaskText('Задание cc10. Закрасить помеченные клетки');
|
||
Field(15,8);
|
||
RobotBeginEnd(1,1,1,8);
|
||
for var i:=1 to 7 do
|
||
TagRect(1,i,2*i,i);
|
||
end;
|
||
|
||
procedure cc11;
|
||
begin
|
||
TaskText('Задание cc11. Закрасить помеченные клетки');
|
||
Field(14,8);
|
||
RobotBeginEnd(1,1,1,8);
|
||
for var i:=1 to 7 do
|
||
TagRect(1,i,2*i-1,i);
|
||
end;
|
||
|
||
procedure cc12;
|
||
var p: integer;
|
||
begin
|
||
TaskText('Задание cc12. Закрасить помеченные клетки');
|
||
Field(33,7);
|
||
RobotBeginEnd(1,1,1,7);
|
||
p:=1;
|
||
for var i:=1 to 6 do
|
||
begin
|
||
TagRect(1,i,p,i);
|
||
p:=p*2;
|
||
end
|
||
end;
|
||
|
||
procedure cc13;
|
||
begin
|
||
TaskText('Задание cc13. Закрасить помеченные клетки');
|
||
Field(14,9);
|
||
RobotBeginEnd(1,1,9,9);
|
||
for var i:=1 to 4 do
|
||
begin
|
||
HorizontalWall(2*i-1,2*i-1,15-2*i);
|
||
HorizontalWall(2*i+2,2*i,13);
|
||
Tag(2*i+1,2*i);
|
||
end
|
||
end;
|
||
|
||
procedure cc14;
|
||
begin
|
||
TaskText('Задание cc14. Пройти лабиринт');
|
||
Field(14,9);
|
||
RobotBeginEnd(1,1,5,9);
|
||
for var i:=1 to 4 do
|
||
begin
|
||
HorizontalWall(i,2*i-1,15-2*i);
|
||
HorizontalWall(i+2,2*i,14-2*i);
|
||
VerticalWall(i,2*i,2);
|
||
VerticalWall(14-i,2*i+1,2);
|
||
end
|
||
end;
|
||
|
||
procedure cc15;
|
||
var n: integer;
|
||
begin
|
||
TaskText('Задание cc15. Закрасить помеченные клетки');
|
||
n:=8;
|
||
Field(15,9);
|
||
RobotBeginEnd(n,2,n,9);
|
||
for var i:=1 to 7 do
|
||
TagRect(n-i+1,i+1,n+i-1,i+1);
|
||
end;
|
||
|
||
procedure cc16;
|
||
begin
|
||
TaskText('Задание cc16. Закрасить помеченные клетки, используя вложенный цикл во вложенном цикле');
|
||
Field(22,7);
|
||
RobotBeginEnd(2,6,22,6);
|
||
var j:=2;
|
||
for var k:=1 to 4 do
|
||
for var i:=1 to 5 do
|
||
begin
|
||
TagRect(j,6-i+1,j,6);
|
||
j:=j+1;
|
||
end;
|
||
end;
|
||
|
||
procedure cc17;
|
||
var j: integer;
|
||
begin
|
||
TaskText('Задание cc17. Закрасить помеченные клетки, используя вложенный цикл во вложенном цикле');
|
||
Field(29,8);
|
||
RobotBeginEnd(2,7,28,7);
|
||
j:=2;
|
||
for var k:=1 to 6 do
|
||
begin
|
||
for var i:=1 to 6-k+1 do
|
||
begin
|
||
TagRect(j,7-i+1,j,7);
|
||
j:=j+1;
|
||
end;
|
||
j:=j+1;
|
||
end;
|
||
end;
|
||
|
||
procedure cc18;
|
||
begin
|
||
TaskText('Задание cc18. Закрасить помеченные клетки, используя цикл while внутри цикла for');
|
||
Field(12,7); RobotBeginEnd(1,1,1,7);
|
||
for var i:=1 to 8 do
|
||
HorizontalWall(2,i,12);
|
||
VerticalWall(7,1,1);Tag(7,1);
|
||
VerticalWall(9,2,1);Tag(9,2);
|
||
VerticalWall(5,3,1);Tag(5,3);
|
||
VerticalWall(4,4,1);Tag(4,4);
|
||
VerticalWall(11,5,1);Tag(11,5);
|
||
VerticalWall(2,6,1);Tag(2,6);
|
||
VerticalWall(7,7,1);Tag(7,7);
|
||
end;
|
||
|
||
procedure cc19;
|
||
var n: integer;
|
||
begin
|
||
TaskText('Задание cc19. Закрасить помеченные клетки. Высота поля может меняться');
|
||
n:=random(4)+6;
|
||
Field(11,n);
|
||
RobotBeginEnd(1,1,1,n);
|
||
for var i:=1 to n do
|
||
begin
|
||
Tag(11,i);
|
||
HorizontalWall(2,i,10);
|
||
end
|
||
end;
|
||
|
||
procedure mix1;
|
||
var n1,n2,m: integer;
|
||
begin
|
||
TaskText('Задание mix1. Закрасить прямоугольник переменного размера');
|
||
m:=8;
|
||
Field(m,m);
|
||
n1:=random(6)+2;
|
||
n2:=random(6)+2;
|
||
RobotBeginEnd(n1,n2,m,m);
|
||
TagRect(n1,n2,m,m);
|
||
end;
|
||
|
||
procedure mix2;
|
||
var n1,n2,m,ij: integer;
|
||
begin
|
||
TaskText('Задание mix2. Закрасить в шахматном порядке прямоугольник переменного размера');
|
||
m:=8;
|
||
Field(m,m);
|
||
n1:=random(6)+2;
|
||
n2:=random(6)+2;
|
||
RobotBeginEnd(n1,n2,m,m);
|
||
for var i:=n1 to m do
|
||
begin
|
||
for var j:=n2 to m do
|
||
begin
|
||
ij:=i+j-n1-n2;
|
||
if ij mod 2 = 0 then
|
||
Tag(i,j);
|
||
end;
|
||
end;
|
||
end;
|
||
|
||
procedure mix3;
|
||
var n1,n2,m,l: integer;
|
||
begin
|
||
TaskText('Задание mix3. Закрасить квадрат, предварительно определив его размер');
|
||
m:=10;
|
||
Field(m,m);
|
||
n1:=random(3)+2;
|
||
n2:=random(3)+2;
|
||
l:=random(4)+2;
|
||
RobotBeginEnd(n1+l,n2,n1+l,n2);
|
||
TagRect(n1,n2,n1+l,n2+l);
|
||
MarkPainted(n1,n2+l);
|
||
end;
|
||
|
||
procedure mix4;
|
||
var n1,n2,m,m1,m2: integer;
|
||
begin
|
||
TaskText('Задание mix4. Найти закрашенную клетку');
|
||
m:=10;
|
||
Field(m,m);
|
||
n1:=random(m-2)+2;
|
||
n2:=random(m-2)+2;
|
||
m1:=random(m-2)+2;
|
||
m2:=random(m-2)+2;
|
||
if (n1=m1) and (n2=m2) then
|
||
m1:=m1-1;
|
||
RobotBeginEnd(n1,n2,m1,m2);
|
||
MarkPainted(m1,m2);
|
||
end;
|
||
|
||
procedure mix5;
|
||
var n1,n2,m,m1,m2: integer;
|
||
begin
|
||
TaskText('Задание mix5. Найти закрашенную клетку и закрасить клетки, находящиеся с ней на одной вертикали и горизонтали');
|
||
m:=10;
|
||
Field(m,m);
|
||
n1:=random(m-2)+2;
|
||
n2:=random(m-2)+2;
|
||
m1:=random(m-2)+2;
|
||
m2:=random(m-2)+2;
|
||
if (n1=n2) and (m1=m2) then
|
||
n1:=n1-1;
|
||
RobotBeginEnd(n1,n2,m1,m2);
|
||
MarkPainted(m1,m2);
|
||
TagRect(1,m2,m,m2);
|
||
TagRect(m1,1,m1,m);
|
||
end;
|
||
|
||
procedure mix6;
|
||
var c: integer;
|
||
begin
|
||
TaskText('Задание mix6. Закрасить те клетки у правой стены, для которых закрашены клетки левой стены');
|
||
Field(11,11);
|
||
RobotBeginEnd(1,1,1,11);
|
||
for var i:=1 to 10 do
|
||
begin
|
||
c:=random(2);
|
||
if c=1 then
|
||
begin
|
||
MarkPainted(1,i);
|
||
Tag(11,i)
|
||
end
|
||
end
|
||
end;
|
||
|
||
procedure mix7;
|
||
var c1,c2: integer;
|
||
begin
|
||
TaskText('Задание mix7. Закрасить горизонтальные ряды, в которых закрашены левая и правая клетки');
|
||
Field(11,11);
|
||
RobotBeginEnd(1,1,1,11);
|
||
for var i:=1 to 10 do
|
||
begin c1:=random(2);
|
||
if c1=1 then
|
||
MarkPainted(1,i);
|
||
c2:=random(2);
|
||
if c2=1 then
|
||
MarkPainted(11,i);
|
||
if (c1=1) and (c2=1) then
|
||
TagRect(2,i,10,i);
|
||
end
|
||
end;
|
||
|
||
procedure mix8;
|
||
var c1,c2,c3,c4: integer;
|
||
begin
|
||
TaskText('Задание mix8. Закрасить горизонтальные ряды, в которых закрашены левая и правая клетки и еще ровно одна');
|
||
Field(11,15);
|
||
RobotBeginEnd(1,1,1,15);
|
||
for var i:=1 to 14 do
|
||
begin
|
||
c1:=random(2);
|
||
if c1=1 then
|
||
MarkPainted(1,i);
|
||
c2:=random(2);
|
||
if c2=1 then
|
||
MarkPainted(11,i);
|
||
c3:=random(2);
|
||
if c3=1 then
|
||
begin
|
||
c4:=random(9)+2;
|
||
MarkPainted(c4,i);
|
||
end;
|
||
if (c1=1) and (c2=1) and (c3=1) then
|
||
TagRect(2,i,10,i);
|
||
end
|
||
end;
|
||
|
||
procedure mix9;
|
||
var n1,n2,m,l1,l2: integer;
|
||
begin
|
||
TaskText('Задание mix9. Закрасить прямоугольник, предварительно определив его размер, и вернуться в начальную позицию. Закрашенная клетка находится левее и ниже Робота');
|
||
m:=10;
|
||
Field(m,m);
|
||
n1:=random(3)+2;
|
||
n2:=random(3)+2;
|
||
l1:=random(4)+2;
|
||
l2:=random(4)+2;
|
||
RobotBeginEnd(n1+l1,n2,n1+l1,n2);
|
||
TagRect(n1,n2,n1+l1,n2+l2);
|
||
MarkPainted(n1,n2+l2);
|
||
end;
|
||
|
||
procedure mix10;
|
||
var n,n1,n2,m,l1,l2: integer;
|
||
begin
|
||
TaskText('Задание mix10. Закрасить прямоугольник, предварительно определив его размер, и вернуться в начальную позицию');
|
||
m:=10;
|
||
Field(m,m);
|
||
n1:=random(3)+2;
|
||
n2:=random(3)+2;
|
||
l1:=random(4)+2;
|
||
l2:=random(4)+2;
|
||
TagRect(n1,n2,n1+l1,n2+l2);
|
||
n:=random(4);
|
||
if n=0 then
|
||
begin
|
||
RobotBeginEnd(n1,n2,n1,n2);
|
||
MarkPainted(n1+l1,n2+l2);
|
||
end;
|
||
if n=1 then
|
||
begin
|
||
RobotBeginEnd(n1+l1,n2+l2,n1+l1,n2+l2);
|
||
MarkPainted(n1,n2);
|
||
end;
|
||
if n=2 then
|
||
begin
|
||
RobotBeginEnd(n1+l1,n2,n1+l1,n2);
|
||
MarkPainted(n1,n2+l2);
|
||
end;
|
||
if n=3 then
|
||
begin
|
||
RobotBeginEnd(n1,n2+l2,n1,n2+l2);
|
||
MarkPainted(n1+l1,n2);
|
||
end
|
||
end;
|
||
|
||
procedure p1;
|
||
procedure KresTag(x,y: integer);
|
||
begin
|
||
TagRect(x-1,y,x+1,y);
|
||
TagRect(x,y-1,x,y+1);
|
||
end;
|
||
begin
|
||
TaskText('Задание p1. Закрасить помеченные клетки, составив процедуру Cross');
|
||
Field(10,10);
|
||
RobotBeginEnd(3,7,5,3);
|
||
KresTag(3,7);
|
||
KresTag(8,6);
|
||
KresTag(5,3);
|
||
end;
|
||
|
||
procedure p2;
|
||
procedure my(n: integer);
|
||
begin
|
||
for var i:=1 to n do
|
||
TagRect(3*i-1,2,3*i,3);
|
||
end;
|
||
begin
|
||
TaskText('Задание p2. Закрасить помеченные клетки, составив процедуру Square2');
|
||
Field(19,4);
|
||
RobotBeginEnd(2,2,17,2);
|
||
my(6);
|
||
end;
|
||
|
||
procedure p3;
|
||
begin
|
||
TaskText('Задание p3. Закрасить помеченные клетки, используя процедуру Square2');
|
||
Field(12,12);
|
||
RobotBeginEnd(11,11,1,1);
|
||
for var i:=1 to 6 do
|
||
TagRect(2*i-1,2*i-1,2*i,2*i);
|
||
end;
|
||
|
||
procedure p4;
|
||
begin
|
||
TaskText('Задание p4. Закрасить помеченные клетки, используя процедуру Square2. Оформить полученный алгоритм в виде процедуры Square4');
|
||
Field(6,6);
|
||
RobotBeginEnd(2,2,2,2);
|
||
TagRect(2,2,5,5);
|
||
end;
|
||
|
||
procedure p5;
|
||
begin
|
||
TaskText('Задание p5. Закрасить помеченные клетки, используя процедуру Square4');
|
||
Field(10,10);
|
||
RobotBeginEnd(2,2,2,2);
|
||
TagRect(2,2,9,9);
|
||
end;
|
||
|
||
procedure p6;
|
||
begin
|
||
TaskText('Задание p6. Закрасить помеченные клетки, составив процедуру Row, в которой Робот закрашивает ряд и возвращается назад');
|
||
Field(9,9);
|
||
RobotBeginEnd(1,2,1,8);
|
||
for var i:=1 to 4 do
|
||
TagRect(1,2*i,11,2*i);
|
||
end;
|
||
|
||
procedure p7;
|
||
begin
|
||
TaskText('Задание p7. Закрасить помеченные клетки, составив процедуру Column, в которой Робот закрашивает колонку и возвращается назад');
|
||
Field(9,9);
|
||
RobotBeginEnd(2,1,8,1);
|
||
for var i:=1 to 4 do
|
||
TagRect(2*i,1,2*i,11);
|
||
end;
|
||
|
||
procedure p8;
|
||
begin
|
||
TaskText('Задание p8. Закрасить помеченные клетки, используя процедуры Row и Column');
|
||
Field(9,9);
|
||
RobotBeginEnd(1,2,8,1);
|
||
for var i:=1 to 4 do
|
||
begin
|
||
TagRect(1,2*i,11,2*i);
|
||
TagRect(2*i,1,2*i,11);
|
||
end;
|
||
end;
|
||
|
||
procedure p9;
|
||
begin
|
||
TaskText('Задание p9. Закрасить помеченные клетки, используя процедуры Row и Column');
|
||
Field(15,15);
|
||
RobotBeginEnd(2,2,6,6);
|
||
var i:=2;
|
||
for var j:=1 to 3 do
|
||
begin
|
||
TagRect(i,i,i+8,i);
|
||
TagRect(i,i,i,i+8);i:=i+2;
|
||
end;
|
||
end;
|
||
|
||
procedure p10;
|
||
begin
|
||
TaskText('Задание p10. Закрасить помеченные клетки, составив процедуру Contour');
|
||
Field(31,7);
|
||
RobotBeginEnd(2,2,26,2);
|
||
var i:=2;
|
||
for var j:=1 to 5 do
|
||
begin
|
||
TagRect(i,2,i+4,2);
|
||
TagRect(i,2,i,6);
|
||
TagRect(i,6,i+4,6);
|
||
TagRect(i+4,2,i+4,6);
|
||
i:=i+6;
|
||
end;
|
||
end;
|
||
|
||
procedure p11;
|
||
begin
|
||
TaskText('Задание p11. Закрасить помеченные клетки, составив процедуру Punktir');
|
||
Field(15,11);
|
||
RobotBeginEnd(1,1,1,11);
|
||
for var i:=1 to 7 do
|
||
for var j:=1 to 5 do
|
||
Tag(2*i-1,2*j-1);
|
||
end;
|
||
|
||
procedure p12;
|
||
begin
|
||
TaskText('Задание p12. Закрасить помеченные клетки, используя процедуру Punktir');
|
||
Field(16,12);
|
||
RobotBeginEnd(2,2,3,11);
|
||
for var i:=1 to 7 do
|
||
for var j:=1 to 5 do
|
||
begin
|
||
Tag(2*i,2*j);
|
||
Tag(2*i+1,2*j+1);
|
||
end
|
||
end;
|
||
|
||
procedure p13;
|
||
begin
|
||
TaskText('Задание p13. Закрасить помеченные клетки, используя процедуру Punktir');
|
||
Field(17,14);
|
||
RobotBeginEnd(2,2,2,14);
|
||
for var i:=1 to 5 do
|
||
for var j:=1 to 4 do
|
||
begin
|
||
Tag(3*i-1,3*j-1);
|
||
Tag(3*i,3*j);
|
||
Tag(3*i+1,3*j+1);
|
||
end
|
||
end;
|
||
|
||
procedure p14;
|
||
begin
|
||
TaskText('Задание p14. Закрасить помеченные клетки, составив процедуры Row1 и Row2 для двух разновидностей рядов');
|
||
Field(17,15); RobotBeginEnd(2,2,2,14);
|
||
for var i:=1 to 8 do
|
||
TagRect(2*i,2,2*i,13);
|
||
for var i:=1 to 8 do
|
||
TagRect(2,2*i,16,2*i);
|
||
end;
|
||
|
||
procedure p15;
|
||
var n: integer;
|
||
begin
|
||
TaskText('Задание p15. Закрасить помеченные клетки, составив процедуры Row1 и Row2 для двух разновидностей рядов');
|
||
n:=14;
|
||
Field(25,n+1);
|
||
RobotBeginEnd(2,2,2,n);
|
||
for var i:=1 to 8 do
|
||
begin
|
||
TagRect(4*i-1,2,4*i-1,n);
|
||
for var j:=1 to 6 do
|
||
begin
|
||
Tag(4*i-2,2*j+1);
|
||
Tag(4*i,2*j+1);
|
||
end;
|
||
end
|
||
end;
|
||
|
||
procedure ps1;
|
||
begin
|
||
TaskText('Задание ps1. Закрась помеченные клетки. Составь процедуру PR2 и вызови её');
|
||
Field(5,5);
|
||
TagRect(2,3,3,3);
|
||
RobotBeginEnd(2,3,2,3);
|
||
end;
|
||
|
||
procedure ps2;
|
||
begin
|
||
TaskText('Задание ps2. Закрасить помеченные клетки. Скопируй процедуру PR3 из предыдущего задания и вызови её трижды');
|
||
Field(7,7);
|
||
TagRect(2,2,3,2);
|
||
TagRect(5,4,6,4);
|
||
TagRect(3,6,4,6);
|
||
RobotBeginEnd(2,2,3,6);
|
||
end;
|
||
|
||
procedure ps3;
|
||
begin
|
||
TaskText('Задание ps3. Закрасить помеченные клетки. Составь процедуру PD3 и вызови её трижды');
|
||
Field(8,8);
|
||
TagRect(2,2,2,4);
|
||
TagRect(4,3,4,5);
|
||
TagRect(7,5,7,7);
|
||
RobotBeginEnd(2,2,7,5);
|
||
end;
|
||
|
||
procedure pp1;
|
||
begin
|
||
TaskText('Задание pp1. Закрасить помеченные клетки, составив процедуры с параметром RightN(n) и LeftN(n)');
|
||
Field(12,7);
|
||
RobotBeginEnd(1,1,1,7);
|
||
for var i:=1 to 8 do
|
||
HorizontalWall(2,i,12);
|
||
Tag(7,1);Tag(9,2);Tag(5,3);Tag(4,4);Tag(11,5);Tag(2,6);Tag(7,7);
|
||
end;
|
||
|
||
procedure pp2;
|
||
begin
|
||
TaskText('Задание pp2. Закрасить помеченные клетки, составив процедуру с параметром PaintDown(n)');
|
||
Field(10,10);
|
||
RobotBeginEnd(1,1,9,1);
|
||
VerticalWall(2,2,9); TagRect(1,1,1,7);
|
||
VerticalWall(4,2,9); TagRect(3,1,3,4);
|
||
VerticalWall(6,2,9); TagRect(5,1,5,9);
|
||
VerticalWall(8,2,9); TagRect(7,1,7,6);
|
||
TagRect(9,1,9,8);
|
||
end;
|
||
|
||
procedure pp3;
|
||
var d: integer;
|
||
begin
|
||
TaskText('Задание pp3. Пройти лабиринт. Составить процедуры с параметрами RightN(n), LeftN(n), UpN(n), DownN(n)');
|
||
d:=9;
|
||
Field(d,d);
|
||
RobotBeginEnd(1,1,5,5);
|
||
for var i:=1 to 4 do
|
||
begin
|
||
VerticalWall(i,i,d+1-2*i);
|
||
HorizontalWall(i+1,d-i,d-2*i);
|
||
VerticalWall(d-i,i+1,d-2*i);
|
||
HorizontalWall(i+2,i,d-1-2*i);
|
||
end
|
||
end;
|
||
|
||
procedure pp4;
|
||
begin
|
||
TaskText('Задание pp4. Закрасить помеченные клетки, составив процедуру SymbolT(m,h), где m - половина ширины символа T, а h - его высота');
|
||
Field(19,8);
|
||
RobotBeginEnd(5,2,17,2);
|
||
TagRect(2,2,8,2); TagRect(5,2,5,5);
|
||
TagRect(10,2,14,2); TagRect(12,2,12,6);
|
||
TagRect(16,2,18,2); TagRect(17,2,17,7);
|
||
end;
|
||
|
||
procedure pp5;
|
||
begin
|
||
TaskText('Задание pp5. Закрасить прямоугольник, составив процедуру Rect(w,h), где w-ширина, а h-высота прямоугольника');
|
||
Field(7,10);
|
||
RobotBeginEnd(2,2,2,2);
|
||
TagRect(2,2,6,9);
|
||
end;
|
||
|
||
procedure pp6;
|
||
begin
|
||
TaskText('Задание pp6. Закрасить несколько прямоугольников, вызывая процедуру Rect(w,h)');
|
||
Field(18,12);
|
||
RobotBeginEnd(2,3,3,7);
|
||
TagRect(2,3,6,5);
|
||
TagRect(3,7,7,11);
|
||
TagRect(9,2,10,7);
|
||
TagRect(12,2,15,7);
|
||
TagRect(10,9,17,11);
|
||
end;
|
||
|
||
procedure pp7;
|
||
var x1,x2,y1,y2: integer;
|
||
begin
|
||
TaskText('Задание pp7. Закрасить помеченные клетки, составив процедуру Perimeter(w,h), где w-ширина, а h-высота прямоугольника');
|
||
Field(13,11);
|
||
RobotBeginEnd(3,2,9,3);
|
||
x1:=3; x2:=7; y1:=2; y2:=5; TagRect(x1,y1,x1,y2); TagRect(x2,y1,x2,y2); TagRect(x1,y1,x2,y1); TagRect(x1,y2,x2,y2);
|
||
x1:=9; x2:=12; y1:=3; y2:=7; TagRect(x1,y1,x1,y2); TagRect(x2,y1,x2,y2); TagRect(x1,y1,x2,y1); TagRect(x1,y2,x2,y2);
|
||
x1:=2; x2:=5; y1:=8; y2:=10; TagRect(x1,y1,x1,y2); TagRect(x2,y1,x2,y2); TagRect(x1,y1,x2,y1); TagRect(x1,y2,x2,y2);
|
||
x1:=3; x2:=7; y1:=2; y2:=5; TagRect(x1,y1,x1,y2); TagRect(x2,y1,x2,y2); TagRect(x1,y1,x2,y1); TagRect(x1,y2,x2,y2);
|
||
end;
|
||
|
||
procedure pp8;
|
||
begin
|
||
TaskText('Задание pp8. Закрасить помеченные клетки, составив процедуру SymbolH(w,h,t), где w-ширина, h-высота символа, а t - расстояние от верхней границы до горизонтальной линии');
|
||
Field(16,8);
|
||
RobotBeginEnd(2,2,13,1);
|
||
TagRect(2,2,2,7); TagRect(5,2,5,7); TagRect(3,4,5,4);
|
||
TagRect(7,3,7,7); TagRect(11,3,11,7); TagRect(8,6,10,6);
|
||
TagRect(13,1,13,7); TagRect(15,1,15,7); Tag(14,2);
|
||
end;
|
||
|
||
procedure br1;
|
||
begin
|
||
TaskText('Задание break1. Остановиться на указанной клетке. Использовать оператор break');
|
||
Field(13,5);
|
||
RobotBeginEnd(2,3,12,3);
|
||
var xx := Random(3,17);
|
||
for var x:=3 to 12 do
|
||
if x <> xx then
|
||
Tag(x,3)
|
||
else
|
||
begin
|
||
HorizontalWall(x,3,1);
|
||
RobotEnd(x,3);
|
||
break;
|
||
end;
|
||
end;
|
||
|
||
procedure br2;
|
||
begin
|
||
TaskText('Задание break2. Остановиться на указанной клетке. Использовать оператор break');
|
||
Field(13,5);
|
||
RobotBeginEnd(2,3,12,3);
|
||
var xx := Random(3,17);
|
||
for var x:=3 to 12 do
|
||
if x <> xx then
|
||
Tag(x,2)
|
||
else
|
||
begin
|
||
HorizontalWall(x,3,1);
|
||
RobotEnd(x,3);
|
||
break;
|
||
end;
|
||
end;
|
||
|
||
procedure br3;
|
||
begin
|
||
TaskText('Задание break3. Остановиться на указанной клетке. Использовать оператор break');
|
||
Field(13,5);
|
||
RobotBeginEnd(2,3,12,3);
|
||
var xx := Random(3,17);
|
||
for var x:=3 to 12 do
|
||
if x <> xx then
|
||
begin
|
||
Tag(x,2);
|
||
Tag(x,3);
|
||
end
|
||
else
|
||
begin
|
||
MarkPainted(x,3);
|
||
RobotEnd(x,3);
|
||
break;
|
||
end;
|
||
end;
|
||
|
||
procedure br4;
|
||
begin
|
||
TaskText('Задание break4. Остановиться на указанной клетке. Использовать оператор break');
|
||
Field(13,5);
|
||
RobotBeginEnd(2,3,12,3);
|
||
var xx := Random(3,17);
|
||
if xx < 13 then
|
||
begin
|
||
HorizontalWall(xx,4,1);
|
||
Tag(xx,4);
|
||
RobotEnd(xx,4);
|
||
end;
|
||
end;
|
||
|
||
procedure br5;
|
||
begin
|
||
TaskText('Задание break5. Остановиться на указанной клетке. Использовать оператор break');
|
||
Field(13,5);
|
||
RobotBeginEnd(2,3,12,3);
|
||
var xx := Random(3,17);
|
||
if xx < 13 then
|
||
begin
|
||
MarkPainted(xx,2);
|
||
RobotEnd(xx,2);
|
||
end;
|
||
end;
|
||
|
||
|
||
procedure examen1;
|
||
begin
|
||
TaskText('Задание examen1. Закрасить помеченные клетки, составив процедуру Punktir');
|
||
Field(15,11);
|
||
RobotBeginEnd(1,1,1,11);
|
||
for var i:=1 to 7 do
|
||
for var j:=1 to 5 do
|
||
Tag(2*i-1,2*j-1);
|
||
end;
|
||
|
||
procedure examen2;
|
||
begin
|
||
TaskText('Задание examen2. Закрасить помеченные клетки, используя процедуру Punktir');
|
||
Field(16,12);
|
||
RobotBeginEnd(2,2,3,11);
|
||
for var i:=1 to 7 do
|
||
begin
|
||
for var j:=1 to 5 do
|
||
begin
|
||
Tag(2*i,2*j); Tag(2*i+1,2*j+1);
|
||
end
|
||
end
|
||
end;
|
||
|
||
procedure examen3;
|
||
var x1,x2,y1,y2: integer;
|
||
begin
|
||
TaskText('Задание examen3. Закрасить помеченные клетки, составив процедуру Perimeter(n,m)');
|
||
Field(13,11);
|
||
RobotBeginEnd(3,2,9,3);
|
||
x1:=3; x2:=7; y1:=2; y2:=5; TagRect(x1,y1,x1,y2); TagRect(x2,y1,x2,y2); TagRect(x1,y1,x2,y1); TagRect(x1,y2,x2,y2);
|
||
x1:=9; x2:=12; y1:=3; y2:=7; TagRect(x1,y1,x1,y2); TagRect(x2,y1,x2,y2); TagRect(x1,y1,x2,y1); TagRect(x1,y2,x2,y2);
|
||
x1:=2; x2:=5; y1:=8; y2:=10; TagRect(x1,y1,x1,y2); TagRect(x2,y1,x2,y2); TagRect(x1,y1,x2,y1); TagRect(x1,y2,x2,y2);
|
||
x1:=3; x2:=7; y1:=2; y2:=5; TagRect(x1,y1,x1,y2); TagRect(x2,y1,x2,y2); TagRect(x1,y1,x2,y1); TagRect(x1,y2,x2,y2);
|
||
end;
|
||
|
||
procedure examen4;
|
||
var n1,n2,len1,len2: integer;
|
||
begin
|
||
TaskText('Задание examen4. Закрасить все клетки вокруг прямоугольника');
|
||
n1:=random(3)+3;
|
||
len1:=random(5)+4;
|
||
n2:=random(3)+3;
|
||
len2:=random(5)+4;
|
||
Field(14,14);
|
||
RobotBeginEnd(n1-1,n2,n1-1,n2);
|
||
HorizontalWall(n1,n2,len1);
|
||
HorizontalWall(n1,n2+len2,len1);
|
||
VerticalWall(n1-1,n2+1,len2);
|
||
VerticalWall(n1-1+len1,n2+1,len2);
|
||
TagRect(n1-1,n2,n1+len1,n2);
|
||
TagRect(n1-1,n2+len2+1,n1+len1,n2+len2+1);
|
||
TagRect(n1-1,n2,n1-1,n2+len2);
|
||
TagRect(n1+len1,n2,n1+len1,n2+len2);
|
||
end;
|
||
|
||
procedure examen5;
|
||
var n: integer;
|
||
begin
|
||
TaskText('Задание examen5. Закрасить все клетки в коридоре переменной длины');
|
||
n:=random(4)+10;
|
||
Field(n,1);
|
||
RobotBeginEnd(1,1,n,1);
|
||
for var i:=1 to n div 2 do
|
||
Tag(i*2,1);
|
||
end;
|
||
|
||
procedure examen6;
|
||
var n,r1,r2: integer;
|
||
begin
|
||
TaskText('Задание examen6. Закрасить помеченные клетки, используя 2 условных оператора в цикле');
|
||
n:=25;
|
||
Field(n,3);
|
||
RobotBeginEnd(1,2,n-1,2);
|
||
VerticalWall(n-1,2,1);
|
||
for var i:=2 to n-1 do
|
||
begin
|
||
r1:=random(2);
|
||
r2:=random(2);
|
||
if (r1=1) and (r2=0) then
|
||
begin
|
||
HorizontalWall(i,1,1);
|
||
Tag(i,3);
|
||
end;
|
||
if (r2=1) and (r1=0) then
|
||
begin
|
||
HorizontalWall(i,2,1);
|
||
Tag(i,1);
|
||
end;
|
||
end;
|
||
end;
|
||
|
||
procedure examen7;
|
||
var n,r1,r2,r3: integer;
|
||
begin
|
||
TaskText('Задание examen7. Закрасить помеченные клетки, используя в условии "and" и "or"');
|
||
n:=25;
|
||
Field(n,3);
|
||
RobotBeginEnd(1,2,n-1,2);
|
||
VerticalWall(n-1,2,1);
|
||
for var i:=2 to n-1 do
|
||
begin
|
||
r1:=random(2);
|
||
r2:=random(2);
|
||
r3:=random(2);
|
||
if r1=1 then
|
||
HorizontalWall(i,1,1);
|
||
if r2=1 then
|
||
HorizontalWall(i,2,1);
|
||
if r3=1 then
|
||
MarkPainted(i,2);
|
||
if (r1=0) and ((r3=1) or (r2=0)) then
|
||
Tag(i,1);
|
||
end;
|
||
end;
|
||
|
||
procedure examen8;
|
||
var n,r: integer;
|
||
begin
|
||
TaskText('Задание examen8. Закрасить клетку в противоположном углу');
|
||
n:=11;
|
||
Field(n,n);
|
||
RobotBegin(1,1);
|
||
r:=random(4);
|
||
if r=0 then
|
||
begin
|
||
RobotBegin(1,1);
|
||
Tag(n,n);
|
||
RobotEnd(n,n);
|
||
end;
|
||
if r=1 then
|
||
begin
|
||
RobotBegin(1,n);
|
||
Tag(n,1);
|
||
RobotEnd(n,1);
|
||
end;
|
||
if r=2 then
|
||
begin
|
||
RobotBegin(n,1);
|
||
Tag(1,n);
|
||
RobotEnd(1,n);
|
||
end;
|
||
if r=3 then
|
||
begin
|
||
RobotBegin(n,n);
|
||
Tag(1,1);
|
||
RobotEnd(1,1);
|
||
end;
|
||
end;
|
||
|
||
procedure examen9;
|
||
var m,n1,n2: integer;
|
||
begin
|
||
TaskText('Задание examen9. Закрасить угол и вернуться. Использовать два счетчика');
|
||
m:=8;
|
||
Field(m,m);
|
||
n1:=random(6)+2;
|
||
n2:=random(6)+2;
|
||
RobotBeginEnd(n1,n2,n1,n2);
|
||
Tag(m,m);
|
||
end;
|
||
|
||
procedure examen10;
|
||
var n1,n2: integer;
|
||
begin
|
||
TaskText('Задание examen10. Обойти стену');
|
||
Field(10,4);
|
||
n1:=random(5)+4;
|
||
n2:=random(4)+1;
|
||
HorizontalWall(1,2,n1);
|
||
RobotBeginEnd(n2,2,n2,3);
|
||
end;
|
||
|
||
procedure zzz;
|
||
begin
|
||
Field(10,2);
|
||
TaskText('Задание c1. Закрасить помеченные клетки');
|
||
CorrectFieldBounds;
|
||
Stop;
|
||
end;
|
||
|
||
var __initialized := false;
|
||
|
||
procedure __InitModule__;
|
||
begin
|
||
if not __initialized then
|
||
begin
|
||
__initialized := true;
|
||
RobotTaskMaker.__InitModule__;
|
||
end;
|
||
end;
|
||
|
||
initialization
|
||
|
||
finalization
|
||
end. |