Перейти к содержанию
    

Народ, давайте серьезную задачу сформулируем.

Например, "8 ферзей".

Найти все возможные варианты расстановки 8 ферзей на шахматной доске, при которой ни один из них не бьет других. Никакой графики, варианты выдавать в виде строк типа "а3 b7 e8 ..."

Это чистая алгоритмика, интересно будет сравнить

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

неожиданно наталкиваешься на давно забытые штуки типа режима консольного ввода :)

Что значит забытые??? ( :laughing: А теперь понаблюдаем за холиваром GUI vs CLI)

 

 

Народ, давайте серьезную задачу сформулируем.

Например, "8 ферзей".

Ага... Сурьезная задача ;)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ага... Сурьезная задача ;)

 

Ну всяко интереснее, чем ввод-вывод строк мусолить ;)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

...давайте серьезную задачу сформулируем.

Например, "8 ферзей"...

Эту задачу люди на МК-61 (микрокалькулятор такой, кто помнит) решали. Вариантов программ было множество, включая вариант, учитывающий "зеркальность" некоторых расстановок... А память команд МК-61 была шагов на 102, если склероз не изменяет...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А память команд МК-61 была шагов на 102, если склероз не изменяет...

105. У 54-го 98 (это если склероз не изменяет мне).

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Эту задачу люди на МК-61 (микрокалькулятор такой, кто помнит) решали. Вариантов программ было множество, включая вариант, учитывающий "зеркальность" некоторых расстановок... А память команд МК-61 была шагов на 102, если склероз не изменяет...

 

Ну и здорово. Я же не предлагаю написать шахматную программу уровня Deep Blue :biggrin:

Для сравнительного теста в самый раз будет

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Например, "8 ферзей".

 

Это чистая алгоритмика, интересно будет сравнить

По двум критериям? размер исходника/размер ехешника ?

Вот нагуглил

program ferz;
uses crt;
var s,i:integer;
a:array[1..8] of boolean;
b:array[2..16] of boolean;
c:array[-7..7] of boolean;
x:array[1..8]of integer; 

procedure print;
var k:integer;
begin
s:=s+1;
write('Решение номер ',s:2,' : ');
for k:=1 to 8 do write(x[k]:4);
writeln;
write('Press <Enter>');
readln;
end;{of print}

procedure try(i:integer);
var j:integer;
begin
for j:=1 to 8 do
if a[j]and b[i+j]and c[i-j] then
begin
x[i]:=j;
a[j]:=false;b[i+j]:=false;c[i-j]:=false;
if i<8 then try(i+1) else print;
a[j]:=true;b[i+j]:=true;c[i-j]:=true;
end;
end;{of try}

begin{of main}
clrscr;
for i:=1 to 8 do a[i]:=true;
for i:=2 to 16 do b[i]:=true;
for i:=-7 to 7 do c[i]:=true;
s:=0;
try(1)
end.

Рекурсия.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

задача о ферзях для доски N*N, критерий - максимальное N для времени счета не более 1 мин. Или 10 мин.

Изменено пользователем Leka

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Казалось бы, причём тут микроконтроллеры Atmel AVR....

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Казалось бы, причём тут микроконтроллеры Atmel AVR....

+1! Вот и я удивляюсь...

Мало того, что спорщики уже давно спорят "ради спора", признавая, что переубедить их нереально в любом случае...

Мало того, что скатились, как обычно, до взаимных обвинений...

Мало того, что аргументов на всём 20-страничном сражении так и не встретилось...

Кажется, и сам предмет спора вот-вот будет забыт...

Господа! Вспомните хоть название темы!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вот зануды... Если бы все посты во всех темах были по делу, Электроникс ужался бы раз в 10 :)

Сейчас проверим, как Пашин вариант в Дельфях фунциклирует

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Твёрдое окончательное Тьфу.

 

Шумный, бурлящий слифф засчитан. Расчёт окончен.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вольно, Вечный Облом :biggrin:

 

Exe-шник получился 374 Кб в Дельфи 7. Найдены все 92 варианта, ура!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Мало того, что аргументов на всём 20-страничном сражении так и не встретилось...

Гы! Автор спросил, какие есть паскалевские компиляторы, и все началось - что мол нафиг оно надо, итд.

 

Господа! Вспомните хоть название темы!

А чего вспоминать? Ну нет нормальных паскалей для АВР! Уже ж все выяснили...

 

задача о ферзях для доски N*N, критерий - максимальное N для времени счета не более 1 мин. Или 10 мин.

Не согласен. А как избавиться от оси? Она ж тормозить станет... результаты случайные получатся

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Кстати, о ферзях и различиях между С и Паскалем

======== Г. С. Цейтин, Алгол-68
рrос Ферзи = (int k, proc(int, int) bool Можно, proc void Печать) void: 
  if k = 8 then 
    Печать
  else
    int p = k+1;
    for q to 8 do
      if Можно (p,q) then
        proc МожноHовое = (int x,y) bool: 
          if у = q or x-p = abs(y-q) then
            false
          else
            Можно(x,y)
          fi;
        proc ПечатьHовое = void:
          (Печать; print((",", "abcdefgh"[p], "12345678"[q])));
        Ферзи(p, МожноHовое, ПечатьHовое)
      fi
    od
  fi;

proc МожноHачальное = (int x, y) bool: true;

proc ПечатьHачальная = void: print(newline);

Ферзи(О, МожноHачальное, ПечатьHачальная);
========

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...