Qualifications

Je répond donc de la même manière pour le 2.

Edit (Jill-Jênn). Hum, tu en dis un peu trop, là ; laisse les autres chercher ! (Donner les solutions avant même que le sujet soit officiellement sorti, c'est quand même gonflé xD ; pour te rassurer, j'ai quand même envoyé ton texte à Pikrass.)

last_dreamer (1) > L'énoncé demande la liste ? Du coup ça supprime une jolie formule, dommage !

le_sphinx > Pour le Q, je m'en suis rendu compte après avoir posté puis vérifié le post en décodant moi-même. Mais je ne vois pas pourquoi il est là. J'ai sûrement dû faire une typo au moment de chiffrer ... Et la paresse m'empêche de tout re-chiffrer pour un seul caractère gênant. \^\^

last_dreamer (2) > Et pourquoi pas deux de trois et un de quatre au premier coup ? (j'essaie toujours de rester assez vague pour rester incompréhensible à qui ne connaîtrait pas le sujet)
Du coup il y a plusieurs outputs possibles, et ça fait péter l'évaluation directe online. =/

En bref, j'espère que pour l'exercice dont on parle, il n'y a qu'à sortir le nombre de coups, sinon la notation est plus complexe, et le code est moins élégant.

Equinoxe, que ce soit 2 de trois et 1 de quatre, ou 2 de quatre et 1 de deux, le résultat affiché sera toujours 4 ;) (le pire cas reste le même quelque soit la disposition).
Et non je peut t'assurer qu'il n'y a pas le nombre de coups à donner puisque j'ai vu la sortie, mais on demande bien d'afficher chaque coup le résultat (et donc indirectement ça donne le nombre de coups)
La solution n'est pas plus moche, enfin moi j'ai une solution en 8 lignes... (Après ma solution est peut être fausse, mais sur la petite vingtaine de résultat trouver à la main sur papier en simulant, l'algorithme me renvoyer le même résultat, donc des chances d'être bon).

Jill-Jênn, tu me rassure, ça veux dire que je me suis pas trompé dans la compréhension du sujet et la façon de le résoudre (bon après le problème étant de voir si mon algorithme est bon).

Je parlais de la version ou l'on ne doit pas afficher les étapes, en réponse a "La solution n'est pas plus moche, enfin moi j'ai une solution en 8 lignes..." (last_dreamer)
Mais en fait pour être pointilleux, en C++98, C++03 ou en C un programme fait au moins deux lignes. Quoiqu'en C++11, une ligne est possible. Et je pensais qu'en C12 (en supposant une sortie en 2012) ce serait faisable en une ligne, mais en fait ils n'ont pas suivie le changement de C++11 (pour le N1548, draft de décembre 2010), donc ça reste deux lignes minimum.
Tout ça pour dire, que le corps de la fonction main , ne fait qu' une expression , si on utilise la "jolie formule" dont parle Equinoxe.

Ah? Je peux voir un exemple? Parce que pour moi, le minimum(en nombre de lignes) pour un probleme de prologin c'est:

1
2
#include    <cstdio> (ou  <iostream>)
int main(){cin/*scanf*/>>machin;blabla;if(truc){...;..}for(;;)....cout/*printf*/<<reponse;}

En fait deux lignes max en C++98, C++03 et C a cause d'une règle a la con:
Dans ISO 14882 2003 (Aka C++03), Section 2.1 Paragraphe 2 (t'as la même chose en C++98 et tu l'as en 5.1.1.2p2 dans le n1548 (draft C12))

[...] If a source file that is not empty does not end in a new-line character, or ends in a new-line character immediately preceded by a backslash character, the behavior is undefined.

En C++11 n3290 (le FDIS), Section 2.1 Paragraphe 2:

[...] A source file that is not empty and that does not end in a new-line character, or that ends in a new-line character immediately preceded by a backslash character [...], shall be processed as if an additional new-line character were appended to the file.

Traduction: En C, C++98 et C++03, un fichier source doit se terminer par une ligne vide... Mais ce n'est plus le cas en C++11.

Et tu n'as pas besoin de l'#include.
En C++ t'es oblige de faire :
namespace std{ extern "C" int printf(const char*, ...); } int main(){ std::printf("42\n"); }

En C99 (non révisé) ou autres standards C, tu peux faire :
int main(){ printf("42\n"); }

Parce qu'en C quand tu utilises une fonction non déclare, une déclaration implicite qui retourne un int est généré par le compilateur... comme par hasard c'est ce que retourne printf. (Cette règle a été retire dans les révisions ("Cor") de C99 et dans le draft n1548)
En tout cas, lors du link avec la lib standard, l'appel a printf sera correctement linke, pas besoin d'#include.

Quand je disais 8 lignes, je parler uniquement de l'algorithme, pour moi, les includes, les entrées, etc... n'entre pas en ligne de compte. Je parle vraiment du coeur du programme. (Et sinon c'est 8 lignes avec saut de ligne a la fin de chaque intruction, fin d'un if, for, etc... et je saute aussi une ligne quand j'ai une accolade qui se ferme (sauf s'il y a else if, ou else qui suit, je met sur une même ligne. M'enfin après j'avoue que ligne c'est relatif. Mais pour moi un code beau est un code court et efficace.

Edit (encore Jill-Jênn). Non mais ça suffit, là :P

Je m'excuse si j'en dit trop, là c'était vraiment innocent \^\^" je ne voit pas en quoi ça aider mais bon soit x). Du coup j'aurais pas ma réponse \^\^"

last_dreamer > Sauf que tout l'algorithme pour donner le nombre de coups se fait en 0 lignes (1 ligne si on ne met pas d'expression dans l'affichage) si on excepte les i/o et tout le bazar obligatoire pour l'exercice. ;)

Répondre au sujet

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