FizzBuzz en Python


Le FizzBuzz est un type de test qui a été rendu populaire par Imran Ghory et ayant pour but de gagner du temps dans l’embauche de développeurs.

Son constat est alarmant : une grande majorité des gens qui venaient aux entretiens pour un poste de programmeur, diplôme / CV / beau discours à l’appui, ne savaient pas… programmer. Il faut dire que c’est tellement facile de trouver un job pour dev.

Ayant l’impression de perdre son temps, il a créé des exercices simples, qui sont facilement solvables sans stress par n’importe quel programmeur digne de ce ce nom en quelques minutes. À sa surprise, 90 % des candidats s’y cassent les dents, ce qui lui permet de ne passer du temps qu’avec le reste.

Fais tourner le FizzBuzz

Exemple d’un énoncé :

Écrire un programme qui affiche les nombres de 1 à 199. Mais pour les multiples de 3, afficher “Fizz” au lieu du nombre et pour les multiples de 5 afficher “Buzz”. Pour les nombres multiples de 3 et 5, afficher “FizzBuzz”.

Voici ce que ça donne si vous le faites en entretien pour du Python en quelques minutes histoire de pouvoir passer à la suite :

for x in xrange(1, 200):
 
    fizz = not x % 3
    buzz = not x % 5
 
    if fizz and buzz :
        print "FizzBuzz"
    elif fizz:
        print "Fizz"
    elif buzz:
        print "Buzz"
    else:
        print x

S’amuser un peu

Ce qui est marrant avec les fizzbuzz, c’est de sortir de la solution classique pour faire des trucs tordus. Je suis notamment tombé sur deux one-liners très choupi pour résoudre le problème en Python :

for x in xrange(1, 200): print "Fizz"[x % 3 * 4:] + "Buzz" [x % 5 * 4:] or x

Et :

print '\n'.join('Fizz' * (not i % 3) + 'Buzz' * (not i % 5) or str(i) for i in xrange(1, 200))

C’est blindé d’astuces.

Pour la première solution, on fait une boucle normale et on print la concaténation de la chaîne "Fizz" et la chaîne "Buzz". MAIS on fait un slicing dessus en prenant en compte une particularité de "Fizz" et "Buzz" : les deux mots font 4 lettres. Or x % 3 (ou x % 5) sera égal à 0 si x est multiple de 3 (ou de 5). Donc si x est un multiple, on aura 0 * 4, soit un slicing de [0:] qui veut dire va du début à la fin. A l’inverse, si x n’est pas multiple, on aura un slicing de [4:], ce qui sur un mot de 4 lettres veut dire va de la fin à la fin, résultant en une chaîne vide.

Donc on peut avoir "Fizz" de vide ou "Buzz" de vide, ce qui va faire la chaîne “Fizz” ou “Buzz”, selon que x est le multiple de 3 ou 5. Si x est multiple des deux, on aura "Fizz" et "Buzz", qui concaténés va donner "FizzBuzz". Enfin, si x n’est multiple ni de 3, ni de 5, on concatène deux chaînes vides, ce qui donne une chaîne vide.

Une caractéristique de l’opérateur or en Python est qu’il ne retourne PAS un booléen. Il retourne le premier élément vrai, ou le dernier élément faux :

>>> 1 or 2
1
>>> 0 or 2
2
>>> 0 or False
False

Donc si il y a "Fizz" or x, "Buzz" or x ou "FizzBuzz" or x, il va retourner la chaîne. Par contre si il y a '' or x, il va retourner x.

Pour la deuxième solution, on créé une expression génératrice qui va être joinée sur '\n', donc un saut de ligne. On aura donc le listing attendu. Les valeurs sont générées par concaténation également, comme dans le premier exemple. La différence est qu’au lieu de choisir le slicing pour afficher ou non la chaîne, il utilise l’opérateur splat, qui sur une chaîne la multiplie :

>>> "Fizz" * 2
'FizzFizz'
>>> "Fizz" * 3
'FizzFizzFizz'
>>> "Fizz" * 1
'Fizz'
>>> "Fizz" * 0
''

Or, True vaut 1 en Python, et False vaut zéro. Du coup :

>>> "Fizz" * True
'Fizz'
>>> "Fizz" * False
''

not i % 5 et not i % 5 vont retourner True si x est multiple, sinon False :

>>> 15 % 5
0
>>> not 15 % 5
True

Du coup "Fizz" et "Buzz" vont être multiplié par True ou False selon que x est un multiple de 3 ou 5, et la chaîne résultante sera la bonne. Après on utilise le or de la même façon que dans le code du premier one-liner.

Mais quand même

Je trouve ça un peu déprimant que l’on ait autant de personnes qui se vendent comme codeurs et qui ne savent pas coder. Ok, je veux bien que dans une situation de stress les bouts de codes sortent plus difficilement, mais là c’est volontairement hyper simple. Personne ne demande le one-liner, c’est juste pour le fun. Mais la majorité des candidats ne peuvent même pas produire le tout premier code.

C’est aussi mon constat dans les boîtes dans lesquelles j’ai travaillé : énormément de flan.

Se pose alors un autre problème : la rareté de la main d’œuvre. Je discutais avec un CTO dernièrement. Il me disait que quand il tombait sur un bon candidat, il lui déroulait le tapis rouge car il avait trop peur qu’il se barre. C’était très dur pour lui de trouver un dev potable.

À côté de ça, on voit des annonces sur Popole emploi où il demande de maîtriser vingt-douze technos pour le SMIC.

C’est là qu’on voit que la grande majorité des gens ne pigent toujours rien à l’informatique. Ils n’ont aucune idée des échelles de valeur et de qualité.

On se retrouve avec une situation de loose-loose :

  • Les boîtes non-tech se retrouvent avec le fond du panier car elles embauchent en aveugle et les utilisateurs se retrouvent en mode dégradé en permanence. Une personne qui travaille chez Colissimo m’a parlé dernièrement de l’enfer du développement de leur système de gestion de paie fait en interne par un mec qui visiblement ne pige rien.
  • Les boîtes technos en chie un max pour trouver des bons dev. Ils sont souvent en sous-effectifs et se plaignent d’enchaîner les entretiens depuis un an sans rien trouver.
  • Les devs se sentent insultés par la plupart des annonces de job et les bons trouvent rarement (en France) un salaire et des conditions de travail qui correspondent à leurs qualifications. Car un bon dev aujourd’hui est quelqu’un de TRES qualifié. Or il est souvent classé selon son diplôme plutôt que ses compétences.

114 thoughts on “FizzBuzz en Python

  • DSeed

    Petit détail le xrange c’est de 1 à 200 (vu qu’il vx les nombres jusqu’a 199 ) mais bon je chipote ;)

  • foxmask

    J’avais fait un bete et con :

    for x in xrange(1, 200):
    	if x % 5 == 0 and x % 3 == 0:
    		print "FizzBuzz"		
    	elif x % 3 == 0:
    		print "Fizz"
    	elif x % 5 == 0:
    		print "Buzz"	
    	else:
    		print x

    c’est pas sexy mais ca fait l’affaire :) bon qui m’embauche ? :D

  • Sam Post author

    @DSeed : très juste. Je passe même pas l’entretien d’embauche putain.

  • desfrenes

    Ouais bof… c’est comme à l’époque en cours où on demandait d’implémenter un triangle de Pascal ou ce genre de truc… on pourrait aussi demander au candidat de terminer un rubik’s cube mais je ne suis pas sur que ça soit bien représentatif de quoi que ce soit.

    En plus tu parles de codeur après avoir parlé de développeur… ok, la nuance est très mince, mais les seconds ont rarement des nouveaux algos à comprendre ou à implémenter (spécialement dans les boites “non-tech” comme tu dis).

  • Sam Post author

    Aujourd’hui une simple codeur d’existe plus. Le coup de “j’ai un cahier des charges donné ce matin, et je pisse du code”, ça ne marche plus vu la complexité des apps qui existent aujourd’hui. Y a tellement de technos, les usages sont tellements avancés. Un codeur est un dev. Et la plupart des devs font de l’archi. On a pas le choix.

    La seule exception est le sys admin. Il a un métier à part. Il script un peu, mais c’est pas sa spécialité. Ses difficultés sont différentes.

  • desfrenes

    On est d’accord… du coup la valeur de ce test là-dedans ? Surtout que ce genre de tricks ça s’apprend aussi par coeur au besoin…

  • Sam Post author

    Un tampon pour toi.

    C’est pour virer les gars qui savent pas programmer.

    Un triangle de pascal c’est pas évident. Pour un stagiaire, j’utiliserais jamais ça.

    Un fizzbuzz (ça s’invente à la volée, c’est pas compliqué non plus, pas de risque de par coeur), c’est suffisament simple pour un rookie, et suffisament concret pour écarter les mecs qui pensent que faire des macros excel c’est être développeur.

  • truxs

    La valeur c’est que ça permet de détecter les mythos à moindre coup.

    On ne te demande pas de faire une algo de fou et déterminer si c’est du O(n²), on vérifie simplement si tu sait faire une pauvre boucle avec des conditions.

    Évidemment ça peut paraitre stupide, mais durant ma recherche de stage (fin de DUT info) on m’a demandé si je savais faire des boucles parce que ce n’était pas le cas de tout le monde (ingé inclus) ಠ_ಠ

  • Yannick

    On peut même utiliser la compréhension de liste:

    print "n".join([
        "FizzBuzz" if not x % 3 and not x % 5
        else "Fizz" if not x % 3
        else "Buzz" if not x % 5
        else str(x)
        for x in range(1, 200)
    ])
  • Max

    C’est à faire sur papier ou on peut tester sur l’ordi? Car si c’est uniquement sur papier sans pouvoir tester je suis recâlé direct :)

    Je connais des supers programmeurs qui font tout au test, et corrigent souvent après coup, ce genre de test pourrait les évincer si le papier et le crayon sont les seuls outils.

  • FX

    Ingénieur ça veut pas forcément dire développeur, j’ai l’impression qu’on confond beaucoup les deux en France!

    Mais le simple fait d’avoir un profil sur un site de dev avec quelque chose de non trivial rendu public (GitHub, StackOverflow, Bitbucket,…) te donne à mon avis de grandes chances d’arriver directement en haut du panier quand tu postules en dev.

  • cyp

    Pour mes recrutement de sysadmin (poste ou stage) j’avais fait un petit questionnaire ou je demandais quelques commandes de base style:
    – comment créer le répertoire “/var/www/test” sous Linux
    – comment relancer le service “iisadmin” sous Windows
    – …

    Le tout sans pièges, pas regardant sur la syntaxe et en étant ouvert au dialogue, “makedir -P /var/www/test” ne m’aurait absolument pas dérangé pour la première réponse.
    Je devais avoir 50% des candidats (affichant toutes les références requises sur leur CV) qui rendaient feuille blanche.
    Guère plus de 10/15% qui avait une réponse acceptable sur toutes les questions, le reste allant de ceux n’ayant que de vague notion à ceux qui continuait à la jouer à l’embrouille avec des réponses complètements a coté de la plaque voir des “je fait tout à la souris” :-/

  • Sam Post author

    @FX surtout qu’ingénieur, c’est surtout un status de part soit le diplome, soit le contrat de travail. Mais c’est pas du tout le reflet d’un niveau, d’une productivité ou d’une intégration dans une équipe. Ingénieur ne veut absolument plus rien dire de nos jours.

  • Kontre

    énormément de flanc. => énormément de flan.
    un peut déprimant => un peu déprimant
    par concaténations => par concaténation
    Mmmh, on vous rappellera… ^^

    Ça me rappelle un entretien où on m’avait demandé la formule de la transformée de Fourier. J’ai réussi à la ressortir avec quelques tâtonnements, mais je ne vois toujours pas l’intérêt vu qu’en pratique on utilise la fonction FFT déjà codée et basta.

    Et je confirme qu’il y a un paquet d’ingénieurs qui n’y pigent rien à l’informatique (et je ne parle pas que des “vieux”). Alors en dev…

  • Sam Post author

    C’est ce que j’aime avec la solution fizzbuzz. Elle vire juste les charlatans. Certains tests mélangent trop de choses : math, algorythmie avancée, culture générale, gestion du stress… Si le poste en question a besoin d’un candidat calé dans ces domaines ça a du sens, mais ce n’est pas le cas la plupart du temps.

    Je connais de très bon dev nul en culture gé, Max fait des services complets avec le degré zéro en algo, moi je suis une grosse quille en math (putain la transformation de fourrier, j’ai du aller regarder sur wikipedia), et un de mes amis (un dev commen on en voit peuà code en permanence sous marijuana alors la gestion du stress…

  • anucunnilinguiste

    Oui enfin le recrutement en informatique laissez-moi rire : y a que les gosses de riches qui ont eu un diplôme d’ingé dans une école privée financé par Papa et Maman qui trouvent de bons jobs…souvent ils parlent le Java, ne savent pas rédiger sans faute de français et adorent les costards, les Iphone et les Audi A3 ;) bref de purs merdeux et on s’étonne que le web se pourrit, que les applis sont pourris et que le hardware est pourri…Y a plus de codeurs, il n’y a que des intégrateurs de solutions.

  • anucunnilinguiste

    En entretien, j’ai déjà eu :

    – programmer une factorielle
    – un enculé m’a même demandé l’algo “Persimmon Trees”
    – un autre fils de pute m’a demandé : “pourquoi la pluie tombe ?”

    Bref des connards de recruteurs j’en déjà eu. Y a même une fois où j’ai claqué la sale gueule du recruteur prétentieux sur le bureau car il me saoulait ;), je vous garantis que sa superbe et son assurance se sont envolées. Bref vous l’aurez compris je hais les recruteurs et manageurs en carton de tout bord !

  • Kontre

    Le coup de la pluie qui tombe, on en parle pas mal sur http://thedailywtf.com, apparemment ça a été lancé par Microsoft, c’est sensé aider à juger la réaction des gens devant des problèmes nouveaux, et leur capacité à trouver des astuces originales. J’ai des gros doutes sur le résultat !

    Par contre, programmer une factorielle, pour moi c’est du même genre que fizzbuzz…

    Au fait, vous saviez que n’importe qui peut se déclarer “ingénieur” ? Le nom lui-même n’est pas réservé.

  • FX

    @Sam: Au moins, ingénieur veut dire quasiment autant que “sorti de fac”, en tout cas pour le dev, à quelques exceptions près. De mon humble point de vue, j’ai l’impression que le gros problème dans tout ça, c’est que trop de recruteurs sont incapables de distinguer un bon candidat d’un mauvais. Même avec FizzBuzz.

    @Kontre: Tout dépend du besoin. Si c’est pour développer un système de traitement du signal alors oui, mais c’est vrai que pour l’intranet de Carrefour on s’en tamponne un peu de la TF…

    C’est vrai que tout le monde peut se dire ingénieur, mais tu peux aussi mettre “Dieu” sur ton CV. Pour moi (mais je suis plutôt du côté des candidats^^) c’est plutôt ce que tu as fait qui compte.

    @anucunnilinguiste: Factorielle c’est clairement du fizzbuzz pour moi aussi. Le coup de la pluie, en revanche, euh…

  • roro

    Et si c’était que dans la prog !!!
    Ce phénomène est présent dans beaucoup domaines, beaucoup de métiers.
    Il parait que l’humain est à son pic-brain. (dixit: science et vie), et qu’on n’ira pas plus loin en capacités cognitives.
    ça fout les j’tons…

  • Sam Post author

    Factoriel, çà dépend si on requiert la récursivité ou pas (putain, un bon article à écrire ça).

    Un mec peut ne pas se souvenir de ce que fait la fonction factorielle et être capable de la coder, ou l’inverse.

    Mais surtout, une version iterative est un fizzbuzz, un version recursive pas du tout. Dans un langage comme PHP ou RUBy, ne pas connaitre la récursivité n’est pas du tout handicapant (j’ai du m’en servir 4 fois dans ma carrière de programmeur). Si on embauche par contre un codeur javascript ou erlang, c’est clairement plus emmerdant.

    Et autant en erlang, on est presque sur de tomber sur des bons (rien que connaitre le langage…) mais autant en JS, ouaaaaaa, le niveau peu sacrément varier.

    Après je crois qu’il ne faut pas effrayer les débutants (je sais que vous osez pas commenter les gars !), tout le monde est pas tenu d’avoir le même niveau en prog (moi je sais pas planter un clou ni faire une addition de tête). C’est juste que quand on veut être payé pour le faire, ben il faut être capable de le faire :-)

  • Recher

    La Motion Twin (une boîte de jeu vidéo) avait trouvé une astuce de recrutement du même genre :

    envoyez votre CV à xxxxxxxxx@motion-twin.com, en remplaçant les ‘x’ par le plus grand nombre palindrome résultant de la multiplication de trois nombres à trois chiffres. Là, vous pouvez êtes surs qu’on vous lira !

    Les avantages, par rapport à un fizzbuzz en entretien :

    – Filtrage directement à la source. Tous le monde peut postuler, mais les recruteurs n’ont à gérer que ceux qui réussissent.

    – Suffisamment spécifique pour qu’on puisse espérer qu’elle ne soit pas déjà sur internet. Il y a toujours le risque que quelqu’un publie la réponse, mais c’est peu probable. Ceux qui sont au courant du recrutement sont, à priori, des candidats potentiels, donc ils garderont la réponse pour eux.

    – Suffisamment simple pour être résolvable dans n’importe quel langage, mais suffisamment compliquée pour être très difficilement résolvable à la main.

    – Les candidats résolvent l’énigme bien au chaud chez eux. Pas de stress. Pas de “je suis un gros nul en programmation sur le papier”.

    Le seul inconvénient, c’est que les recruteurs n’ont aucune preuve que les candidats qui leur répondent ont résolu l’énigme par eux-même (certains ont peut-être demandé à quelqu’un d’autre). Un dernier petit filtrage au fizzbuzz peut être nécessaire. Dans tous les cas, il y a déjà un gros écremage de fait, au prix de très peu d’effort.

    Ah et sinon, ça s’écrit “lose” et pas “loose”. Même si ça se prononce comme si c’était écrit “lose”. Andouille d’anglais.

  • nzo

    ok et la paie on en parle ? car je veux bien des recruteurs exigeants mais au regard des paies proposées, j’ai pas envie de me soumettre telle une soubrette !

  • Sam Post author

    @Recher : C’est marrant cet esprit de programmeur. En lisant ton comment, j’ai pas pu m’empêcher de coder le truc, juste pour voir.

    @nzo : un fizzbuzz, c’est pas une tenue de soubrette. Si un mec s’offusque en face de moi car on lui demande de passer 2 minutes de son temps à faire un test simple, je sais d’avance que je veux pas l’engager. Il s’intégrera jamais dans l’équipe. Mais je suis d’accord, les recruteurs veulent souvent un mec avec des super pouvoirs pour pas cher.

  • desfrenes

    meh… j’avais bien lu… ma question était rhétorique, je conteste l’utilité de ce test.

    “C’est pour virer les gars qui savent pas programmer.”

    Je demande la réalisation d’une appli CRUD basique pour ça (à faire chez soi, sans stress). On en apprend beaucoup plus…

  • Kontre

    À ce propos, les deux derniers points de l’article ne sont pas contradictoires ? Les boîtes qui cherchent de bons devs ne montent pas plus les prix ? Et si non, pourquoi elles se plaignent ?

  • Sam Post author

    @desfrenes : Le problème de l’appli CRUD c’est que ça pré suppose beaucoup de choses.

    Combien de temps suis-je supposer passer dessus ? Sur quoi je vais être jugé (qualité du code, et quels critères ? interface ? technique ?) ? Dois-je la dépoloyer ? Puis-je utiliser des libs ? Des outils d’automatisation ? Pourquoi oui ou non alors que ma situation est x et que je vais travailler dans z conditions ?

    Mais je +1, si on cherche un mec sérieux, je suis 100% pour lui faire coder une petite app chez lui. Ca ne peut pas faire de mal.

    J’ai néanmoins un goût amère dans la bouche. Dans mes jeunes années, un mec m’a demandé en test de faire une todo list. Il m’a jugé trop lent. J’ai checké leur code après : il était tout pourri. Forcément on peut produire un code de merde rapidement.

    Bref, c’est jamais simple.

    @Kontre : je crois qu’il y a dichotomie entre les CTO qui sont attérés par le niveau et dégoûté de trouver personne, et les RH qui posent les annonces. Globalement le recrutement est fait avec la méthode rache en france. Personne n’a envie de s’en occuper, et bien le faire, ça demande beaucoup de temps et de compétence. Google met entre 8 et 12 entretiens avant de se décider. Ca prend des mois. Par contre ils paient bien.

  • truxs

    Pour les offres on en revient à cette article.

    Sinon dans les trucs différents j’ai récemment vu passé sur hacker.news une offre ou les gens devaient utiliser l’api de l’entreprise pour envoyer leur cv (en JSon).

  • desfrenes

    @sam Évidemment il faut ajuster le sujet en fonction du poste et/ou de la personne mais voilà en gros ce qu’on pourrait avoir:

    Bonjour,

    Comme convenu voici le test que je vous propose, ayant pour but d’évaluer la qualité de votre travail.

    Il s’agit de réaliser une application classique et extrêmement simple de l’internet de la fin des années 90: le livre d’or.

    L’application proposera au minimum 2 écrans: la visualisation des messages et la saisie d’un nouveau message. A chaque message sera associé au minimum l’email de la personne ainsi que son nom et une date de saisie. Tout autre champ est facultatif.

    Sera pris en compte dans la qualité de l’implémentation: l’utilisation des motifs de conception courants aux applications web, la sécurité, la cohérence des données, la lisibilité du code, etc.

    La conception graphique ne sera pas pris en compte, en revanche la sémantique et l’accessibilité le seront.

    Il est aussi précisé que c’est à faire en temps libre. Je ne précise pas s’il faut / si on peut utiliser des libs et c’est fait exprès parce que c’est une info intéressante (en gros, je suis devant un type astucieux et débrouillard qui prend plaisir à réinventer la roue ou devant quelqu’un qui privilégie l’efficacité dans la résolution d’un problème en reposant son travail sur celui des autres). Le truc est à rendre dans une archive et peu importe que les dépendances soit incluses ou non car de toute façon je n’exécute pas le résultat, je lis le code produit.

    Il m’a jugé trop lent. J’ai checké leur code après : il était tout pourri.

    Ils avaient besoin de rapidité pas de qualité, ils ont bien fait de pas te prendre (ou tu as bien fait de ne pas les satisfaire), tu aurais été malheureux à ce taf.

  • Sam Post author

    Oui c’est vrai qu’avec le recul, j’ai eu de la chance.

  • Flo

    @Recher : interessant comme exercice !
    Je suis en train de chercher, mais je ne vois pas comment le faire de maniere “optimisee”, c’est a dire en evitant les doublons : 100 * 100 * 999 / 100 * 999 * 100 / 999 * 100 * 100.
    Une piste ? :)

  • Flo

    EDIT : Je suis con -_-, c’est ca de parler avant d’avoir vraiment teste…

  • Max

    Ils avaient besoin de rapidité pas de qualité, ils ont bien fait de pas te prendre (ou tu as bien fait de ne pas les satisfaire), tu aurais été malheureux à ce taf.

    Un paquet de bons devs ne comprennent pas ce besoin mais ce sujet a déjà été traité ici

    C’est pas simple ma bonne dame, d’un autre côté je connais un manager qui galère à trouver un dev même avec le minimum (PHP et un peu mysql/js etc). La plupart qui se présentent ne savent rien et veulent des salaires mirobolants parcequ’ils ont pris option multimédia à l’école.

  • khertan

    Commentaire.

    Dans le genre entretien inutile, certains cabinets de recrutement qui attende que le candidat prononce une liste de mot clefs … En général le nom de certain pattern java … Expliquer au recruteur ce qu est un pattern et que c est comme les positions du kamasutra … y a un nom different avec le petit orteil levé ou pas…
    Les tests d algo,
    Recruteur : comment inversé vous une chaine de caractères ?
    Moi: ‘azerty'[::-1]
    Recruteur: Mais il faut une boucle …
    Moi: Un language haut niveau c est pas pour réinventer une roue carré

    Sinon je recherche un poste de dev/codeur/pisseur python avec télétravail partiel ou total sur l idf …
    http://khertan.net
    [/pub]

  • Etienne

    Une factorielle… Ça peu paraître évident à plein de monde, mais moi qui ai fait la moitié de mes humanité, puis de la sociologie après examen d’entrée, vous pensez bien que ma culture mathématique est pas terrible (ce qui veut pas dire que je suis nul en math).

    J’ai su ce qu’est une factorielle (je sais aussi que j’ai jamais eu besoin d’en utiliser, c’est sans-doute pour ça que j’ai pas retenu), je sais que c’est pas compliqué, et je sais qu’en deux minutes sur google je retrouve ce que c’est, et je ne doute pas que je saurais coder ça avec récursion. Mais si on me demande à brûle-pourpoint de produire quelque chose qui est basé là-dessus sans m’expliquer ce qu’il en est, je suis cuit.

    Et pour le fizz buzz du haut, je l’ai fait en deux minutes, mais j’ai d’abord testé le fizz, puis le buzz, puis le fizzbuzz, comme un con, dans le sens de l’énoncé quoi. Le genre de trucs par lequel je me fais toujours avoir…

  • Sam Post author

    @khertan: va sur notre twitter, on retweet souvent des offres. Sinon jobs.humancoders.com et le site de l’afpy.

    @Etienne : c’est clair que sur papier ça change la donne, c’est pas pareil que tester au fur et à mesure.

  • anucunnilinguiste

    “passer 2 minutes de son temps à faire un test simple, je sais d’avance que je veux pas l’engager.” m’engage jamais je déteste l’ambiance start-up où tout le monde est cool ! ;), j’aime pas les gars cools, gentils et hypes…

  • anucunnilinguiste

    Ouais bof, les offres d’emploi de l’AFPY ! C’est pas l’association avec un site de 98 en plone, avec un flux RSS long comme mon bras avec que de la news fraîche d’y a 2 ans ?

  • anucunnilinguiste

    “de passer 2 minutes de son temps à faire un test simple, je sais d’avance que je veux pas l’engager”

    Sauf qu’avant tu as oublié de dire plein de choses :

    – tu fais 200 bornes car maintenant tout se passe chez ces gros cons de parisiens qui ont peur quand on leur dit bonjour dans la rue,

    – l’intitulé de l’offre est bidon sur toute la ligne, on te dit dev et tu finis à faire en plus du support et de l’admin,

    – à l’entrée on t’a demandé une nouvelle fois de remplir un formulaire type de CV alors que tu leur as déjà donné un CV détaillé (je sais pourquoi mais bon),

    – tu as poireauté 45 mn avant avec des merdeux sortis de l’école avec encore du lait au bout de leur nez qui révisent leurs cours pensant qu’on va leur demander un diagramme UML ;),

    – pour la partie personnalité comme ils disent, ils étaient 4 à te faire chier sur la taille de ton slip avec un bouquin de Sarkozy sur le bureau (véridique)…

    Alors oui, messieurs les recruteurs, allez vous faire enculer, prenez de l’indien en off-shore et demerdez-vous avez vos clients de merde de chez Orange, Axa et autres collabos assimilés. Restez avec vos projets pourris surfacturés et mal conçus ! Gardez vos frameworks Java et toutes vos usines à gaz, je m’en branle : “chez moi ça marche” ;)

  • anucunnilinguiste

    Pour vraiment kiffer le recrutement dans son cynisme le plus prononçé je vous conseille les entités ou entreprises suivantes : GFI à Douai, des enculés de première, OVH Lille, une bande de gitans polonais, si t’es pas polonais, essaye même pas faudra sucer, l’ANSSI qui bombardent tous les magasines sur le libre avec leurs offres super cools, et bien non ce sont de gros enculés, qui ne paient pas et qui adorent jouer aux agents secrets en carton ;) avec votre pognon et aider les entreprises du CAC40 à fliquer leurs salariés.

  • anucunnilinguiste

    “Il parait que l’humain est à son pic-brain. (dixit: science et vie), et qu’on n’ira pas plus loin en capacités cognitives.
    ça fout les j’tons…”

    C’est en général ce que dit la propagande néo-libérale pour légitimer certains de leurs actes, c’est vieux comme le monde…c’est comme de dire d’un révolté qu’il est parano, c’est du même style…c’est du bullshit.

  • anucunnilinguiste

    “À sa surprise, 90 % des candidats s’y cassent les dents, ce qui lui permet de ne passer du temps qu’avec le reste.” La suite du test : primitives, dérivées, intégrales…n’oubliez pas de réviser avant chaque entretien ;) et n’oubliez pas votre TI82, votre compas et votre gomme ! Pour votre intégration dans la boîte une dissertation et un mémoire à rendre avec la fin de la semaine : bref c’est ridicule ! A quand un Acadomia pour les dev demandeur d’emploi ;) : monde de merde !

  • anucunnilinguiste

    Moi je suis pour la fizz mandale dans la tronche des recruteurs, tu sais le genre de mandale qui vient bien de haut et de loin et qui claque bien sur la joue et qui fait siffler les oreilles !
    Mais c’est bien connu, les meilleures tête à claque sont dans les SSII : Atos, Unilog, GFI, Sopra et sous-merdes du même acabit.

  • calagan

    Et bien moi c’est différent, comme je n’ai rien à foutre de mes journées(vrai ingé BAC+5), j’envoie plein de supers C.V bidons à des SSII qui m’appellent. Je négocie longtemps au téléphone sur le salaire, je les fais chier bien longtemps avec des aller-retour et au final, je leur dis d’aller se faire foutre, je leur apprends tout doucement à savoir ce que c’est de se sentir comme une merde de chien et de perdre son temps avec des cons, je vous le conseille ça marche super bien ! On pioche facile avec les mots à la mode : java, seo, ceo, responsive design, design pattern, méthode agile, ios…

  • désanuseur

    @Etienne

    def factorielle(x):
    if x < 2:
    return 1
    else:
    return x * factorielle(x-1)

  • désanuseur

    Les jeunes, encore naifs et plein d’entrain : c’est attendrissant ! Réveillez-vous, si on vous embauche ce n’est pas parce-que vous êtes bons ou compétents, ça se saurait, c’est uniquement parce-que vous êtes moins chers et/ou plus malléables qu’un autre… Bientôt sinon vous allez me dire qu’un chef de projet c’est un super bon développeur qui finit sa carrière !! Et bien non, un chef de projet c’est un naze et on veut surtout pas qu’il touche au code ! Bisous tendres ;)

  • Etienne

    @anucunnilinguiste
    Ça devrait te plaire: Monsieur le DRH (ce sont des petits gars de Lilles)

    @désanuseur
    oui, je pensais bien que c’était ça

  • JEEK

    Retex et commentaires intéressants ; dites, ça ne donne que moyennement envie de pisser de la ligne dans une partie des boites françaises tout ça…
    :-|

    J’espère que vous trouvez le moyen de vous éclater les gars (et les filles) ?

    “pic-brain…capacités cognitives au taquet” ? P’tain faut avoir fait polyclinique +5 pour sortir ce genre de truc…
    …ils faut dans le “loto réunion” chez science et vie ?
    Dans ce cas, je me lève et je dis “foutaises” !!! :-D

    Plus sérieusement, on s’adapte par l’expérience et le cerveau ne fait pas exception (on parle de neuroplasticité) ; ce dont on a plus besoin s’émousse et disparait et ce qu’on commence à rencontrer remodèle le bordel ; les connexions se réinitialisent et : “let’s go Diego”…

    L’humain doit rester humain ; il a déjà survécu à pas mal de conneries, il survivra encore et s’adaptera (enfin j’espère) !

    NB: ça se voit que j’adore lire ce blog ? Non mais parce que si ça ce voit pas, eh bah je le dis…
    ;-)

  • Sam Post author

    anucunnilinguiste il poste pas souvent, mais à chaque fois je suis mort de rire.

  • jerrywham

    Tout ça me fait penser au bon chasseur et au mauvais chasseur. Le bon chasseur, il voit une galinette (sandrée), il vise et il tire.
    Le mauvais chasseur, il voit une galinette…, il vise et…. il tire !

  • Anucunnilinguiste

    “Retex et commentaires intéressants ; dites, ça ne donne que moyennement envie de pisser de la ligne dans une partie des boites françaises tout ça…”

    Et bien franchement si tu as le choix, fais autre chose, dans l’informatique c’est des cons, ils ont des blagues pourries, y a pas de meufs et on passe ses week-ends à réparer des PC de merde de sa connasse de cousine alors que toi t’es habitué à de la fibre inter continentale et à des disques en fiber channel !

    Nous ce qu’on veut en informatique c’est rêver des bordels de Manaus et d’Indochine, sentir la petite culotte de la dernière stagiaire RH, mais ça Walou, tu auras rien, tu auras des cons de chefs, des cons de clients et du reporting à te faire dégueuler et à regretter sa dernière cuite au rhum, tu sais celle où t’as montré ton cul aux collègues de ta copine ;)

  • Anucunnilinguiste

    @JEEK

    Et puis tu sais un BAC +5 pour faire du php ou traiter des fichiers textes, tu vas adorer ;) et si tu veux vraiment t’éclater je te conseille le domaine noble de l’informatique : “le support” ou pire l’agence de com ou web agence je te préviens, tu vas adorer !

  • Anucunnilinguiste

    @JEEK

    “J’espère que vous trouvez le moyen de vous éclater les gars (et les filles) ?”

    On s’éclate chez soi, en milieu professionnel on subit et on s’adapte en fonction de nos capacités telle une sous-merde rampante ;)! Heureusement dans ma boîte, on nous fournit des poupées Real Dolce, ça évite les meurtres ou des exactions barbares à l’encontre de nos conjointes ;) ou pire de nos progénitures !

  • Max

    Ben dites donc les gars… J’ai de la peine pour vous. Ne voyez pas dans ma réponse une quelconque vantardise mais plutôt un soulagement.

    En effet dans les années 2000 j’ai arrêté mes études après avoir obtenu le bac. Et j’ai toujours été inquiet de ne pas avoir continué en DUT ou école d’ingé, en fait si j’ai fais une école d’ingé son mais ça n’a rien à voir. Ingénieur ne voulant rien dire dans ce domaine, c’est plutôt technicien.

    Depuis j’ai bossé que 2 fois dans le secteur web pour 2 boîtes. Ca s’est bien passé comparé à vous. Depuis 2005 je suis à mon compte et franchement si ça devait s’arrêter je me vois mal passer un entretien d’embauche avec ce que vous dites…

    Je suis donc soulagé d’être à mon compte car :
    – Je code comme une merde
    – je fais pas de doc
    – je sais pas résoudre la question du fizzbuzz sur papier
    – je sais pas ce que c’est une factorielle, ni un uml, et plein d’autres trucs
    Ceci dit:
    – Je renifle les petites culottes des thailandaises 3 fois par an
    – je peux dormir des journées entières devant la télé
    – je peux passer une semaine sans bosser et personne me dit rien
    – je vais tous les ans en allemagne me taper les soeurs de Karembeu
    – aucun connard vient me rabâcher à longueur de journée que je suis un deumeuré
    – j’ai visité plein de pays sans avoir à me dire qu’il fallait que je rentre pour rendre des comptes au CEO

    Bref, je suis soulagé quelque part de pas avoir pris la voie du dev sorti de l’école (de toutes façons j’aurais été un très mauvais dev).

    Si je peux me permettre un conseil, essayez de monter un projet avant de vous reveiller à 40 balais et à voir que vous êtes encore le larbin d’un chef. Même si vous vous plantez vous aurez le mérite d’avoir essayé et pas de regret !
    Piquez des idées déjà vues, refaites des sites déjà existants, bref sortez du carcan dev même si vous pensez savoir que coder et rien faire d’autre.

    Bon je vais aller voir les billets pour l’allemagne, y a des promos…

    PS: à poil les putes

  • Désanuseur

    @Max es-tu sur Paris, car le lieu change énormément de choses…

  • Anucunnilinguiste

    Faut que je fasse comme vous, que je me lance dans le sexe ;)

    Y a que cela qui paie de nos jours : un petit partenariat avec Jacquie et Michel et c’est parti…un faux portail de rencontre avec plein de pop, des sites dérivés, je vais me gaver ;)

  • calagan

    “Si je peux me permettre un conseil, essayez de monter un projet avant de vous reveiller à 40 balais et à voir que vous êtes encore le larbin d’un chef.”

    Merci ça fait plaisir ;), mais heureusement pour me contentez, j’ai aussi mes propres larbins ;)

    Je n’ai jamais trop adhéré au concept de “projet”, c’est un truc sauce UMP ce concept pour moi, un truc de manager performer, un gars qui s’épile voire gay, faut avoir des projets pour tout pour être dans le move :

    – des projets professionnels,
    – des projets personnels,
    – des projets familiaux,
    – des projets sportifs,
    – des projets de voyages,
    – des projets de couples …

    Bref en gros, ça m’emmerde les projets,je me demande même si je vais continuer à travailler et à me laver… ;) ou si je vais partir tout de suite me gratter la bite devant ma PS3 ;)

  • Anucunnilinguiste

    Cher auditeurs, vous remarquerez quand même la qualité des différentes interventions, des commentaires en HD.

  • Anucunnilinguiste

    Twitter est devenu futile voire has-been depuis le site sametmax.com ;)

  • Anucunnilinguiste

    “Une langue pour les dominer toutes”

    Telle est la devise de ma communauté de l’anneau, celle qui agrandit le cercle de ses connaissances ;) par le petit trou tout noir, tu sais celui où il fait sombre et qui sent pas bon !

    Anucunnilinguiste, ma langue au service de la France !

  • Max

    @désanuseur

    Non, j’ai fais mes études à Paris mais j’ai quitté cette région de suite après car je n’aime pas Paris sauf en tant que touriste.
    Je me doute bien que ça ne doit pas être pareil qu’ailleurs mais bon le métier de dev ne se limite pas à Paris même si je sais que les Français sont sédentaires ;)

  • Etienne

    Pleinement d’accord avec Max. On n’a qu’une vie, faut au moins essayer d’en faire quelque chose de sympa.

  • Bussiere

    Si vous voulez deprimer encore plus , quand j’etais jeune et que j’avais besoin de sous j’ai fait des projets infos d’etudiant de dauphine.

    Ensuite c’est sexiste mais j’ai vu pas mal de nanas valider des diplomes info dont dut sans savoir coder.

    Elles allaient juste de geek en geek pour les projets.

    Ce qui me deprime aussi c’est que ce sont des gens qui se retrouvent en tant que consultant a te dire quoi coder / faire.

    Et eux font des petits bonhomme niveau maternelle (uml / merise).

  • Anucunnilinguiste

    @Bussiere

    J’en ai connue aussi des connasses qui ont leur diplôme grâce à mon code C ;), mais je suis grand seigneur et je me dis que sans moi elles ne seraient rien ;) ! J’ai donc le droit de cuissage à vie désormais !

  • Sam Post author

    C’est dingue comme ce poste, parti d’un snippet amusant, a dégénéré en une diarrhée de commentaires qui mélange lutte des classes et sexisme. Internet a quelque chose de magique.

  • Anucunnilinguiste

    Le secteur informatique est bourré d’usurpateurs en tout genre !

    Il faut chasser le marketing et le commercial de nos secteurs pour retrouver la vraie notion de “science informatique”.

    Et remettre de cursus “hard” de sciences techniques et arrêtez de se toucher le zizi avec le management, la gestion, le marketing et le commercial. On retrouvera de vrais ingénieurs et pas des sous-merdes rampantes à Ipad !

  • Anucunnilinguiste

    “lutte des classes”

    La vie entière est une lutte des classes :

    – on a des salaires inférieurs au chef,
    – ton voisin a une plus grosse voiture que la tienne,
    – ton pote part en voyage,
    – tu as un super ordinateur et pas ton voisin,
    – ton voisin a un meilleur job que toi alors qu’il a rien branlé à l’école…

    Chacun veut ce qu’il n’a pas et ce que l’autre possède. La vie est une lutte de classes permanente. La propagande mondialiste veut nous faire croire que la lutte des classes est un vieux concept marxiste, il n’en ai rien. La guerre entre développeurs et chefs de projets est une lutte de classe, peu importe de quelle manière en habille le concept par un vocabulaire politiquement correct. Pour rendre cette lutte des classes moins visible, l’élite a fractionné ces classes en sous-classes que l’on appelle minorités : juifs, femmes, handicapés, immigrés, salariés privés, salariés publics, riches, pauvres. La division est la meilleure arme pour diluer des concepts majeurs en communautés disparates que l’on monte les unes contre les autres afin de gouverner. Vous avez une des raisons pour laquelle les politiques de gauche laissent la classe ouvrière à l’abandon au profit des minorités (lobby juif, lobby homo, lobby écolo)…Le travail actuel de l’élite mondial est de casser la classe moyenne et elle réussit assez bien car seule la classe moyenne est apte à réfléchir et à potentiellement s’organiser et se rebeller. La classe moyenne est la garante d’une stabilité sociale et politique, sans elle le politique est soumis aux groupes de pression et c’est exactement ce qu’il se passe actuellement.

    Alors aux armes citoyens, formez vos bataillons, marchons, marchons !!

  • Anucunnilinguiste

    Cela dit j’ai toujours trouvé les informaticiens assez mous de la bite politiquement. Le peu d’esprit critique est généralement exprimé discrètement, timidement, naïvement derrière un écran par des mots trop sucrés et consensuels. Cela dit, je comprends qu’il est difficile d’être des rebelles lorsque notre fonction est de finalement, par l’optimisation des processus de production, de constituer le bras armé du capitalisme et du néolibéralisme.

  • Anucunnilinguiste

    @Sam

    “lutte des classes et sexisme.”

    La guerre des sexes est une lutte de classes…N’avons-nous pas un ami sociologue dans l’assemblée ? C’est dans son programme pourtant tout cela ;)

  • Etienne

    J’arrête pas de le dire: on trouve vraiment de tout sur ce blog, c’est ça qui est bien.

    Le capitalisme serait-il programmé objet, avec toutes ces classes? Un gros plat de raviolis?

  • Etienne

    @Anucunnilinguiste
    si tu veux mon avis:

    1. La “guerre des sexe” a été perdue par les femmes qui la faisaient, même si beaucoup ne s’en rendent pas encore compte.

    2. Un classe au sens marxiste se définit par la possession ou non des moyens de production dans un système de production capitaliste. Rien à voir avec le sexe.

    3. Les problèmes des devs et autres codeurs avec leur environnement de travail, leurs petits chefs, la nature de leurs tâches etc… ne relève pas techniquement de la lutte des classes. Les petits chefs font partie de la même classe que les travailleurs (ils sont tous salariés).

    4. Ce que tu racontes (“diviser pour régner”) est tout à fait intéressant.

    5. Le sociologue que je fus a parlé. Hug!

  • Anucunnilinguiste

    “Le capitalisme serait-il programmé objet, avec toutes ces classes? Un gros plat de raviolis?”

    J’aime ;)

  • Anucunnilinguiste

    @Etienne

    J’ai pris effectivement des raccourcis intellectuels, je m’en excuse, j’ai seulement la flemme d’écrire 4 pages pour expliquer davantage pour à la fin être traité de communiste ;) ou d’emmerdeur !

    Merci de me faire relire Proudhon ;) (“Qu’est-ce que la propriété”) ;), j’avais bien pris cet angle néanmoins ;) mais de manière touffue ;)

  • Etienne

    @Anucunnilinguiste
    Personnellement, dans ce genre de contexte je vois pas pourquoi on ferait chier le monde avec le sens exact des concepts (sens au sujet duquel il y a rarement consensus, d’ailleurs). Ce qui est important je crois c’est leur pouvoir évocateur, qu’ils fassent dire et penser des choses intéressantes.

    Pour le reste, on est plus à l’école!

  • Anucunnilinguiste

    Bonne conclusion ;)

    Mais ici on reste quand même un peu à l’école ;) au regard de la qualité des enseignements pythonesques !

  • Max

    je crois que le premier lien marche pas (imran glory “hole”) , t’es recâlé ou pas ? :)

  • okso

    @Etienne, @désanuseur

    Sinon pour la factorialle, j’ai ça:

    reduce(lambda a, b: (a * b), xrange(1,x+1))

    * mais reduce a été viré en py3k -> import pour ça ça chie

  • JEEK

    @ Anucunnilinguiste : ooh bah tu sais, je bosse dans le domaine depuis 1995, je suis passé par pas mal de stades (y compris hotline, supports et tralala), depuis un peu plus de 3 ans je fais de la formation et à la base…
    …j’ai BAC -2 et je suis autodidacte à quasi 100% ! :-D

    Et le pire, c’est que bien souvent : je m’éclate à mon boulot !
    J’suis pas un pisseur de ligne et je code comme un admin système du chaos…

    Sérieusement, j’espère que tu t’éclates quand même de temps en temps !
    ;-)

  • JeromeJ

    Ahaha, Proof Of Concept (au cas où tu n’étais pas dans le second degré).

    J’adore me lancer ce genre de ptit challenge, essayer de faire un purée de programme en le moins de lignes possibles, ça prouve aussi que tu gères le langages et les biblios :p

  • roro

    @JeromeJ:
    Et un challenge, un:
    Cahier des charges:
    Faire un exécutable Avec trois boutons.
    Bouton 1: ouvre l’explorateur de fichiers.
    Bouton 2: Réindente. Avec le script des “tools”.
    Bouton 3: Save as.
    compatible v2 et v3
    à combien de lignes estime-tu la chose ?

  • tarzan

    à l’arrache pour apprendre le python (oui je fais du java) :

    #on utilise des librairies toutes faites
    import unicodedata
    import re
    def convertascii(i):
      """
      retourne i sans les accents 
      à l'œuil  -&gt; a l luil (le œ n'est ni o ni e)
      """
      return unicodedata.normalize('NFKD', str(i).decode("utf8")).encode('ascii', 'ignore')
     
    def charslower(s):
      """retourne les lettres de s, en minsucule
      """
      return ''.join(re.findall('[a-zA-Z0-9]',s.lower()))
     
     
    def ispalyndrome(i):
      """
      palyndrome(i) ssi i est le même dans les deux sens
      modulo accents, ponctuation, et casse
      """
      s=charslower(convertascii(i))
      return s==s[::-1]
     
    def printpaly(i):
      """
      on affiche en français si quelque chose d'affichable est un palyndrome
      """
      print "%s %s un palyndrome" %(i, "est" if ispalyndrome(i) else "n'est pas")
     
    ''' un peu de tests visuels. comment faire des tests unitaires en python ?'''
    for mot in [1, 25, 252, "ta mere", "radar", "À la corde, Pedro cala", "un œuil", "Ce méga taré ! Même las, Lee, tu as sauté Elsa : le même ratage mec !"]:
      printpaly(mot)
     
    maxpaly=100*100*100
     
    from math import sqrt
    for a in xrange(900, 999):
      minBval=int(sqrt(maxpaly/a))
      for b in xrange(minBval, a):
        minCval=maxpaly/a/b
        for c in xrange(minCval, b):
          m=a*b*c
          if ispalyndrome(m) and maxpaly&lt;m:
            print &quot;%i * %i * %i = %i&quot;%(a, b, c, m)
            maxpaly=m
  • lilian

    Moche, moche, moche…

    Bon je vais raconter ma vie, meme si tout le monde se centre sur son propre bonheur … J’ai lussur la plus part des posts que les diplômes ne voulaient plus rien dire du tout. Je suis autodidacte, j’ai commencé par Qbasic en 1995 ! j’avais 10 ans :), les macros excel, du VBA, du access, je passe mon BTS en Automatisme Industriel, je bosse en méthode et je deviens informaticien, avec des interventions admins, mon travail de fond aujourdhui c’est de mettre en place du OpenERP dans ma boite, je devloppe des modules en python et design en xml.

    J’ai prévu de reprendre les cours pour avoir plus de reconnaissance sur le marché du travail, je passe les tests équivalent a votre billet a 80% de reussite. Est ce que mon diplome m’apportera finalement quelque chose ormis un titre ‘Ingenieur’? ou je continus en mode Zorro en autodidacte?

  • Sam Post author

    Si tu veux travailler en tant qu’employé en France, ton diplôme d’ingénieur t’évitera d’être bloqué par les grilles d’embauches et de salaires. C’est tout. Mais c’est beaucoup.

    Si par contre tu veux travailler hors de France, ou en tant que Freelance, ton diplôme d’ingénieur ne te servira à rien.

  • lilian76

    Pour le moment, je reste en françe. Mais ça n’est pas exclus que je bouge pour la suite. merci du conseil;

  • furankun

    J’arrive après la bataille et ne compte pas participer, vous êtes trop énervés! j’indiquerai juste une coquille, au dessus de la dernière boîte de code:
    not i % 5 et not i % 5 vont retourner True si x est multiple, sinon False :
    devient
    not i % 3 et not i % 5 vont retourner True si x est multiple, sinon False :

  • Gilles

    ma version allergique aux % ;-) ma faute… j’adore les strings

    for i in xrange(1, 200):
        s = 'FizzBuzz'
        if str((i / 5.0) + (i / 3.0))[-1:] == '0':
            print s    
        elif str((i / 3.0))[-1:] == '0':
            print s[:4]
        elif str((i / 5.0))[-1:] == '0':
            print s[-4:]            
        else:
            print i

    J’en profite pour vous dire bravo pour vos cours et conseils !

  • ThomasG77

    Personnellement, j’ai bien aimé ce GIST sur les factoriels qui résume bien les différences de niveaux entre devs même s’il n’aborde que les solutions proposées qui marchent et pas le cas de ceux qui n’arrivent pas à la solution même basique.

  • Sam Post author

    Le problème d’utiliser une notion mathématique (même aussi simple que les factorielles) pour un fizzbuzz, c’est que tu vas exclure un mec qui est nul en maths alors qu’il pourrait être un très bon programmeur web.

    Il y a aujourd’hui plein de domaine de prog (scripting, dev web, UI, etc) où on peut exceller en ne sachant pas faire plus qu’un multiplication. Surtout avec les langages de haut niveau.

  • kontre

    Énorme ce lien, je me suis bien marré ! Le mieux est presque le return 720 dans les commentaires.

    Par contre Sam je sais pas si la factorielle est un concept mathématique plus avancé qu’un modulo. La différence est peut-être que le modulo est plus utile dans la vraie vie.

  • blind

    Un autre oneliner:
    for i in range(1, 200): print "Fizz" * (i%2==0) + "Buzz" * (i%3==0) + str(i) * (i%2 and i%3 > 0)

  • salas

    Bon après y’a les truc comme suite de Syracuse : un peu plus chaud que le fizzbuzz.

    Tu prend un nombre si c’est pair tu divise par deux si c'est impair tu multiplie par deux et tu rajoutes 1 et du recommence avec le nouveaux nombre. Tu stop quand tu arrives à 1 (car 1-4-2-1-4...). Partant de 2014 combien d'étape faut t'il d'étapes.

    Easy à comprendre, ma petite sœur de dix ans le fait pour 10 comme nombre au début, avec une condition recursive une détection de parité, un compteur. Bref c’est pas la mort non plus et je pense que tu peux sortir des solution hyper elegante à coup d’iterables ou des one liners dégueux mais fonctionnel avec des lambda.

  • Alkareth

    Yo. Article intéressant, commentaires tout autant, ce blog est vraiment cool ! Je viens de coder le plus grand palindrome de trois facteurs à trois chiffres, bien à l’arrache je trouve 967262769 (soit 999*989*979, d’ailleurs c’est joli, ça mériterait de réfléchir à d’où que ça vient mathématiquement), calcul en 1,5 secondes.

    max_pal = (0, 0, 0, 0)
    for i in range(999, 1, -1):
        for j in range(i, 1, -1):
            for k in range(j, 1, -1):
                nb = i * j * k
                if nb  max_pal[3]:
                    max_pal = (i, j, k, nb)
    print(max_pal)

    Qui pour optimiser ?

  • Sam Post author

    Hello Alkareth,

    Les commentaires ne peuvent pas être utiliser comme pour un forum pour ce genre de chose. D’ailleurs, le projet euler a son propre forum sur lequel je te conseille plutôt de t’orienter (http://forum.projecteuler.net/).

  • TTr

    Une autre solution online avec la programmation fonctionnelle :

    print ''.join(map(lambda t:t[0],zip(['Fizz','Buzz'],filter(None,[not n%3,not n%5])))) or n

  • DrHaze

    Quand je me fais chier au taf, je viens relire les commentaires de cet article, je ris un bon coup, me dit que finalement j’suis bien tombé pour une première embauche et je retourne bosser.

  • KerTakanov

    Une autre façon :

    def fizzbuzz():

    for i in range(1, 200):

    print("FizzBuzz" if not i % 3 and not i % 5 else "Fizz" if not i % 3 else "Buzz" if not i % 5 else i)

    J’suis pris?

  • lajujula

    Le mec qui répond au fizz buzz est très qualifié,

    celui qui sait résoudre un XOR est un petit GÉNIE !!!

    (basé sur des faits réels répétés)

  • dutiona

    Perso si on me demande un fizzbuzz, je répond dans le langage que je veux. Et je pense que je répondrai un vieux truc en prolog :

    loop(N) :- N = 101.

    loop(N) :- N rem 15 =:= 0, write(‘ FizzBuzz’), nl, A is N + 1, loop(A).

    loop(N) :- N rem 3 =:= 0, write(‘ Fizz’), nl, A is N + 1, loop(A).

    loop(N) :- N rem 5 =:= 0, write(‘ Buzz’), nl, A is N + 1, loop(A).

    loop(N) :- write(N), nl, A is N + 1, loop(A).

    loop(1).

  • david

    Les one-liners, c’est vraiment jolie. Mais si ils passent leur temps à coder comme ça, je n’ai pas envie de repasser derrière

  • Anne Onyme

    Et voici, 3 ans et demi plus tard, le oneliner le plus esthétique (il fait même moins de 80 caractères^^) pour ce test fizzbuzz:

    [print(("Fizz" * (i%3==0) + "Buzz" * (i%5==0)) or i) for i in range(1, 200)]

    De rien.

  • Anne Onyme

    Et fuck, le caractère “star” sert de balisage pour l’italique, c’était pas visible dans la prez. Si mon précédent post pouvait être corrigé et celui-ci supprimé, ce serait cool!

  • Sam Post author

    Done :)

    A noter que ce one liner va créer une liste de None qui va s’afficher dans un shell. Si on veut éviter ça, on peut juste utiliser une boucle for normale qui peut tenir sur une ligne:

    for i in range(1, 200): print(("Fizz" * (i%3==0) + "Buzz" * (i%5==0)) or i)
    
  • TitinetteDesPrésDesMontagnesEtDesVallées

    Je l’ai eu hier en entretien ce truc, en Java (je suis pas fan mais bon, il voulait du Java). J’ai fait la façon basique avec des if. Je me suis demandé s’il me prenait pour une courgette, et puis tu dis que 90% des gens ne passent pas ce test ? Comment est-ce possible ? Le stress ? Bref, je suis partie en me disant que j’étais aussi douée en informatique qu’une tarte à l’oignon (même si le truc a marché, franchement je me suis dis qu’il me posait une question adaptée à mon niveau), et que le mec était bien gentil de passer 1h à discuter avec moi… Enfin, soyez francs, c’est une légende que 90% des gens ne font pas ce truc… Vous avez des vraies stats là-dessus ? Non parceque faire croire que 90 des dev sont des patates en code, je trouve ça assez irreponsable quand même, ce n’est pas très motivant pour ceux qui se lancent dans le métier. Moi qui fantasmais sur le QI des informaticiens… Alors j’ai quand même du mal à croire ce que je lis là, et ceux que j’ai croisés sont, à mon avis, tout à fait capables de faire ça, donc je ne vois pas d’où ces 90% sortent…

  • Sam Post author

    Faut vraiment faire des entretient d’embauche pour s’en rendre compte, mais ouai. 90% des candidatures sont à mettre à la poubelle.

Comments are closed.

Des questions Python sans rapport avec l'article ? Posez-les sur IndexError.