croisement mme

Viewing 4 posts - 16 through 19 (of 19 total)
  • Author
    Posts
  • #177273 quote
    Pepsmile
    Participant
    Veteran

    ok, pour avoir toutes les permutations possibles si on ne veut pas un état permanent tant qu’on a 4 fois A> 4 autres, il aurait fallu faire 3 fois > et une fois cross over, mais en attribuant le cross over tour à tour à chacune des 4mme, et avec un or pour les les 4 groupes de4 conditions. Mais c’est un peu lourd en écriture, une possibilité plus légère pour tenir compte de tous les cas est la suivante:

    J’y ai au passage positionné les flèches au même x = barindex bien sûr, mais avec une ordonnée y compatible avec n’importe quel actif (alors que y=+/-action va mettre la flèche à hauteur +/-1 ce qui est un peu bas sur un graphe CAC40 ou DAX30 par exemple.

    Si on veut les flèches sur le graphe, il ne faut plus faire un “return action” mais juste un “return”, et ajouter l’indicateur à la fenêtre du prix (via la petite clé à molette immédiatement à droite du titre “prix” au coin supérieur gauche de la fenêtre) plutôt qu’en fenêtre séparée sous le prix.

    Si par contre on préfère garder l’indicateur sous le prix en fenêtre séparée pour voir “action” à +/-1, alors il faut garder la ligne “return action” et supprimer le “return” seul. Mais on ne peut pas simultanément avoir un indicateur en fenêtre séparée qui sait mettre la flèche sur le prix, c’est ou l’un ou l’autre (ou alors il faut faire tourner 2 versions de l’indicateur, à la fois une en fenêtre séparée avec “return action” sans flèche, et une sur la fenêtre prix avec “return” et les flèches)

    Bonjour et merci pour vos indications qui simplifient le code de ces permutations.
    Dans un registre similaire, je cherche à coder en langage PRT l’algorithme de Heap sur les permutations (n parmi n) en numérotant les conditions de départ (dans votre code ci-dessus A,B,C,D,E) dans un tableau ($COND) ce qui permettrait aisément de les faire varier. Ainsi, l’ensemble des permutations se retrouverait dans un nouveau tableau sous forme d’un nombre “concaténant” les chiffres résultant de chaque permutation, exemple : chiffres 1,2,3,4,5 -> 12345, etc…
    Le langage à priori qui me semble le plus proche de PRT serait : “Microsoft Small Basic” trouvé ici :
    https://rosettacode.org/wiki/Permutations#Microsoft_Small_Basic

    Est-ce transposable facilement en langage PRT ?

    Merci d’avance pour votre réponse
    Philippe

    ————————————-

    ‘Permutations – sb
    n=4
    printem = “True”
    For i = 1 To n
    p[i] = i
    EndFor
    count = 0
    Last = “False”
    While Last = “False”
    If printem Then
    For t = 1 To n
    TextWindow.Write(p[t])
    EndFor
    TextWindow.WriteLine(“”)
    EndIf
    count = count + 1
    Last = “True”
    i = n – 1
    While i > 0
    If p[i] < p[i + 1] Then
    Last = “False”
    Goto exitwhile
    EndIf
    i = i – 1
    EndWhile
    exitwhile:
    j = i + 1
    k = n
    While j < k
    t = p[j]
    p[j] = p[k]
    p[k] = t
    j = j + 1
    k = k – 1
    EndWhile
    j = n
    While p[j] > p[i]
    j = j – 1
    EndWhile
    j = j + 1

    #177277 quote
    Pepsmile
    Participant
    Veteran

    Voici le code que j’ai traduit vers le langage PRT, il ne fonctionne pas, j’ai du manquer quelque chose…
    Des suggestions ?
    Merci d’avance

    Defparam drawonlastbaronly=true
    n=4
    printem = 1
    
    For i = 1 To n
    $p[i] = i
    Next
    
    count = 0
    Last = 0
    
    While Last = 0
    If printem Then
    For t = 1 To n
    //TextWindow.Write(p[t])
    Imprim = $p[t]
    drawtext("#Imprim#",barindex,t)
    Next // For t = 1 To n
    //TextWindow.WriteLine("")
    drawtext(":",barindex,t)
    
    EndIf // If printem Then
    
    count = count + 1
    Last = 1
    i = n - 1
    
    While i > 0
    If $p[i] < $p[i + 1] Then
    Last = 0
    i = 0// rajout par MOI
    Break // Goto exitwhile
    EndIf // If $p[i] < $p[i + 1]
    
    i = i - 1
    Wend // While i > 0
    
    Last = -1 // Rajout par MOI
    Break // exitwhile:
    j = i + 1
    k = n
    
    While j < k
    t = $p[j]
    $p[j] = $p[k]
    $p[k] = t
    j = j + 1
    k = k - 1
    Wend // While j < k
    
    j = n
    While $p[j] > $p[i]
    j = j - 1
    Wend // While $p[j] > $p[i]
    j = j + 1
    t = $p[i]
    $p[i] = $p[j]
    $p[j] = t
     Wend
    //TextWindow.WriteLine("Number of permutations: "+count)
    drawtext("Count = #count#",barindex,-1)
    Return 0,25
    t_Heap-permutation.itf
    #177308 quote
    Pepsmile
    Participant
    Veteran

    2e essai à partir du Free Basic du même site = résultat boucle sans fin ….
    Les suggestions sont bienvenues 🙂

    Defparam drawonlastbaronly=true
    if barindex = 2 then
    count = 1
    n=3
    For j = 0 To n -1
    $a[j] = J+1
    $c[j] = 0
    Calc = $a[j]
    drawtext("#Calc#",barindex,Calc)
    Next
    drawtext("--",barindex,-1)
    
    i = 0
    
    While i < n
    If $c[i] < i Then
    If i = 0 Then//(i And 1) = 0 Then
    temp = $a[0]
    $a[0] = $a[i]
    $a[i] = temp
    Else
    alpha = $c[i]
    temp =  $a[alpha]
    $a[alpha] = $a[i]
    $a[i] = temp
    EndIf
    For j = 0 To n -1
    Calc = $a[j]
    drawtext("#Calc#",barindex,Calc)
    Next
    count = count + 1
    If count = 12 Then //A VOIR SELON N et N!
    drawtext("Count = #count#",barindex,-1)
    count = 0
    Else
    Calc = $c[i]
    drawtext("---#",barindex,Calc)
    EndIf
    $c[i] = $c[i] = 1
    i = 0
    Else
    $c[i] = 0
    i = i + 1
    EndIf
    Wend
    Endif//if barindex = 1
    Return 0,12
    Heap-FreeBasic.jpg Heap-FreeBasic.jpg t_Heap-permutation_v2-Nok.itf Heap-FreeBasic-1.jpg Heap-FreeBasic-1.jpg
    #177556 quote
    JC_Bywan
    Moderator
    Master

    Bonjour,

    algorithme de Heap pour PRT:

    Defparam drawonlastbaronly=true
    
    if islastbarupdate then // juste pour éviter de refaire plusieurs fois le calcul sur chaque bougie de l'historique, 
    
    n=4
    printem = 1
     
    For i = 1 To n
     $p[i] = i
    Next
     
    count = 0
    Last = 0
     
    While Last = 0
     If printem Then
      For t = 1 To n
       //TextWindow.Write(p[t])
       Imprim = $p[t]
       drawtext("#Imprim#",barindex+t,count+1) // modifié pour afficher horizontalement chaque permutation comme dans le lien du site rosettacode
      Next // For t = 1 To n
      //TextWindow.WriteLine("")
      //drawtext(":",barindex,t)
     
     EndIf // If printem Then
     
     count = count + 1
     Last = 1
     i = n - 1
     
     While i > 0
      If $p[i] < $p[i + 1] Then
       Last = 0
       //i = 0// rajout par MOI // enlevé
       Break // Goto exitwhile
      EndIf // If $p[i] < $p[i + 1]
     
      i = i - 1
     Wend // While i > 0
     
     //Last = -1 // Rajout par MOI // enlevé
     //Break // exitwhile: // enlevé
     j = i + 1
     k = n
     
     While j < k
      t = $p[j]
      $p[j] = $p[k]
      $p[k] = t
      j = j + 1
      k = k - 1
     Wend // While j < k
     
     j = n
     While $p[j] > $p[i]
      j = j - 1
     Wend // While $p[j] > $p[i]
    
     j = j + 1
     t = $p[i]
     $p[i] = $p[j]
     $p[j] = t
    Wend //While Last = 0
    //TextWindow.WriteLine("Number of permutations: "+count)
    drawtext("Count = #count#",barindex,-1)
    endif//modif
    
    Return 0,25
    Nicolas thanked this post
    Heap-algo-2021-09-14.png Heap-algo-2021-09-14.png
Viewing 4 posts - 16 through 19 (of 19 total)
  • You must be logged in to reply to this topic.

croisement mme


ProBuilder : Indicateurs & Outils Personnalisés

New Reply
Author
author-avatar
primo1 @primo1 Participant
Summary

This topic contains 18 replies,
has 2 voices, and was last updated by JC_Bywan
4 years, 6 months ago.

Topic Details
Forum: ProBuilder : Indicateurs & Outils Personnalisés
Language: French
Started: 01/24/2018
Status: Active
Attachments: 5 files
Logo Logo
Loading...