
Bric-à-Brac de Lord Nelson
-
- Messages : 355
- Inscription : dim. 01/déc./2013 15:29
Re: Bric-à-Brac de Lord Nelson
J'y travail, j'y travail, faut juste me laisser du temps 

Re: Bric-à-Brac de Lord Nelson
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 ?
Ce n'était qu'une apparition, je retourne dans la nature... A plus
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
- TazNormand
- Messages : 1297
- Inscription : ven. 27/oct./2006 12:19
- Localisation : Calvados (14)
Re: Bric-à-Brac de Lord Nelson
Bonjour Gebonet,
Ahh content de te revoir ici, tu te fais plutôt très rare ces temps ci
Ahh content de te revoir ici, tu te fais plutôt très rare ces temps ci
- Kwai chang caine
- Messages : 6989
- Inscription : sam. 23/sept./2006 18:32
- Localisation : Isere
Re: Bric-à-Brac de Lord Nelson
+1
Ca fait plaisir d'avoir un "vieux de la vieille" qui repointe son nez

Ca fait plaisir d'avoir un "vieux de la vieille" qui repointe son nez

Re: Bric-à-Brac de Lord Nelson
Bien le bonjour...
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...
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
.
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é
Re Voilà, voilà, des news from Belgium !
Bon baisers et a bientôt pour le prochaine épisode.
Gerhard


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

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é

Re Voilà, voilà, des news from Belgium !
Bon baisers et a bientôt pour le prochaine épisode.
Gerhard
Re: Bric-à-Brac de Lord Nelson
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
A++
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

A++
Re: Bric-à-Brac de Lord Nelson
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.
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
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.
Et qui affiche 10.
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")
Re: Bric-à-Brac de Lord Nelson
Ouais ? Je ne sais pas si tu as essayé les liens ? On est très loin de parler de football ?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.
On parle boulot, d'avenir y compris des développeurs ! Ou alors je n'ai rien compris à ta réponse ?
A++
-
- Messages : 355
- Inscription : dim. 01/déc./2013 15:29
Re: Bric-à-Brac de 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
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
Après:
Édit, pas faut ça merci, c'est fait 

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

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")
Code : Tout sélectionner
Procedure.S Ajoute(Nombre1$, Nombre2$)
ProcedureReturn StrU(Val(Nombre1$) + Val(Nombre2$))
EndProcedure
Debug Ajoute("9223372036854775807", "9223372036854775808")

Dernière modification par Lord Nelson le jeu. 13/nov./2014 23:19, modifié 1 fois.
- falsam
- Messages : 7317
- Inscription : dim. 22/août/2010 15:24
- Localisation : IDF (Yvelines)
- Contact :
Re: Bric-à-Brac de Lord Nelson
Yeahhhh Lord Nelson mais tu peux encore optimiser ce code sans déclarer deux variables dans ta procédure 

Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Re: Bric-à-Brac de Lord Nelson
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?
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?
-
- Messages : 355
- Inscription : dim. 01/déc./2013 15:29
Re: Bric-à-Brac de 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 ?
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")
-
- Messages : 355
- Inscription : dim. 01/déc./2013 15:29
Re: Bric-à-Brac de 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:
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.
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
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
C'est ce que tu trouve: la retenue.Nelson a écrit : Resultat = Chiffre1 + Chiffre2 + Retenue