Modifié code C++ en Haskell
Bonjour,
Je dois faire un petit code en haskell mais par faute de temps je ne peux le faire.
Il s'agit de traduire une petite fonction de C++ en Haskell.
Il s'agit de la suite deBruijn
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
| void first_test_algo(unsigned int t,
unsigned int p,
const unsigned int k,
const unsigned int n,
unsigned int* a,
std::function<void (unsigned int *, unsigned int *)> callback)
{
if (t > n) {
// we want only necklaces, not pre-necklaces or Lyndon words
if (n % p == 0) {
callback(a+1, a+p+1);
}
}
else {
a[t] = a[t-p];
first_test_algo(t+1, p, k, n, a, callback);
for (unsigned int j = a[t-p]+1; j < k; ++j) {
a[t] = j;
first_test_algo(t+1, t, k, n, a, callback);
}
}
} |
La chose majeur à changer est la partie Callback dans la condition if t > n;
Je n'ai pas à utiliser le callback dans mon programme en Haskell.
Code:
1 2 3 4 5 6 7 8 9 10 11
| struct seq_printer {
const std::vector<char>& _alpha;
seq_printer(const std::vector<char>& alpha) : _alpha(alpha) {}
void operator() (unsigned int* a, unsigned int* a_end) const {
for (unsigned int* i = a; i < a_end; ++i) {
std::cout << _alpha[*i];
}
}
}; |
Cette struct me print ma sequence si t > n.
Voila, merci d'avance pour votre aide