Bibm@th

Forum de mathématiques - Bibm@th.net

Bienvenue dans les forums du site BibM@th, des forums où on dit Bonjour (Bonsoir), Merci, S'il vous plaît...

Vous n'êtes pas identifié(e).

Répondre

Veuillez composer votre message et l'envoyer
Nom (obligatoire)

E-mail (obligatoire)

Message (obligatoire)

Programme anti-spam : Afin de lutter contre le spam, nous vous demandons de bien vouloir répondre à la question suivante. Après inscription sur le site, vous n'aurez plus à répondre à ces questions.

Quel est le résultat de l'opération suivante (donner le résultat en chiffres)?
quatre-vingt sept plus quatre-vingt
Système anti-bot

Faites glisser le curseur de gauche à droite pour activer le bouton de confirmation.

Attention : Vous devez activer Javascript dans votre navigateur pour utiliser le système anti-bot.

Retour

Résumé de la discussion (messages les plus récents en premier)

yoshi
20-01-2023 21:19:36

Re,

Je ne comprends pas bien ce que tu me demandes ...
1. Tu voudrais  que je purge tous les fichiers de leurs 0--0, 1--1 et 2--2 ?

2. Prenons le cas du fichier FT4.cv : il ne comporte que 2 colonnes.
    Parce qu'il n'y a que deux équipes et 2 matches entre elles (1 Aller et 1 Retour) ??
    Supposons que le score de l'équipe A est toujours à gauche et celui de l'équipe B à droite :


              |  A -- B  |  A -- B
--------------|----------|--------
              |  0 -- 1  |  2 -- 0
Bilan         |  2       |       1
--------------|----------|--------                         |
              |  0 -- 2  |  0 -- 1
Bilan         |  0       |       3

Là, ma supposition donne quelque chose qui se tient, même si ce n'est probablement pas ce que tu veux...
Avec 2 colonnes, ça se comprend...

Si on passe à 3 colonnes, ça ne marche plus...

@+

tamalou
20-01-2023 19:50:28

Bonsoir yoshi ,
c'est bon je l'ai trouvé et t'en remercie beaucoup ,
en revanche pourrait tu faire comme suivant stp ?
pour une combinaison de 2 et 3 match ?

ex pour 2 matchs  résultats exactes soit 1-0 ou 2-0 ou 2-1 combinés pour 2 match soit les possibilités de score 1-0 ou 2-0 ou 2-1
donc equipe 1 score possible
1-0 ou 2-0 ou 2-1
combiné avec
equipe 2 score possible
1-0 ou 2-0 ou 2-1
et l'inverse aussi
equipe 1 score possible
0-1 ou 0-2 ou 1-2
combiné avec
equipe 2 score possible
0-1 ou 0-2 ou 1-2

en gros 3 scores exact possible pour 2x2 equipes combinés
pas de matches nul genre 1-1 0-0 ou 2-2

et puis sur 3 matchs également

Merci

yoshi
19-01-2023 21:13:25

Re,

Mais c'est bien l'adresse que j'ai utilisée...
Vérifie tes Indésirables, voire la corbeille... Aurais-tu une autre messagerie, si oui envoie-la moi à yoshik@no-log.org...
Sinon, si tu n'as rien demain soir, fais-moi signe, je zipperai (si tu ne veux pas de fichier .zip à cause de hotmail susceptible de les refuser, dis-le aussi) les 3 fichiers et les enverrai sur hotmail via WeTransfer...

Donc, je te renvoie : FT4.csv, FT6.csv, FT8.csv
Je peux changer la présentation si tu veux
J'avais fait le job...

Envoi fait à l'instant...

@+

tamalou
19-01-2023 19:52:39

bonsoir Yoshi désolé pour mon temps de reaction ;)

Je ne trouve absolument rien dans la messagerie bibmath dans mon profil

sinon voici mon adresse mail : kevlinli@hotmail.fr

a tres vite j'éspère :)

ps= aurait tu la gentillesse , le temps , la patience de m'envoyer pour une combinaison de 2 et 3 match sil te plait ?

ex pour 2 matchs  résultats exactes soit 1-0 ou 2-0 ou 2-1 combinés pour 2 match soit les possibilités de score 1-0 ou 2-0 ou 2-1
donc equipe 1 score possible
1-0 ou 2-0 ou 2-1
combiné avec
equipe 2 score possible
1-0 ou 2-0 ou 2-1
et l'inverse aussi
equipe 1 score possible
0-1 ou 0-2 ou 1-2
combiné avec
equipe 2 score possible
0-1 ou 0-2 ou 1-2

en gros 3 scores exact possible pour 2x2 equipes combinés
pas de matches nul genre 1-1 0-0 ou 2-2

et puis sur 3 matchs également
si tu as compris tu n'est pas humains :)


MERCI A TOI

yoshi
16-01-2023 19:23:30

Re,

Pas de réaction ???

Bin tant pis ! Ce fut un excellent exercice de style...

@+

yoshi
15-01-2023 16:58:53

Re,

C'est fait depuis hier matin à 10 h 05 depuis la messagerie no-log.org : vérifie, si ta messagerie déclarée à l'inscription sur Bibmath n'a pas refusé le message avec 3  PJ : FT4.csv, FT6.csv, FT8.csv.
Puis je me suis aperçu d'une imperfection dans FT6.csv, j'avais oublié un tiret ce qui faisait que le problème que j'avais cru avoir rectifié apparaissait encore sur une colonne de FT6.
J'ai alors réparé l'oubli et recréé le FT6 que je t'ai renvoyé à 14 h 43...

@+

tamalou
15-01-2023 14:33:01

Bonjour,

Quand tu veux Yoshi , j'attend ton top départ :)

yoshi
13-01-2023 19:21:16

Bonsoir,

F8.csv ne pèse que 109 ko...
Je l'ai ouvert avec Excel sans souci, sauf que...
Sauf que, j'ai constaté avec contrariété que  01-01 était affiché 01-jan, 02-02 était devenu 2-fév...

Alors je l'ai ouvert avec le tableur de la suite bureautique Apache OpenOfficeCalc : affichage conforme à ce que j'attendais...
Alors, j'ai passé plus d'1 h à essayer de supprimer ce réglage de conversion automatique :-
- formatage des cellules avant saisie manuelle : OK !
- formatage de toutes les cellules avant d'ouvrir le fichier .csv : bernique. Impossible... Apparemment après recherches, c'est normal : pas prévu !

J'abandonne !
J'ai ouvert un csv après l'autre dans Apache OpenOfficewriter (et les déplacements étaient fluides) et remplacé tous les occurrences du séparateur ";" par 4 espaces et j'ai enregistré ces .csv en .txt. Résultat des courses : F8.csv 109 ko contre F8.txt : 167 ko. Mais j'ai remplacé 3 ";" par ligne par 4 espaces x 3 par ligne... L'augmentation vient de là.
Vérification : affichage conforme...
Et j'ai converti mes 3 fichiers csv : F4.csv, F6.csv, F8.csv en fichiers .txt.
Réouverture ensuite, avec le Traitement de textes writer et avec le bloc-notes : affichage conforme...

Voilà qui me conforterait, s'il en était besoin, d'avoir abandonné la suite bureautique Microsoft Office, pour OpenOffice (voire son fork), LibreOffice (softs libres et gratuits).

Je vais attendre que Tamalou se re-manifeste : il choisira...

Product plus rapide que ma mouture actuelle où j'ai supprimé la création de la liste L, pour ne garder que celle de P (à la volée) ?
Je vérifierai : avec Product je suis obligé de conserver L pour créer P...
Alors, pour seulement 6561 lignes, le gain ne doit pas être fondamental...

@+

[EDIT] J'ai contourné la difficulté j'ai utilisé 2 tirets au lieu d'un "1--2" au lieu de "1-2"...
Plus de pb... Le F8.csv n'est passé que de 109 ko à 135 ko...
"Si tu ne peux escalader la montagne, fais-en le tour !"

Glozi
12-01-2023 23:40:21

Haha ! Impressionnant ces fichiers de la Poste !
Sinon tu as raison, par une "tonne" je veux dire un $\Theta(\ell\times \log_2(b) \times b^\ell)$ octets, où $b$ est la base, et $\ell$ la longueur du mot. Mais pour $\ell=6$ et $b=3$ c'est sur que tout compte fait ça ne pèse pas grand chose pour nos ordis actuels ! (je m'attendais à plus)

Finalement, je pense que le programme le plus efficace (en temps) est le premier que tu as proposé (car il utilise une fonction toute faite de la librairie python qui a surement été optimisée (et utilise peut-être du code compilé en C au lieu d'un code interprété)), après en "théorie" je disais juste que lorsque $\ell,b\to \infty$ alors il vaut mieux réfléchir à un programme qui réduit aussi la complexité spatiale.

NB : Avec de la RAM à 16Go un programme qui stocke une lourde variable ne pourra pas effectuer la tache demandée pour une certaine limite de $b$ et $\ell$. Cependant avec une méthode "à la volée" alors la limite devient plutôt la limite sur le disque dur si on y écrit les données au fur et à mesure (selon moi c'est essentiellement ça l’intérêt de réduire au plus la complexité spatiale d'un programme, ce n'est clairement pas quelque chose d'utile dans le quotidien !).

Bonne soirée :-)

yoshi
12-01-2023 22:47:34

RE,

la variable P qui pèse une "tonne" n'existe plus !

J'ai fait un essai d'enregistrement du fichier P pour 6...
Je l'ai lu sans souci avec OpenOffice Calc.
Combien pèse-t-il ? 10 ko !!!
Reste à voir avec 8...
On verra, s'il n'est que 9 fois plus lourd, ce ne sera pas la mer à boire !
Par contre, si tu parles de fichier pesant 1 tonne, je peux te citer un fichier texte de la Poste qui contient les noms de toutes les communes, hameaux, lieux-dits, et rues, chemins, impasses, avenues, boulevards de tous les départements (je m'en sers pour le routage de ma revue) :
Un des derniers pèse près de 190Mo (189 et des poussières) et a plus de 67000 pages...
Pour le manipuler (simplement changer de page !!) même avec 16 Go de RAM, c'est une galère sans nom...
Alors j'ai écrit quelques lignes de Python, j'ouvre le fichier, il est lu ligne par ligne, et me crée un fichier par département en 12 s.
Après, comme je n'ai besoin que de quelques départements, ouvrir et manipuler un fichier de département, ça va tout seul...
Alors 6500 lignes à raison de 80 lignes par page (c'est plus ou moins selon la taille des caractères et les marges haute et basse, ça ne fait jamais que 90 pages maxi... Pas si terrible que ça !

@+

Glozi
12-01-2023 17:37:33

Bonjour,
Pourquoi à la place de la ligne


P.append(["-".join(ch[0:2]),"-".join(ch[2:4]),"-".join(ch[4:6])])
 

tu ne mets pas un :


print("-".join(ch[0:2]),"-".join(ch[2:4]),"-".join(ch[4:6]))
 

ou un


print("-".join(ch[0:2]),"-".join(ch[2:4]),"-".join(ch[4:6])) if 20 <= i and i <70 else None
 

à la rigueur pour ne pas avoir trop d'affichage ?
Comme ça le problème du stockage est bien terminé (la variable $P$ qui pèse une "tonne" n'existe plus !)
Bonne journée

yoshi
12-01-2023 13:06:25

Bonjour,

Objection principale levée, je n'ai plus qu'une liste : je crée la 2e "à la volée".
C'est volontairement que je la stocke : je vais créer un fichier .csv pour 4, 6 et 8 : si ça fonctionne, j'intercepterai le stockage pour remplir un fichier après l'autre "à la volée"...

from math import log

def versbase(nbcr,b):
    nb,nbdiv='',int(log(nbcr)//log(b))+1
    for i in range(nbdiv):
        nbcr,r=divmod(nbcr,3)
        nb=str(r)+nb
    return (nb.zfill(6))

nbcr,b=3**6,3
P=[['0-0','0-0','0-0']]
for i in range(i,nbcr):
    ch=versbase(i,b)
    P.append(["-".join(ch[0:2]),"-".join(ch[2:4]),"-".join(ch[4:6])])

for Pi in P[20:70]:
    for score in Pi:
        print(score,end="  ")
    print()
 

Sortie :

0-0  0-2  0-2 
0-0  0-2  1-0 
0-0  0-2  1-1 
0-0  0-2  1-2 
0-0  0-2  2-0 
0-0  0-2  2-1 
0-0  0-2  2-2 
0-0  0-0  0-0 
0-0  1-0  0-1 
0-0  1-0  0-2 
0-0  1-0  1-0 
0-0  1-0  1-1 
0-0  1-0  1-2 
0-0  1-0  2-0 
0-0  1-0  2-1 
0-0  1-0  2-2 
0-0  1-1  0-0 
0-0  1-1  0-1 
0-0  1-1  0-2 
0-0  1-1  1-0 
0-0  1-1  1-1 
0-0  1-1  1-2 
0-0  1-1  2-0 
0-0  1-1  2-1 
0-0  1-1  2-2 
0-0  1-2  0-0 
0-0  1-2  0-1 
0-0  1-2  0-2 
0-0  1-2  1-0 
0-0  1-2  1-1 
0-0  1-2  1-2 
0-0  1-2  2-0 
0-0  1-2  2-1 
0-0  1-2  2-2 
0-0  2-0  0-0 
0-0  2-0  0-1 
0-0  2-0  0-2 
0-0  2-0  1-0 
0-0  2-0  1-1 
0-0  2-0  1-2 
0-0  2-0  2-0 
0-0  2-0  2-1 
0-0  2-0  2-2 
0-0  2-1  0-0 
0-0  2-1  0-1 
0-0  2-1  0-2 
0-0  2-1  1-0 
0-0  2-1  1-1 
0-0  2-1  1-2 
0-0  2-1  2-0

@+

Glozi
11-01-2023 22:27:53

Bonsoir,
Joli code, (je ne connaissais pas zfill, c'est très sympathique) mais du coup tu as encore le "problème" du stockage car a un moment tu stockes toutes les combinaisons simultanément dans la liste L (et aussi dans P). Pour le coup j'aurais fait l'affichage dans la première boucle for de ton programme principal (for i in range(1,nbcr):), après avoir calculé la décomposition de i en base b on l'affiche directement au lieu de l'enregistrer dans L !

Bonne soirée

yoshi
11-01-2023 21:59:08

Bonsoir,

@Glozi
Voici la nouvelle version promise, sans product() et probablement un poil plus lent (pour 6, c'est instantané):

from math import log

def versbase(nbcr,b):
    nb,nbdiv='',int(log(nbcr)//log(b))+1
    for i in range(nbdiv):
        nbcr,r=divmod(nbcr,3)
        nb=str(r)+nb
    return nb

nbcr,b=3**6,3
L=[('0','0','0','0','0','0')]
for i in range(1,nbcr):
    ligne=tuple(versbase(i,b).zfill(6)) # on peut fondre cette ligne avec la suivante : on gagne une ligne et une variable de moins...
    L.append(ligne)

P=[[a+'-'+b,c+'-'+d,e+'-'+f] for a,b,c,d,e,f in L]
for Pi in P[:50]: # (je  limite l'affichage aux 50 premiers)
    for scores in Pi:
        print (scores,end="   ")
    print()
 

Sortie :

0-0   0-0   0-0   
0-0   0-0   0-1   
0-0   0-0   0-2   
0-0   0-0   1-0   
0-0   0-0   1-1   
0-0   0-0   1-2   
0-0   0-0   2-0   
0-0   0-0   2-1   
0-0   0-0   2-2   
0-0   0-1   0-0   
0-0   0-1   0-1   
0-0   0-1   0-2   
0-0   0-1   1-0   
0-0   0-1   1-1   
0-0   0-1   1-2   
0-0   0-1   2-0   
0-0   0-1   2-1   
0-0   0-1   2-2   
0-0   0-2   0-0   
0-0   0-2   0-1   
0-0   0-2   0-2   
0-0   0-2   1-0   
0-0   0-2   1-1   
0-0   0-2   1-2   
0-0   0-2   2-0   
0-0   0-2   2-1   
0-0   0-2   2-2   
0-0   0-0   0-0   
0-0   1-0   0-1   
0-0   1-0   0-2   
0-0   1-0   1-0   
0-0   1-0   1-1   
0-0   1-0   1-2   
0-0   1-0   2-0   
0-0   1-0   2-1   
0-0   1-0   2-2   
0-0   1-1   0-0   
0-0   1-1   0-1   
0-0   1-1   0-2   
0-0   1-1   1-0   
0-0   1-1   1-1   
0-0   1-1   1-2   
0-0   1-1   2-0   
0-0   1-1   2-1   
0-0   1-1   2-2   
0-0   1-2   0-0   
0-0   1-2   0-1   
0-0   1-2   0-2   
0-0   1-2   1-0   
0-0   1-2   1-1

P[728] --> '2-2', '2-2', '2-2'
zfill(6) complète les chaînes-nombres à gauche avec le nombre de zéros voulu pour former une nouvelle chaîne de longueur 6...
nb="12"
nb.zfill(6) renvoie "000012".
Ensuite je convertis cette chaîne en sextuplet...

@+

Glozi
10-01-2023 22:05:55

Bonsoir,
La limite de profondeur pour la récursivité en python est de 1000 par défaut selon un post de Stack overflow (le site m’empêche de poster un lien vers le post précis ?) du coup pour des mots de 8 chiffres on n'a aucun soucis (et ça devrait prendre beaucoup moins de place en mémoire que de stocker toutes les combinaisons possibles).
Bonne nuit également !

Pied de page des forums