Plop.
Alors j'ai un truc super louche...
Mon code passe les "Tests de vérification" mais foire le deuxieme "[Test] de performance" et renvoie 0 au lieu de 1...
Comment c'est possible ? -.-
Merci d'avance.
Plop.
Alors j'ai un truc super louche...
Mon code passe les "Tests de vérification" mais foire le deuxieme "[Test] de performance" et renvoie 0 au lieu de 1...
Comment c'est possible ? -.-
Merci d'avance.
Ouais je trouve ça dommage, mais ça m'est aussi arrivé (quand je m'amusais à tester la solution dans tout les langages). Bref, il semblerait qu'il y ait des cas particuliers dans le test de performance qui n'étaient pas dans les tests de vérification.
En même temps, ils peuvent pas tester toutes les entrées possibles dans les tests de vérifications.
Non, mais ce qu'il veut dire, c'est qu'il pense que lors des tests de vérif, on a fait quelques les cas principaux, et les cas particuliers.
Le truc c'est que en theorie, je peux avoir ce genre d'erreur que sur les tests de verif... et en tests de perfs, je peux juste avoir temps depasse...
Non c'est bon en fait. Je suis jsute con...
Mais ce test devrait etre dans les tests d'en haut, pas dans les tests de perf...
Les tests de perf consistent simplement en de grosses entrées.
Les tests de vérifications ne peuvent cependant pas être exhaustifs, il se peut donc qu'un algorithme faux parvienne à
les passer mais qu'il bloque sur un test de performance. En ce sens ils complètent un peu les tests de vérification :)
Euh... ça veut dire quoi "grosses entrées" pour le premier exo? Pour le 2,3,4, ok, mais là....
Pour le premier exo, pas grand chose :)
A moins d'avoir comme un goret, tu passes les tests de performance
d'avoir codé*
Mais même en goret, je vois mal qui aurait essayé de faire sans utiliser quelques ifs avec des opérateurs logique...
Pour moi, "tests de performance" veut rien dire pour ce problème. Comment pourrait-on réussir pour des données comme "18
10 1992", "27 2 1990" mais se rater pour " 31 12 2012"?
A part en faisant exprès ( if(annee>2010) {while(1);}) , ça me parait impossible de faire un algo donnant les bonnes
réponses, mais non optimal...
Bah... si tu veux t'as l'algo :
while date différent de 1 janvier 1942
retirer un jour a date
si 1 mai 1991 retourner 1
retourner 0
J’espère que personne a coder ça... mais bon voila.
Bien vu! Mais ptain, ce serait vraiment tordu, vu qu'il faudrait tenir compte des années bissextiles, et des différentes longueurs de mois pour la fonction prédécesseur ( ou la surcharge d’opérateur --). Et le mec qui aurait eu l'idée de cet algo aurait donc été incapable de l'implémenter (parce que là.... C'est pas un algo naïf, c'est un algo hybride entre le méga bisounours et le télétubbies "Po").
Moi, monsieur, j'ai fait sans if ! (Bon, j'ai quand même des conditions, mais ça ne compte pas pour un if. =p)
(Ou opérateurs ternaire :p)
Même pas d'opérateur ternaire ! (Bon, j’admets, j'ai utilisé l'horrible conversion bool > int. =p)
De toute façon tout programme peut s’écrire sans while/for/if/ternaire/&&/||. C'est juste que c'est plus chiant a faire.
Tout programme ? Alors, autant sans while ni for je peux le concevoir (on fait des fonctions récursives à la place, ou des... goto ), autant sans if ni opérateur ternaire j'vois pas bien. Sans utiliser de l'assembleur hein.
Tout programme peut être réalisé dans un langage Turing-Complete. Par exemple, essaie de faire les exos en Brainf*ck, maintenant qu'il est implémenté.
Si tu ne peux plus faire de branchement conditionnel, tu n'as plus affaire à un langage Turing-complete...
Bon déjà, les &&, || et les if peuvent se rapporter a un opérateur ternaire (trivialement).
Ensuite :
{ a?b:c; }
Peut s’écrire (avec T le type des expressions b et c) :
T funb(){
return b;
}
T func(){
return c;
}
...
{
T (*branch[2])() = { &funb, &func };
brancha==0;
}
Bon, bien sur il y a quelques autres details a prendre en compte (typiquement les expressions b et c peuvent etre de
type differents et il faut passer le scope en argument), mais l'idee est la.