Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Задача об n ферзях на DrSheme.

17K
04 апреля 2006 года
Coolest
2 / / 04.04.2006
Мне срочно нужен код программы об n ферзях на доске n x n, на языке DrScheme
вот код проги на Паскале. Плз помогите


program queens;
const n = ...;
var k: 0..n;
c: array [1..n] of 1..n;

procedure begin_work; {начать работу}
begin
k := 0;
end;

function danger: boolean; {верхний ферзь под боем}
var b: boolean;
i: integer;
begin
if k <= 1 then begin
danger := false;
end else begin
b := false; i := 1;
{b <=> верхний ферзь под боем ферзей с номерами < i}
while i <> k do begin
b := b or (c=c[k]) {вертикаль}
or (abs(c-c[k])=abs(i-k)); {диагональ}
i := i+ 1;
end;
danger := b;
end;
end;

function is_up: boolean {есть_сверху}
begin
is_up := (k < n) and not danger;
end;

function is_right: boolean {есть_справа}
begin
is_right := (k > 0) and (c[k] < n);
end;
{возможна ошибка: при k=0 не определено c[k]}

function is_down: boolean {есть_снизу}
begin
is_up := (k > 0);
end;


procedure up; {вверх_налево}
begin {k < n}
k := k + 1;
c [k] := 1;
end;

procedure right; {вправо}
begin {k > 0, c[k] < n}
c [k] := c [k] + 1;
end;

procedure down; {вниз}
begin {k > 0}
k := k - 1;
end;

procedure work; {обработать}
var i: integer;
begin
if (k = n) and not danger then begin
for i := 1 to n do begin
write ('<', i, ',' , c, '> ');
end;
writeln;
end;
end;

procedure UW; {вверх_до_упора_и_обработать}
begin
while is_up do begin
up;
end
work;
end;

begin
begin_work;
UW;
while is_down do begin
if is_right then begin
right;
UW;
end else begin
down;
end;
end;
end.
1.8K
05 апреля 2006 года
LastSoul
279 / / 28.12.2005
Кажется это код проги на PASCALе
17K
05 апреля 2006 года
Coolest
2 / / 04.04.2006
Цитата:
Originally posted by LastSoul
Кажется это код проги на PASCALе


точно извини ошибочка вышла,
прога не моя то

1.8K
05 апреля 2006 года
LastSoul
279 / / 28.12.2005
Но помочь несмогу - DrScheme незнаю
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог