[Arquivo!] Pura matemática, física, química, etc.: problemas de treinamento do cérebro não relacionados ao comércio de qualquer forma - página 509

 
Mischek:

Eles não o farão. Os vermes também terão os olhos salientes. E isso é um fator dissuasivo.

Caramba! Você está fora do gancho. Um verdadeiro profissional de autopromoção.

 

Os jogadores de hóquei não queriam deixar passar. Na esperança burra de nosso bocejo, eu escrevi um roteiro exagerado. Também diz que "não existe".

Talvez eu tenha bocejado no roteiro? Aqueles que desejarem podem verificar.

// Fixou o roteiro. Foi uma falha não crítica. O resultado permanece o mesmo.

Arquivos anexados:
hockey_1.mq5  2 kb
 
MetaDriver:

Os jogadores de hóquei não queriam deixar passar. Na esperança burra de nosso bocejo, eu escrevi um roteiro exagerado. Também diz que "não existe".

Talvez eu tenha bocejado no roteiro? Aqueles que desejarem podem verificar.

// Fixou o roteiro. Foi uma falha não crítica. O resultado permanece o mesmo.

Eu fiz a mesma coisa depois. A resposta é a mesma! :)))
 
MaxZ:
Eu fiz a mesma coisa depois. A resposta é a mesma! :)))
Mostre-me o código fonte, se você não se importa. Estou interessado em seu algoritmo. Você pode me enviar pessoalmente.
 

Algoritmo de cabeça para baixo. Escreveu sem pensar (3-5 minutos). Leva um longo tempo para contar! :D

for (int A6 = 1; A6 <= 6; A6++)
for (int A5 = 1; A5 <= 6; A5++)
for (int A4 = 1; A4 <= 6; A4++)
for (int A3 = 1; A3 <= 6; A3++)
for (int A2 = 1; A2 <= 6; A2++)
for (int A1 = 1; A1 <= 6; A1++)
for (int B6 = 1; B6 <= 6; B6++)
for (int B5 = 1; B5 <= 6; B5++)
for (int B4 = 1; B4 <= 6; B4++)
for (int B3 = 1; B3 <= 6; B3++)
for (int B2 = 1; B2 <= 6; B2++)
for (int B1 = 1; B1 <= 6; B1++)
   if (A6 != A5 && A6 != A4 && A6 != A3 && A6 != A2 && A6 != A1
                && A5 != A4 && A5 != A3 && A5 != A2 && A5 != A1
                            && A4 != A3 && A4 != A2 && A4 != A1
                                        && A3 != A2 && A3 != A1
                                                    && A2 != A1
    && B6 != B5 && B6 != B4 && B6 != B3 && B6 != B2 && B6 != B1
                && B5 != B4 && B5 != B3 && B5 != B2 && B5 != B1
                            && B4 != B3 && B4 != B2 && B4 != B1
                                        && B3 != B2 && B3 != B1
                                                    && B2 != B1
    && A6 != B6 && A5 != B5 && A4 != B4
    && A3 != B3 && A2 != B2 && A1 != B1)
   {
      int A = A6*100000+A5*10000+A4*1000+A3*100+A2*10+A1;
      int B = B6*100000+B5*10000+B4*1000+B3*100+B2*10+B1;
      if (MathMod(A, B) == 0)
         Print(A6,A5,A4,A3,A2,A1,"/",B6,B5,B4,B3,B2,B1,"=",A/B);
   }

P.S.: então eu percebi, que seria possível fazer iterações em barragens B muito menos...

 
Entendi, obrigado!
 
MaxZ:

Algoritmo de cabeça para baixo. Escreveu sem pensar (3-5 minutos). Leva um longo tempo para contar! :D

P.S.: então percebi, que as iterações sobre B-arrays poderiam ser muito menos...

Estou curioso para saber como e até que ponto esta enumeração poderia ser otimizada.

Aqui eu tenho ~875 ms em uma máquina lenta. (você tem 17516 ms).

Como posso torcê-lo mais dez vezes mais rápido?

Vejo duas opções: (1) cortar o excesso desnecessário, (2) acelerar a validação.

Quais são suas idéias?

// Estou convidando aqueles que gostariam de fazê-lo. Isso servirá para o próximo problema.

 
MetaDriver:

/Incitação de voluntários. Será bom para a próxima tarefa.

Sobre o problema, eu estava pensando a mesma coisa quando estava escrevendo o código! :))) Eu queria sugerir isso. Mas desapareceu, pois tive que criar um novo tópico. Como acelerar o código, eu sei (mas não muito bem vai acabar). Mas não quero apenas acelerá-lo, mas também torná-lo bonito!


MetaDriver:

Vapchet interessante, como e até que ponto este excesso pode ser otimizado.

Minha máquina também é terrível... Não posso testar um Expert Advisor complexo, enquanto um simples pode ser otimizado por muito tempo sem nenhuma complicação! :D


MetaDriver:

Aqui eu tenho ~875 ms em uma máquina lenta. (Você tem 17516 ms).

Como posso torcê-lo mais dez vezes mais rápido?

Vejo duas opções: (1) cortar o excesso desnecessário, (2) acelerar a validação.

Quais são suas idéias?

Acho que se você cortar o exagero, o tempo de execução se aproximará do seu resultado (olhei cuidadosamente para a diferença nos números e pensei "improvável")! Sobre a idéia, continue pensando.

 

E acelerar Meu código pode ser quebrado se, consistindo de uma complexa condição de verificação de 36 entradas, em 36 ifs com uma condição simples! :)))

Acho que o código vai acelerar consideravelmente, embora para saber com certeza você precise entender as instruções da máquina, que são o resultado da compilação.

Em geral, o tema do desempenho sempre me preocupou tanto quanto qualquer outra coisa.

 
MaxZ: E em geral, o tema do desempenho sempre me preocupou tanto quanto qualquer outra coisa.
Eu não gosto de continuar e quebrar os operadores, mas talvez eles possam ajudá-lo, especialmente se você usar a incorporação de 36 vezes de se em mql, isso pode não "funcionar".