Erreur non affiché 101 dalmatiens partie I

Je pense que tout est dans le titre, j'ai réussi sans problème le test "sample 1"mais quand j'arrive au "test1" on ne m'affiche pas mon programme ni la moindre erreur cela a eu a le don de m'agacer, de plus durant le test "sample 1" j'ai eu quelques abérations mathématico-logique comme binaire(7-5)= 103 ... le tout avec des fonctions de la bibliothèque standard et 7 et 5 des chiffres.
Bref c|/|:

Néanmoins si quelqu'un pouvait s'arranger pour me montrer ce qu'a écrit mon programme cela m'arrangerait.

Je ne sais pas si je vais pouvoir t'aider là dessus, mais ce qui est sur c'est que j'ai besoin de connaître ton langage de programmation.

Si jamais tu bloques vraiment, tu peux nous contacter par mail (via le lien contact en bas de page) en nous envoyant ton code pour qu'on y jette un oeil.

Ok j'ecris en Php et je vous envoie tous cela par mail. :)

Edit: je vous serai gré de me répondre ici car ma boite est la victime d'infâme spammeurs.

Bonsoir,
Je suis organisateur, j'ai donc recu ton code par mail,
j'ai fait plusieurs tests :
Ton programme est faux, mais en le soumettant sur le site, on voit que ton programme n'affiche rien.

Le principe des tests est simple :
on lance ton programme, et on compare la sortie à une sortie de référence.

C'est simple et efficace, ton programme n'affiche rien quand le tableau dépasse une certaine taille (teste 20 * 6)

Bref, ta solution est interessante, mais elle ne tient pas compte des réalités du langage avec lequel tu travailles (en php, les nombres ont une taille finie).

regarde la partie CONTRAINTES :
1 1

ta solution ne convient pas pour des tableaux de cette taille, et php ne renvoit rien (même avec un error_reporting a E_ALL)

Bref, je te shouaite bon courage pour cette épreuve, ta solution est intéressante, mais elle est fausse :)

Ok je vois une erreur de taille Bits ? je vais essayer de fragmenter ma \$chainne en x bout mais avec des longueur de lignes qui varie cela va être dur pour tomber pile poil :)

Juste pour info, si j'avais envoyer ce code au QCM aurais-je eu tout les points ou la notation tient aussi compte de ce genre de chose ?

Lors de la correction nous tenons compte de plusieurs choses, notamment l’efficacité et l'optimisation du code, sa simplicité mais aussi sa propreté, ses commentaires (si nécessaires !).

Perso, étant donné qu'il faut de toute façon lire et afficher les 0 et les 1, je ne vois pas comment ça peut améliorer ta complexité... (Fin j'irai même jusqu'à affirmer que ça ne l'améliore pas, au final)

Enfait mon code considérait une image comme nombre

Ainsi

10011
00110

Peut être représenter par le nombre 614 ce nombre me permettait ensuite par une simple opération d'obtenir un nombre que je convertissait ensuite en binaire.
Cette chaine était ensuite fractionné en colonne grâce a l'outil wordrap() pour obtenir le négatif

Mais comme dit ci-dessus cette méthode ne fonctionne pas car en Php les nombres ont une taille finie (de toute façon j'ai volontairement omis un détails important histoire d'éviter les ennuies :) )

C'est bien dommage car la complexité d'un tel algorithme me réjouissait :(

Il les lit mais il ne les traite pas au cas par cas. Ce qui réduit le nombre de phase d'écriture a une seule

C'est comme si au lieu de dire le nom de chaque personne pour qu'ils montent dans le bus (Jacque, Tristant, Maurice ...) tu disait le nom du groupe (Les gamins).

Idem pour les test qui passe de \$n*\$m à 1

Comme tu dois les lire puis les écrire, ta complexité globale ne change pas (fin sauf si t'avais codé l'inversion des couleurs comme un pied, mais je ne pense pas\^\^).
Pour revenir à ton exemple, si t'as un groupe d'enfants qui doivent monter dans un bus.
Au début, chaque enfant monte dans le bus dans l'ordre et tu le coches. Une fois dans le bus, au lieu de dire "Jacques, Tristan, Maurice..... [nom du dernier enfant] attachez votre ceinture (okay, dans un car on attache pas sa ceinture, mais bon...)", tu dis : "Tout le monde attache sa ceinture", bah t'auras quand même dû énumérer les enfants au début. Du coup, niveau complexité asymptotique (O(truc)), tu n'y gagnes strictement rien.

Donc selon toi il n'y a pas de solution meilleure que la solution naïve a cette exercice car dans tous les cas il faut lire les 1 et le 0 ?

Il n'y a pas que la complexité dans la vie. Les opérations bit-à-bit sont plus rapides que de travailler sur des tableaux d'entiers, même si ça ne change en rien la complexité. Si y'en a pas mal à faire, ça peut valoir le coup de faire la conversion.

Je n'y connais strictement rien en complexité d'operations de bases, mais la rapidité du traitement des opérations bit à bit ne viendrait il pas justement d'une différence de complexité?

Ya pas que la complexité, mais en faisant des opérations bit à bit "rapides", tout en ayant à faire deux conversions (sans compter le fait qu'on travaille avec des nombres de taille (ie nombre de chiffres) en base 2 plutôt grande), et bien complexité ou non, ça ne risque pas d'être plus rapide ! Ca a en revanche le mérite de l'originalité et de la réflexion. =)

La rapidité du traitement bit à bit, ça vient du fait que ce sont des opérations "de base", très rapides à effectuer (après faut aller voir plus en profondeur comment ça se passe au niveau du processeur et tout et tout). Après, tout est relatif. Sachant que le compilateur (avec -O2 comme option par exemple) optimise certains bouts de code, tout ça c'est plus ou moins du chipotage.\^\^
Après, on peut toujours trouver des contextes où ça vaut le coup de chercher à "optimiser à fond" son code, mais bon a priori pour les exos de Prologin, c'est pas tout à fait dans l'esprit.

Répondre au sujet

Vous devez vous enregistrer ou vous connecter pour poster des messages.