Как работает Fannkuch? - PullRequest
       0

Как работает Fannkuch?

7 голосов
/ 04 марта 2010

У меня проблемы с пониманием инструкций по реализации Fannkuch. Инструкции: http://www.haskell.org/haskellwiki/Shootout/Fannkuch

После шага «Подсчитайте количество бросков, здесь 5.», я потерялся.

Ответы [ 2 ]

5 голосов
/ 04 марта 2010

Ух ты, да, это не самое лучшее описание алгоритма:).

Моя интерпретация заключается в том, что они хотят, чтобы вы сделали следующее:

fannkuch(n) {
 int maxFlips = 0, printCount = 0;
 foreach permutation p of [1..n] {
  maxFlips = max(maxFlips, flipCount(p));
  if (printCount++ &lt 30) printPermutation(p);
 }
 print(maxFlips);
}

flipCount(p) {
 int count = 0;
 while (p[0] != 1) {
  reverse(p, p + p[0]);
  count++;
 }
 return count;
}
0 голосов
/ 04 марта 2010

См. Игру Benchmarks - Fannkuch

Требование печати первых 30 перестановок было простым способом ограничить допустимые изменения, которые можно внести в алгоритм.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...