Page 3 sur 6

Re: Bric-à-Brac de Lord Nelson

Publié : mer. 12/nov./2014 23:13
par Lord Nelson
J'y travail, j'y travail, faut juste me laisser du temps :)

Re: Bric-à-Brac de Lord Nelson

Publié : jeu. 13/nov./2014 9:57
par GeBonet
Salut, par rapport au premier code et des résultat qui y sont affiché, il y ce code ci-après !
Cela ne va pas vraiment faire avancer ton problème qui est qu'avant de présenter un code
il faut réfléchir à une MÉTHODE qui fonctionne dans toute les limites pour laquelle il est prévus
sans nécessairement étendre le code lui même... Je ne sais pas très bien quoi ceci pourrait
servir mais certainement pas pour compacter quoi que ce soit... Exercice de style ?

Code : Tout sélectionner

; -----------------------------------------------------------------------------
Compteur1=0                        ;  A chaque séquence 
Compteur2=1                        ;  Compteur pour calcul des limite 
n=1                                      ;  Partie à afficher 
limite = Pow(10 ,Compteur2)  ;  Première limite... 
; ------------------------------------------------------------------------------
For i=0 To 1200               ; Valeur arbitraire pour l'exemple. = 1200 ... 
     If i=limite
          Compteur1=0         ; nouveau départ de compteur 
          Compteur2+1         ; Nouvelle valeur 
          Affiche$=Left("00000000",n)+Str(Compteur1)
          limite = Pow(10 ,Compteur2)+limite ; Nouvelle limite 
          n+1
     Else 
          Affiche$=Left("00000000",n-1)+Str(Compteur1)
     EndIf
     If Len(Affiche$)>Compteur2
          Affiche$=Right(Affiche$,n)
     EndIf     
     Debug "Original ="+Str(i)+" Formaté ="+Affiche$
     Compteur1+1
Next i
Debug "Etc..."
End

Ce n'était qu'une apparition, je retourne dans la nature... A plus

Re: Bric-à-Brac de Lord Nelson

Publié : jeu. 13/nov./2014 12:46
par TazNormand
Bonjour Gebonet,

Ahh content de te revoir ici, tu te fais plutôt très rare ces temps ci

Re: Bric-à-Brac de Lord Nelson

Publié : jeu. 13/nov./2014 13:57
par Kwai chang caine
+1 8)
Ca fait plaisir d'avoir un "vieux de la vieille" qui repointe son nez :wink:

Re: Bric-à-Brac de Lord Nelson

Publié : jeu. 13/nov./2014 15:45
par GeBonet
Bien le bonjour... :D Comme vous le dites, 'vieux de la vieille' et c'était en veille plutôt et ça le restera. Et si vous m'avez entre aperçus c'est simplement que de temps à autre je passe voir ce qui se passe et mettre ma version PB a jours (on ne sait jamais je pourrais y reprendre goût) entre "Game Of Throne", "Fargo", "Breaking Bad", "The Killing Dk Français et la version US" ou autres séries pas trop débile pour mon cerveau de plus en plus débilitant... :lol:
Donc ! voilà, voilà. Puis en passant 'ai vus cette chose étrange (Bric-à-Brac) qui si le code initial est douteux le et ne servant pas à grand chose, mais ayant un certain rythme, ne nécessitant pas plus de neurone que ce qu'il me reste alors j'en ai profité pour tenter de voir si ma version PB fonctionnait toujours !
Voilà, voilà ! En fait ma passion est retombé à l'époque ou un amis sévissais et avais un comportement que par trop agressif et postulant que tout lui était adressé... Alors n'ayant plus trop l'âge du bac a sable, je me suis mis au série... C'est plus reposant 8) .
D'autant qu'en tant que Belge, nous avons une distraction journalière avec un nouveau gouvernement de tendance "Le Pen" style flamand grâce un revirement de veste d'un partis francophone prétendant avant élection qu'il ne s’allierait jamais avec ces gens là ! Le collabo du moment... Alors voilà, c'est grève sur grève etc...Et pour moi, c'est comme une série à la télé :wink:
Re Voilà, voilà, des news from Belgium !
Bon baisers et a bientôt pour le prochaine épisode.
Gerhard

Re: Bric-à-Brac de Lord Nelson

Publié : jeu. 13/nov./2014 15:58
par GeBonet
Ha j'oubliais, regardez ceci, ça parle de votre avenir...
c'est pas long, mais ça va vite... Alors écoutez et ne vous démoralisez pas trop :
https://www.youtube.com/watch?v=uJG50bHdfXU
Alors si vous en voulez une de plus ...
http://mrmondialisation.org/le-travail- ... on-csoj-2/
Et si vous voulez aller plus loin il y a aussi ceci...
Et avec Jeremy-Rifkin la présentation du "Coût marginal zéro" ou la direction de nos économie
http://www.rendezvousdufutur.com/archiv ... emy-Rifkin
Bon, j'arrête, sinon je risque d'avoir des suicides sur la conscience :lol:
A++

Re: Bric-à-Brac de Lord Nelson

Publié : jeu. 13/nov./2014 20:06
par Ollivier
Gebonnet,

Fred a pourtant mis une charte : absolument interdit de parler de football.

Comme tu peux le constater, on parle librement, bien qu'il nous soit très strictement interdit de parler de football.

T'inquiète pas va. Moi, j'ai pas de tv, pas de frigo, pas d'ordi, et j'en passe des choses que j'ai pas mais qui ne sont pas nécessaire au fond. En fait, je m'en cogne royalement de ce qui manque. Tant que je peux faire le daftpunk en scooter pour aller tremper ma baguette mi-cuite dans le thé pas trop bouillu, c'est bon.

Re: Bric-à-Brac de Lord Nelson

Publié : jeu. 13/nov./2014 22:24
par Ollivier
Bon... Nelson, te déconcentre pas.

Parlons "normalement", c'est-à-dire en décimal. Pas en unaire, binaire, cathénaire, octal, çavamal, etc... Juste du normal... Du décimal: 10 doigts.

Donc en calcul NORMAL, on a DIX chiffres. Pas un de plus, pas un de moins.

On les connaît ces chiffres : 0,1,2,3,4,5,6,7,8 et 9.

On veut additionner DEUX chiffres pour obtenir un nombre.

Si mes calculs sont bons, le résultat le plus grand est "18".

Commence par faire une procédure qui est juste capable de faire ça.

Code : Tout sélectionner

Debug Ajoute("5", "5")
Et qui affiche 10.

Re: Bric-à-Brac de Lord Nelson

Publié : jeu. 13/nov./2014 22:37
par GeBonet
Ollivier a écrit :Gebonnet,
Fred a pourtant mis une charte : absolument interdit de parler de football.
Comme tu peux le constater, on parle librement, bien qu'il nous soit très strictement interdit de parler de football.
T'inquiète pas va. Moi, j'ai pas de tv, pas de frigo, pas d'ordi, et j'en passe des choses que j'ai pas mais qui ne sont pas nécessaire au fond. En fait, je m'en cogne royalement de ce qui manque. Tant que je peux faire le daftpunk en scooter pour aller tremper ma baguette mi-cuite dans le thé pas trop bouillu, c'est bon.
Ouais ? Je ne sais pas si tu as essayé les liens ? On est très loin de parler de football ?
On parle boulot, d'avenir y compris des développeurs ! Ou alors je n'ai rien compris à ta réponse ?
A++

Re: Bric-à-Brac de Lord Nelson

Publié : jeu. 13/nov./2014 22:48
par Lord Nelson
Ollivier, rien de plus facile mais c'est nul comme procéder entre nous ;)
J'ai fais ça à la va vite pour te faire plaisir mais c'est loin d'être à mon gout car on est limité !

Note: Remarque pas si nul que ça en faite !
De cette façon je peut aller de 0 à 18446744073709551615 :)

C'est du bricolage hein :wink:
Je suis un peut occupé là mais je vais m'y mettre.

Mon procédé serra différent et non limité en taille à par par la mémoire disponible.
Je travaillerais avec la mémoire pour aller plus vite aussi.

Voila le bousin: Avant

Code : Tout sélectionner

Procedure.S Ajoute(Nombre1$, Nombre2$)
  
  Nombre1 = Val(Nombre1$)
  Nombre2 = Val(Nombre2$)
  
  ProcedureReturn StrU(Nombre1 + Nombre2)
  
EndProcedure

Debug Ajoute("9223372036854775807", "9223372036854775808")
Après:

Code : Tout sélectionner

Procedure.S Ajoute(Nombre1$, Nombre2$)
  ProcedureReturn StrU(Val(Nombre1$) + Val(Nombre2$))
EndProcedure

Debug Ajoute("9223372036854775807", "9223372036854775808")
Édit, pas faut ça merci, c'est fait :)

Re: Bric-à-Brac de Lord Nelson

Publié : jeu. 13/nov./2014 22:50
par falsam
Yeahhhh Lord Nelson mais tu peux encore optimiser ce code sans déclarer deux variables dans ta procédure :)

Re: Bric-à-Brac de Lord Nelson

Publié : ven. 14/nov./2014 8:31
par Ollivier
Noâwon!

Nelson,

Pourquoi t'as été pondre un 2ème code? Le 1er est mieux que le 2ème, va pas optimiser l'inoptimisable. Au contraire, prend soin d'allouer une variable de résultat avec Protected, et pense bien à séparer ton calcul de ProcedureReturn. Ça te permettra de savoir que tu as zappé l'adéquation d'interface entre ton programme et ta procédure.

Règle n1: Quand je veux créer une procédure, macro, méthode, fonction ou autres zébulon, je fais l'inventaire total de ce qui rentre et ce qui sort (définition du sous-système, par ses interactions avec le système).
Pour chaque élément, je dois définir obligatoirement un nom et un type, compatible avec le compilateur courant. Ici, il te manque le nom de la variable qui sort de ta procédure.

Corrige le tir s'il-te-plaît.

Chaque chose en son temps Nelson. Ça donne quoi comme code ça?

Re: Bric-à-Brac de Lord Nelson

Publié : ven. 14/nov./2014 11:33
par Lord Nelson
Ollivier, je fais de mon mieux !

N'oublie pas que c'est pas mon code finale, juste de la bidouille ;)
C'est mieux ça ?

Code : Tout sélectionner

Procedure.S Ajoute(Nombre1.S, Nombre2.S)
  
  Protected ParseNombre1.Q, ParseNombre2.Q, Resultat.S
  
  ParseNombre1.Q = Val(Nombre1.S)
  ParseNombre2.Q = Val(Nombre2.S)
  
  Resultat.S = StrU(ParseNombre1.Q + ParseNombre2.Q)
  ProcedureReturn Resultat.S
  
EndProcedure

Debug Ajoute("9223372036854775807", "9223372036854775808")

Re: Bric-à-Brac de Lord Nelson

Publié : ven. 14/nov./2014 17:15
par Lord Nelson
Bon voici un début de code qui me plais déjà un peut plus, je fais en sorte d'être le plus rapide possible.
J'ai fais un test avec plus de 96 000 000 de chiffre et c'est plutôt rapide, moins d'une minute je crois...

C'est pas au point loin de là mais déjà c'est un début:

Code : Tout sélectionner

file$ = OpenFileRequester("S�lectionnez le fichier 1","","Text (.txt)|*.txt|All files (*.*)|*.*",0)
If file$
  If ReadFile(0, file$) 
    length1 = Lof(0) ; Lit la taille en octets du fichier 
    *MemoryID1 = AllocateMemory(length1) ; alloue un bloc m�moire de la taille du fichier "length"
    If *MemoryID1                       ; si l'allacation a bien fonctionner ont continue
      ReadData(0, *MemoryID1, length1)   ; Lit les donn�es du fichier et les place dans le bloc m�moire "*MemoryID" de la taille correspondant � "length"
      *Fichier1.String = @*MemoryID1     ; "*Fichier" a pour valeur l'adresse o� r�side la cha�ne de caract�res en m�moire "*MemoryID"
      Fichier1$ = *Fichier1\s            ; "Fichier$" � pour valeur le texte o� r�side la cha�ne de caract�res en m�moire "*MemoryID"
    EndIf
    CloseFile(0)
  EndIf
EndIf

file$ = OpenFileRequester("S�lectionnez le fichier 1","","Text (.txt)|*.txt|All files (*.*)|*.*",0)
If file$
  If ReadFile(0, file$) 
    length2 = Lof(0) ; Lit la taille en octets du fichier 
    *MemoryID2 = AllocateMemory(length2) ; alloue un bloc m�moire de la taille du fichier "length"
    If *MemoryID2                       ; si l'allacation a bien fonctionner ont continue
      ReadData(0, *MemoryID2, length2)   ; Lit les donn�es du fichier et les place dans le bloc m�moire "*MemoryID" de la taille correspondant � "length"
      *Fichier2.String = @*MemoryID2     ; "*Fichier" a pour valeur l'adresse o� r�side la cha�ne de caract�res en m�moire "*MemoryID"
      Fichier2$ = *Fichier2\s            ; "Fichier$" � pour valeur le texte o� r�side la cha�ne de caract�res en m�moire "*MemoryID"
    EndIf
    CloseFile(0)
  EndIf
EndIf

If length1 > length2
  length3 = length1
ElseIf length2 > length1
  length3 = length2
Else
  length3 = length1
EndIf

*MemoryID3 = AllocateMemory(length3 + 1) ; alloue un bloc m�moire de la taille du fichier "length"

If *MemoryID3                       ; si l'allacation a bien fonctionner ont continue
  
A = ElapsedMilliseconds()

For I = length3 - 1 To 0 Step -1
  
  Chiffre1 = Val(PeekS(*MemoryID1 + I, 1, #PB_Ascii))
  Chiffre2 = Val(PeekS(*MemoryID2 + I, 1, #PB_Ascii))

  Resultat = Chiffre1 + Chiffre2 + Retenue

  If Len(Str(Resultat)) > 1
    Retenue = Val(Mid(Str(Resultat), 1, 1))
  Else
    Retenue = 0
  EndIf
  
  If Len(Str(Resultat)) = 1
    Chiffre3 = Val(Mid(Str(Resultat), 1, 1))
    Else
      Chiffre3 = Val(Mid(Str(Resultat), 2, 1))
    EndIf
    
  PokeS(*MemoryID3 + Position, Str(Chiffre3), -1, #PB_Ascii)
  Position + 1
  
Next

B = ElapsedMilliseconds()

Debug ReverseString(PeekS(*MemoryID3, -1, #PB_Ascii))
EndIf
Note, ici il faut que les deux fichier soit de taille identique, ne commence pas par un 0 et ne contienne que des chiffres.
Quand au résultat, ya des chance qu'il soient pas trop mal :)

Oui, je choisie de travailler directement en mémoire pour optimiser la vitesse de calcule, pas de tableau, prend trop de temps mais après à voir.
Ollivier, cette méthode te plaira peut être pas mais pourtant elle est rapide, c'est un premier jet, j'ai pas chercher à optimiser un maxi et je sais pas si les résultat sont correcte.

Re: Bric-à-Brac de Lord Nelson

Publié : ven. 14/nov./2014 18:29
par Ollivier
Nelson a écrit : Resultat = Chiffre1 + Chiffre2 + Retenue
C'est ce que tu trouve: la retenue.