Optimização dos algoritmos. - página 10

 
Igor Makanu:

o seu exemplo não é uma combinação, mas uma permutação sem repetição

E o meu exemplo é uma conjunção sem repetição.

Oh, então é isso que é suposto ser?

0

1

01

11

001

101

011

...


Então o código não será muito mais complicado para si, mas definitivamente não precisa de tantos loops.

 
Andrey Dik:

Oh, então era esse o plano?

Sim

Tive de gerar nomes de ficheiros no testador, cada ficheiro é um parâmetro de estratégia

e ao gerar combinações sem repetições todas as combinações de TS são combinadas, na última página do tópico está o código que o faz


e o seu problema é fácil de pesquisar no Google "permutações sem repetições repetições s++"

 
Igor Makanu:

e o seu problema é facilmente pesquisado no Google "permutações sem recorrência C++".

Procurei-o no Google, mas a maior parte das vezes não surgem soluções universais.

Mas é muito mais interessante e informativo fazer e descobrir por si próprio).

 
Andrey Dik:

posso ter o código?

input int      StartN = 5;
input int      EndN   = 7;
input int      CountN = 4;
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void OnStart()
  {
   for(int i1=0; i1<30; i1++)
     {
      Print(CombinationGenerator(i1,StartN,EndN,CountN));
     }
  }

//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
string CombinationGenerator(uint iteration_index,int startN, int endN, int countN)
  {
   string result;
   int base=endN-startN+1;
   uint ml=base;
   for(int i1=0; i1<countN; i1++)
     {
      uint md=iteration_index%base;
      result=result+string(md+startN);
      iteration_index=(iteration_index-md)/base;
     }
   return result;
  }

É simples:

2020.07.13 16:45:27.456 test3 (EURUSD,M1)       5555
2020.07.13 16:45:27.456 test3 (EURUSD,M1)       6555
2020.07.13 16:45:27.456 test3 (EURUSD,M1)       7555
2020.07.13 16:45:27.456 test3 (EURUSD,M1)       5655
2020.07.13 16:45:27.456 test3 (EURUSD,M1)       6655
2020.07.13 16:45:27.456 test3 (EURUSD,M1)       7655
2020.07.13 16:45:27.456 test3 (EURUSD,M1)       5755
2020.07.13 16:45:27.456 test3 (EURUSD,M1)       6755
2020.07.13 16:45:27.456 test3 (EURUSD,M1)       7755
2020.07.13 16:45:27.456 test3 (EURUSD,M1)       5565
2020.07.13 16:45:27.456 test3 (EURUSD,M1)       6565
2020.07.13 16:45:27.456 test3 (EURUSD,M1)       7565
2020.07.13 16:45:27.456 test3 (EURUSD,M1)       5665
2020.07.13 16:45:27.456 test3 (EURUSD,M1)       6665
2020.07.13 16:45:27.456 test3 (EURUSD,M1)       7665
2020.07.13 16:45:27.456 test3 (EURUSD,M1)       5765
2020.07.13 16:45:27.456 test3 (EURUSD,M1)       6765
2020.07.13 16:45:27.456 test3 (EURUSD,M1)       7765
2020.07.13 16:45:27.456 test3 (EURUSD,M1)       5575
2020.07.13 16:45:27.456 test3 (EURUSD,M1)       6575
2020.07.13 16:45:27.456 test3 (EURUSD,M1)       7575
2020.07.13 16:45:27.456 test3 (EURUSD,M1)       5675
2020.07.13 16:45:27.456 test3 (EURUSD,M1)       6675
2020.07.13 16:45:27.456 test3 (EURUSD,M1)       7675
2020.07.13 16:45:27.456 test3 (EURUSD,M1)       5775
2020.07.13 16:45:27.456 test3 (EURUSD,M1)       6775
2020.07.13 16:45:27.456 test3 (EURUSD,M1)       7775
2020.07.13 16:45:27.456 test3 (EURUSD,M1)       5556
2020.07.13 16:45:27.456 test3 (EURUSD,M1)       6556
2020.07.13 16:45:27.456 test3 (EURUSD,M1)       7556
 
Aliaksandr Hryshyn:

É simples:

Fixe, obrigado! Vou dar uma vista de olhos.