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 cpp : Sélectionner tout - Visualiser dans une fenêtre à part
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 cpp : Sélectionner tout - Visualiser dans une fenêtre à part
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
Partager