Topic de KheyAuxPommes :

[Prog] Cet exo d'algo basique DETROUSSE le 18-25

Le 08 décembre 2018 à 02:12:36 Silencieux_25 a écrit :
J'ai trouvé plus de 12000 pour la taille de la chaîne de caractéres et pas 9300 et quelques :snif2:

poste ton code source ici

Je ris quand je vois que je galèrerais pour des choses basiques , j’ai l’impression que ça parle une autre langue ici :rire:

Le 08 décembre 2018 à 01:49:26 GeoFront a écrit :

Le 08 décembre 2018 à 01:45:21 MecHonnete a écrit :
À mon tour :

Vous avez six parts de tarte
Vous en donnez deux à Émile
Combien vous en reste-t-il ?

Faites l'algo

Bah si Emile il est pas content il chourrave toute la tarte et nous on a plus rien

Tu peux te battre avec Émile
Ça devient un problème de théorie microéconomique

Tu as 6 parts de tartes, et tu en donnes deux à Émile
Émile est associé à une probabilité p pour laquelle il est content
Si l'événement Émile_content se réalise, Émile est associé à une probabilité q qu'il n'ait plus faim, et pour (1-q) il demande une nouvelle part de tarte
Si Émile est content et qu'il n'a plus faim, il part
Si Émile est content mais qu'il a encore faim, il te demande une nouvelle part si son coefficient de réserve mu est strictement inférieur à 0.4, pour mu compris entre 0 et 1 appartenant à R
Si Émile est content, qu'il a encore faim et pour mu >= 0.4, il part
Si Émile est content, qu'il a encore faim et pour mu < 0.4, il demande une nouvelle part, tu as le choix d'accepter ou de refuser : si tu refuses, Émile a le choix de se battre pour sa part, ou de repartir le ventre vide, cependant tu ne refuses sa part qu'en fonction de ton aversion au combat A, et lui ne la réclame de force qu'en fonction de la sienne B, avec (A,B) appartenant à [0;1]^2
On se place dans un contexte où la fonction d'utilité d'Émile est de la forme sqrt(.), et la tienne ln(.), pour une tarte de valeur v, et une variable aléatoire X qui suit le coût des parts mangées par Émile de loi inconnue

Pour (1-p), Émile n'est vraiment pas content, et demande une nouvelle part de tarte avec une probabilité certaine

Combien de parts de tarte peux-tu espérer avoir quand Émile sera parti ?

Le 08 décembre 2018 à 02:16:38 MecHonnete a écrit :

Le 08 décembre 2018 à 01:49:26 GeoFront a écrit :

Le 08 décembre 2018 à 01:45:21 MecHonnete a écrit :
À mon tour :

Vous avez six parts de tarte
Vous en donnez deux à Émile
Combien vous en reste-t-il ?

Faites l'algo

Bah si Emile il est pas content il chourrave toute la tarte et nous on a plus rien

Tu peux te battre avec Émile
Ça devient un problème de théorie microéconomique

Tu as 6 parts de tartes, et tu en donnes deux à Émile
Émile est associé à une probabilité p pour laquelle il est content
Si l'événement Émile_content se réalise, Émile est associé à une probabilité q qu'il n'ait plus faim, et pour (1-q) il demande une nouvelle part de tarte
Si Émile est content et qu'il n'a plus faim, il part
Si Émile est content mais qu'il a encore faim, il te demande une nouvelle part si son coefficient de réserve mu est strictement inférieur à 0.4, pour mu compris entre 0 et 1 appartenant à R
Si Émile est content, qu'il a encore faim et pour mu >= 0.4, il part
Si Émile est content, qu'il a encore faim et pour mu < 0.4, il demande une nouvelle part, tu as le choix d'accepter ou de refuser : si tu refuses, Émile a le choix de se battre pour sa part, ou de repartir le ventre vide, cependant tu ne refuses sa part qu'en fonction de ton aversion au combat A, et lui ne la réclame de force qu'en fonction de la sienne B, avec (A,B) appartenant à [0;1]^2
On se place dans un contexte où la fonction d'utilité d'Émile est de la forme sqrt(.), et la tienne ln(.), pour une tarte de valeur v, et une variable aléatoire X qui suit le coût des parts mangées par Émile de loi inconnue

Pour (1-p), Émile n'est vraiment pas content, et demande une nouvelle part de tarte avec une probabilité certaine

Combien de parts de tarte peux-tu espérer avoir quand Émile sera parti ?

non mais dans ces cas là autant programmer un système de combat et faire un jeux rpg en mode :rire:

Le 08 décembre 2018 à 02:12:36 Silencieux_25 a écrit :
J'ai trouvé plus de 12000 pour la taille de la chaîne de caractéres et pas 9300 et quelques :snif2:

poste ton code source ici

Le voilà mais j'ai pas eu le temps de le commenter/présenter plus clairement, il tient pas en moins de 10 lignes non plus ^^

<code>import string
import urllib

link = "https://pastebin.com/raw/5QtbiaCd"
f = urllib.urlopen(link)
chaine = f.read()
#chaine = "dabAcCaCBAcCcaDA"
alphabet_minuscule = string.ascii_lowercase
alphabet_majuscule = string.ascii_uppercase
indices = []
indices_a_supprimer = []
liste_chaine = list(chaine)
print(liste_chaine)
print(len(liste_chaine))
compte = 1
while compte == 1:
 compte = 0
 for i in range(0, len(liste_chaine) - 1):
   for j in range(0, len(alphabet_minuscule)):
     if (liste_chaine[i] == alphabet_minuscule[j] and liste_chaine[i + 1] == alphabet_majuscule[j]) or (liste_chaine[i] == alphabet_majuscule[j] and liste_chaine[i + 1]  == alphabet_minuscule[j]):
       if i < len(liste_chaine) - 2:
        if liste_chaine[i + 2] != alphabet_minuscule[j] and liste_chaine[i + 2] != alphabet_minuscule[j]:
         indices.append(i)
         indices.append(i+1)
         compte = 1
       if i == len(liste_chaine) - 2:
        if liste_chaine[i - 2] != alphabet_minuscule[j] and liste_chaine[i - 2] != alphabet_minuscule[j]:
         indices.append(i)
         indices.append(i+1)
         compte = 1
 for indice in indices:
   if indice not in indices_a_supprimer:
     indices_a_supprimer.append(indice)
 
 indices_a_supprimer.reverse()
 for indice in indices_a_supprimer:   
     del liste_chaine[indice]
   
 indices = []
 indices_a_supprimer = []


print(liste_chaine)
print("taille de la chaine restante : ",len(liste_chaine))</code>

Le 08 décembre 2018 à 02:18:16 GeoFront a écrit :

Le 08 décembre 2018 à 02:16:38 MecHonnete a écrit :

Le 08 décembre 2018 à 01:49:26 GeoFront a écrit :

Le 08 décembre 2018 à 01:45:21 MecHonnete a écrit :
À mon tour :

Vous avez six parts de tarte
Vous en donnez deux à Émile
Combien vous en reste-t-il ?

Faites l'algo

Bah si Emile il est pas content il chourrave toute la tarte et nous on a plus rien

Tu peux te battre avec Émile
Ça devient un problème de théorie microéconomique

Tu as 6 parts de tartes, et tu en donnes deux à Émile
Émile est associé à une probabilité p pour laquelle il est content
Si l'événement Émile_content se réalise, Émile est associé à une probabilité q qu'il n'ait plus faim, et pour (1-q) il demande une nouvelle part de tarte
Si Émile est content et qu'il n'a plus faim, il part
Si Émile est content mais qu'il a encore faim, il te demande une nouvelle part si son coefficient de réserve mu est strictement inférieur à 0.4, pour mu compris entre 0 et 1 appartenant à R
Si Émile est content, qu'il a encore faim et pour mu >= 0.4, il part
Si Émile est content, qu'il a encore faim et pour mu < 0.4, il demande une nouvelle part, tu as le choix d'accepter ou de refuser : si tu refuses, Émile a le choix de se battre pour sa part, ou de repartir le ventre vide, cependant tu ne refuses sa part qu'en fonction de ton aversion au combat A, et lui ne la réclame de force qu'en fonction de la sienne B, avec (A,B) appartenant à [0;1]^2
On se place dans un contexte où la fonction d'utilité d'Émile est de la forme sqrt(.), et la tienne ln(.), pour une tarte de valeur v, et une variable aléatoire X qui suit le coût des parts mangées par Émile de loi inconnue

Pour (1-p), Émile n'est vraiment pas content, et demande une nouvelle part de tarte avec une probabilité certaine

Combien de parts de tarte peux-tu espérer avoir quand Émile sera parti ?

non mais dans ces cas là autant programmer un système de combat et faire un jeux rpg en mode :rire:

Pie fight 2019, GOTY, 4K 250fps et vous les consoleux ? :ouch:

Le 08 décembre 2018 à 02:21:59 MecHonnete a écrit :

Le 08 décembre 2018 à 02:18:16 GeoFront a écrit :

Le 08 décembre 2018 à 02:16:38 MecHonnete a écrit :

Le 08 décembre 2018 à 01:49:26 GeoFront a écrit :

Le 08 décembre 2018 à 01:45:21 MecHonnete a écrit :
À mon tour :

Vous avez six parts de tarte
Vous en donnez deux à Émile
Combien vous en reste-t-il ?

Faites l'algo

Bah si Emile il est pas content il chourrave toute la tarte et nous on a plus rien

Tu peux te battre avec Émile
Ça devient un problème de théorie microéconomique

Tu as 6 parts de tartes, et tu en donnes deux à Émile
Émile est associé à une probabilité p pour laquelle il est content
Si l'événement Émile_content se réalise, Émile est associé à une probabilité q qu'il n'ait plus faim, et pour (1-q) il demande une nouvelle part de tarte
Si Émile est content et qu'il n'a plus faim, il part
Si Émile est content mais qu'il a encore faim, il te demande une nouvelle part si son coefficient de réserve mu est strictement inférieur à 0.4, pour mu compris entre 0 et 1 appartenant à R
Si Émile est content, qu'il a encore faim et pour mu >= 0.4, il part
Si Émile est content, qu'il a encore faim et pour mu < 0.4, il demande une nouvelle part, tu as le choix d'accepter ou de refuser : si tu refuses, Émile a le choix de se battre pour sa part, ou de repartir le ventre vide, cependant tu ne refuses sa part qu'en fonction de ton aversion au combat A, et lui ne la réclame de force qu'en fonction de la sienne B, avec (A,B) appartenant à [0;1]^2
On se place dans un contexte où la fonction d'utilité d'Émile est de la forme sqrt(.), et la tienne ln(.), pour une tarte de valeur v, et une variable aléatoire X qui suit le coût des parts mangées par Émile de loi inconnue

Pour (1-p), Émile n'est vraiment pas content, et demande une nouvelle part de tarte avec une probabilité certaine

Combien de parts de tarte peux-tu espérer avoir quand Émile sera parti ?

non mais dans ces cas là autant programmer un système de combat et faire un jeux rpg en mode :rire:

Pie fight 2019, GOTY, 4K 250fps et vous les consoleux ? :ouch:

:rire: la rage des pro M des pro S et des pro N se fait entendre :rire:

import string import urllib link = "https://pastebin.com/raw/5QtbiaCd" f = urllib.urlopen(link) chaine = f.read() #chaine = "dabAcCaCBAcCcaDA" alphabet_minuscule = string.ascii_lowercase alphabet_majuscule = string.ascii_uppercase indices = [] indices_a_supprimer = [] liste_chaine = list(chaine) print(liste_chaine) print(len(liste_chaine)) compte = 1 while compte == 1: compte = 0 for i in range(0, len(liste_chaine) - 1): for j in range(0, len(alphabet_minuscule)): if (liste_chaine[i] == alphabet_minuscule[j] and liste_chaine[i + 1] == alphabet_majuscule[j]) or (liste_chaine[i] == alphabet_majuscule[j] and liste_chaine[i + 1] == alphabet_minuscule[j]): if i < len(liste_chaine) - 2: if liste_chaine[i + 2] != alphabet_minuscule[j] and liste_chaine[i + 2] != alphabet_minuscule[j]: indices.append(i) indices.append(i+1) compte = 1 if i == len(liste_chaine) - 2: if liste_chaine[i - 2] != alphabet_minuscule[j] and liste_chaine[i - 2] != alphabet_minuscule[j]: indices.append(i) indices.append(i+1) compte = 1 for indice in indices: if indice not in indices_a_supprimer: indices_a_supprimer.append(indice) indices_a_supprimer.reverse() for indice in indices_a_supprimer: del liste_chaine[indice] indices = [] indices_a_supprimer = [] print(liste_chaine) print("taille de la chaine restante : ",len(liste_chaine))

bordel de merde https://image.noelshack.com/fichiers/2017/19/1494632637-risitas-satan.png

public static int reducedLength(String line) {
__for (int i = 0; i < line.length; i++)
____for (int j = 0; j < line.length - 1; j++)
______if ((line.charAt(j) == line.charAt(j + 1).toLowerCase && line.charAt(j + 1).isUpperCase) || (line.charAt(j) == line.charAt(j + 1).toUpperCase && line.charAt(j).isUpperCase))
________line = line.subString(0, j - 1) + line.subString(j + 1, line.length - 1);
__return line.length;
}

Indentation avec "__" désolé
Potentiellement pas opti
Mais aucune consigne de l'auteur à ce propos

dans un premier temps on identifie l'ensemble des mots dont le centre est de rang 2^n et dont dont le mot de taille 2^n dont il en est le centre forme un mot totalement simplifiable
On note M la taille du gros mot et ln le log en base2 et ln_4 log en base 4
A n fixe il y a M/2^n lettre ou des verif sont a faire et la verif prend 2^n temps donc a n fixe on a un temps de M et comme n navigue entre 1 et ln(M) ca fait ln(M)M comme temps.
Dans la suite ce que j'appelle l'algorthime consiste a identife les sous mots simplifiable de la forme decrite au debut puis a les simplifier (une fois tous identifier pas au fur et a mesure que n augmente). Quand je dirai que l'algorithme est repete cela signifie obv qu'il est repete sur la simplification de M obtenue precedement. Dans le calcul de complexite je neglige l'etape qui consiste en l'elaboration du mot simplifie une fois les simplifications de forme definie precedemment identifiees pcq il est tard.
Maintenant je vous laisse verifier (ce que j'ai pas fait mais geometriquement ca me semble bon) que soit X un sous mot totalement simplifiable de taille l et soit p = max{n | 2^n <= l} alors l'algorithme ci dessus identifie un sout mot totalement simplifiable de X de taille 2^p-1 c'est a dire au moin un quart de la taille de X.
X etant au maximum de taille M il faudrait au maximum pour le reduire totalement repete x fois l'algorithme avec x verifiant (M/4)^x = 1 soit x = ln_4(M). D'ou une complexite en ln(M)ln_4(M)M.

J'ai presque jamais fait d'info donc je dis peut etre de la merde.

Donc si on en suit le titre cet algo vient de me vider les poches :(

Le 08 décembre 2018 à 02:42:53 F2P_2LaNuit a écrit :
dans un premier temps on identifie l'ensemble des mots dont le centre est de rang 2^n et dont dont le mot de taille 2^n dont il en est le centre forme un mot totalement simplifiable
On note M la taille du gros mot et ln le log en base2 et ln_4 log en base 4
A n fixe il y a M/2^n lettre ou des verif sont a faire et la verif prend 2^n temps donc a n fixe on a un temps de M et comme n navigue entre 1 et ln(M) ca fait ln(M)M comme temps.
Dans la suite ce que j'appelle l'algorthime consiste a identife les sous mots simplifiable de la forme decrite au debut puis a les simplifier (une fois tous identifier pas au fur et a mesure que n augmente). Quand je dirai que l'algorithme est repete cela signifie obv qu'il est repete sur la simplification de M obtenue precedement. Dans le calcul de complexite je neglige l'etape qui consiste en l'elaboration du mot simplifie une fois les simplifications de forme definie precedemment identifiees pcq il est tard.
Maintenant je vous laisse verifier (ce que j'ai pas fait mais geometriquement ca me semble bon) que soit X un sous mot totalement simplifiable de taille l et soit p = max{n | 2^n <= l} alors l'algorithme ci dessus identifie un sout mot totalement simplifiable de X de taille 2^p-1 c'est a dire au moin un quart de la taille de X.
X etant au maximum de taille M il faudrait au maximum pour le reduire totalement repete x fois l'algorithme avec x verifiant (M/4)^x = 1 soit x = ln_4(M). D'ou une complexite en ln(M)ln_4(M)M.

J'ai presque jamais fait d'info donc je dis peut etre de la merde.

la premiere phrase j'ai melange deux formulation, il faut lire: *dans un premier temps on identifie l'ensemble des mots totalement simplifiable de taille 2^n dont le centre est de rang de la forme k*2^n

dsl

edit: bordel

Il a dit qu'il s'était trompé et que c'était bien 9359 , bravo à toi
si quelqu'un a une complexite lineaire je demande a voir. Si c'est de la recursivite qu'il se contente de dire recursivite j'ai pas cherche dans cette voie je suis partis du principe que la solution etait un minimum sympas
PinkHair t'as toujours pas dit ce que t'a avais fait comme études https://image.noelshack.com/fichiers/2016/41/1476132386-1.png

La fac d'info, ça apprends des algo inutiles, par contre dès que faut faire de la POO, ils sont plus là :rire2:

Dut > licence :ok:

Le 08 décembre 2018 à 13:44:12 KheyVaniteux a écrit :
La fac d'info, ça apprends des algo inutiles, par contre dès que faut faire de la POO, ils sont plus là :rire2:

Dut > licence :ok:

Ok le pisseur de codent https://image.noelshack.com/fichiers/2018/19/7/1526236820-jake-otf-kekeh.png

Enfin obtenu les 9359 :-)

#coding: utf-8
import urllib
#on recupere le texte du lien 
link = "https://pastebin.com/raw/5QtbiaCd"
f = urllib.urlopen(link)
chaine = f.read()
#chaine = "dabAcCaCBAcCcaDA" # : on peut utiliser cet exemple là

#on cree une liste a partir de la chaine de caractere
liste_chaine = list(chaine)

#liste pour stocker les indices des lettres a supprimer
liste_indices = []

#liste pour supprimer les occurences des indices a supprimer
liste_indices_a_supprimer = []

#liste pour verrouiller certains indices : exemple : "acCcB" --> le 3eme c ne doit pas etre supprimé
liste_indices_verrou = []

compte = 1

#Tant que compte est egal à 1 on fait un passage sur la liste liste_chaine
while compte == 1:
 compte = 0

 #On boucle sur toute la chaine de caracteres 
 for i in range(0, len(liste_chaine) - 1): 
   # condition IF lorsque les lettres sont les mêmes mais avec une casse différente 
   if liste_chaine[i].lower() == liste_chaine[i + 1].lower() and liste_chaine[i] != liste_chaine[i + 1]:
    
     #Si i n'est pas dans les indices "verrouillés" alors la condition est verifiée 
     if i not in liste_indices_verrou:
      #on ajoute dans la liste liste_indices les indices des elements que l'on va supprimer
      liste_indices.append(i)
      liste_indices.append(i + 1)
      liste_indices_verrou.append(i + 1)
      
      compte = 1 #si la condition IF n'est pas verifiee alors on sortira de la boucle While 
 
 # on copie les indices de liste_indices dans liste_indices_a_supprimer avec une seule occurence pour chaque indice 
 for indice in liste_indices: 
    if indice not in liste_indices_a_supprimer:
        liste_indices_a_supprimer.append(indice)

 # on inverse la liste des indices des elements a supprimer car il faut
 # supprimer en commençant par la fin pour ne pas avoir d'index out of range
 liste_indices_a_supprimer.reverse()
 
 #on supprime enfin les elements en trop
 for indice in liste_indices_a_supprimer:
    del liste_chaine[indice]

#on reinitialise les listes 
 liste_indices = []
 liste_indices_a_supprimer = []
 liste_indices_verrou = []

#on affiche la liste de caractéres ainsi obtenue ainsi que sa taille 
print(liste_chaine)
print(len(liste_chaine))




Données du topic

Auteur
KheyAuxPommes
Date de création
7 décembre 2018 à 23:25:00
Nb. messages archivés
282
Nb. messages JVC
282
En ligne sur JvArchive 313