Gil Cot ✔ a écrit 6272 commentaires

  • [^] # Re: un petit peu plus (de divisions)

    Posté par  (site web personnel, Mastodon) . En réponse au journal résoudre "trouve 24". Évalué à 2.

    cool une version bash

    POSIX shell, j'insiste :-D Ça devrait fonctionner aussi dash/ash avec lequel je teste. C'est juste qu'on évite des trucs propres à bash/ksh??/pdksh/zsh/etc ; mais ce faisant on s'évite certaines facilités (comme les tableaux et certaines formes de tests)

    J'ai encore des /0 […] ; et je ne comprends pas le "$7" dans solution2.

    J'ai oublié de corriger mon post (rédigé certes offline pour avoir le temps de tester un peu et donc présenter un POC au lieu d'une théorie, mais j'ai du zapper dans les aller-retours rédaction-débogage)
    Dans la boucle for du second type type, j'avais mis deux tests (juste avant le calcul) au lieu du seul mentionné :

    test "$o1" = '/' && test "$o3" = '/' && test $n2 -lt $n3 && continue
    test "$o2" = '/' && test "$o3" = '/' && test $n2 -lt $n3 && continue
    test $(( n1 $o1 (n2 $o3 n3) $o2 n4 )) -eq 24 &&
        solution2 "$n1" "$o1" "$n2" "$n3" "$o2" "$n4" "$o3"

    J'ai ensuite remplacé les deux tests par un seul qui fusionne les deux…

    test "$o3" = '/' && test $n2 -lt $n3 && continue
    test $(( n1 $o1 (n2 $o3 n3) $o2 n4 )) -eq 24 &&
        solution2 "$n1" "$o1" "$n2" "$n3" "$o2" "$n4" "$o3"

    Le $7 est $o3 ; mais on peut réarranger l'ordre si ça simplifie la lecture et la compréhension.

    et process2 n'est jamais utilisé

    Pas possible ! Je les ai testé séparément sur ton exemple et ça m'a bien renvoyé les quatre résultats (pour 1344 calculs) suivants :

    2-1=1; 3*1=3; 3*8=24
    2-1=1; 3/1=3; 3*8=24
    2-1=1; 8*1=8; 8*3=24
    2-1=1; 8/1=8; 8*3=24

    trop de cas tordus.

    Oui et c'était le premier pan de mon défi :-D

    Je viens d'en trouver un avec l'exemple de "le_poney" :-D (dans la sortie suivante, je n'ai activé que solutions2)

    $ trouve24.sh 7 7 1 2
    7*1=7; 7*7=49; 49/2=24
    7/1=7; 7*7=49; 49/2=24
    1*7=7; 7*7=49; 49/2=24
    7*1=7; 7*7=49; 49/2=24
    7/1=7; 7*7=49; 49/2=24
    1*7=7; 7*7=49; 49/2=24
    7*7=49; 1*49=49; 49/2=24
    trouve24.sh: line 77: n1 / (n2 - n3) + n4 : division by 0 (error token is "+ n4 ")

    C'est le cas 1 / (7 - 7) + 2 qui devrait pouvoir se corriger sans trop de difficulté. Je fais ça tout à l'heure.

    “It is seldom that liberty of any kind is lost all at once.” ― David Hume

  • [^] # Re: un petit peu plus (de divisions)

    Posté par  (site web personnel, Mastodon) . En réponse au journal résoudre "trouve 24". Évalué à 2. Dernière modification le 24 février 2022 à 14:08.

    Il ne manque pas également → ((AxB)yC)zD

    Avec les commutativités (additions et multiplications) et les priorités (multiplications et divisions) on devrait retomber sur l'un des 4 cas précédemments énumérés…
    Mais je dis ça au doigt mouillé ; faudrait que je prenne le temps faire la preuve mathématique.

    Par exemple avec 7 7 1 2 je m'attends au résultat ((7*7)-1)/2

    Justement avec les priorités, ((7*7)-1)/2 est (7*7-1)/2 ; ce qui me fait dire qu'il manque éventuellement les cas (AxByC)zD (solutions5) et Ax(ByCzD) (solutions6) ainsi que AxByCzD (solutions0) tout simplement ?
    On peut facilement les rajouter… Le plus dur étant en fait, de détecter pour chaque type de solutions les divisions par zéro…

    “It is seldom that liberty of any kind is lost all at once.” ― David Hume

  • [^] # Re: Snif

    Posté par  (site web personnel, Mastodon) . En réponse au lien Sven Guckes verstorben. Évalué à 2.

    C'est donc un nom connu de LinuxFr :-) C'est triste, il avait beaucoup d'énergie (ardeur dans la promotion du libre) à revendre. Qu'il repose en paix.

    “It is seldom that liberty of any kind is lost all at once.” ― David Hume

  • # un petit peu plus (de divisions)

    Posté par  (site web personnel, Mastodon) . En réponse au journal résoudre "trouve 24". Évalué à 4. Dernière modification le 24 février 2022 à 03:44.

    Wordle est mort. Racheté par le capitalisme et blindé de tackers et de pubs.

    C'est ballot …parce que, justement dans un lien posté récemment, que l'absence de pisteurs est un des ingrédients du succès.
    https://linuxfr.org/users/gilcot/liens/wordle-is-pretty-damn-smart-in-many-subtle-ways

    J'ai joué un peu puis me suis dis "c'est un boulot pour une machine".

    Ou pas… Ce genre de jeux (le compte est bon) est une façon d'évaluer l'aptitude de calculs mentaux et l'intuition (plutôt la capacité d'estimation) face aux combinaisons de nombres. Évaluer une machine, ou tricher, a peu d'intérêt ici.
    Ceci dit, l'informatique y est utile pour évaluer des conjectures mathématiques ou explorer certains aspects algorithmiquement (notamment tout ce qui touche aux arbres de décision, dont il n'est pas question ici puisqu'on emploie la force brute.) Il me semble d'ailleurs avoir vu passer deux articles sur le sujet, dont un dans Tangente si j'ai bonne mémoire.

    À noter que le programme donne des solutions invalides qui n'utilisent pas tous les nombres, il faut filtrer. Je n'ai pas non plus implémenté la division qui me paraissait plus compliquée qu'utile à l'époque pour le compte est bon.

    Du coup, je vais relever le défi, histoire de me changer les idées après une journée harassante de travail. Et pour épicer un peu la chose, l'implémentation sera en shell POSIX…

    Bien, je passe sur l'étape de la saisie des nombres et du contrôle des entrées (toujours.)
    Je ne vais pas non plus stocker les solutions, mais plutôt les sortir au fil de l'eau.
    Comme on n'a pas de structure de tableau (en KSh, BASh et probablement ZSh, oui) je vais utiliser une variable par nombre (mais il n'y en a heureusement que quatre) !

    Mon idée est qu'on va faire une boucle sur la liste de nombres.
    Dans un langage comme RPL, on va juste faire quatre tours en décalant…

    \<<
      1 4 FOR i
        4 ROLL
        @process
      NEXT
    \>>
    

    Pour la plupart des autres langages, non Forth-like on va utilier un tableau et décaler le curseur dans la boucle (tout en prenant tous les éléments, c'est juste pour changer l'ordre à chaque itération.)
    Bon, on ne gère pas de tableau et heureusement il n'y a que quatre nombres.

    process0 $number1 $number2 $number3 $number4
    process0 $number2 $number3 $number4 $number1
    process0 $number3 $number4 $number1 $number2
    process0 $number4 $number1 $number2 $number3

    Ces quatre lignes sont trompeuses (ça m'a servi à valider le fonctionnement, mais) il y a en fait vingt-quatre permutations (prises en compte dans la version finale.)

    Le processus va consister à appliquer les quatre opérateurs… de sorte à couvrir tous les cas…
    On peut les énumérer, mais par peur d'oublier, je boucle pareillement pour les quatre opérations… (l'optimisation serait de déboucler …parce que sinon on aura des doublons du fait la commutativité, mais cet exercice se fera plus tard.)

    process0() {
      for o1 in '+' '-' '*' '/'
      do
        for o2 in '+' '-' '*' '/'
        do
          process1 "$o1" "$o2" "$@"
        done
      done
    }
    
    process1() {
      local o1="$1"
      local o2="$2"
      local n1="$3"
      local n2="$4"
      local n3="$5"
      local n4="$6"
      for o3 in '+' '-' '*' '/'
      do
        test $(( (n1 $o1 n2) $o3 (n3 $o2 n4) )) -eq 24 &&
          solution1 "$n1" "$o1" "$n2" "$n3" "$o2" "$n4" "$o3"
      done
    }
    
    solution1() {
      local r1=$(( $1 $2 $3 ))
      local r2=$(( $4 $5 $6 ))
      echo "$1$2$3=$r1; $4$5$6=$r2; $r1$7$r2=24"
    }

    Bon, c'est pas tout ça. Dans ce truc brutalement automatique, il ne faut pas oublier de gérer la division par zéro…

        test "$o1" = '/' && test $n2 -eq 0 && break
        test "$o2" = '/' && test $n4 -eq 0 && break
        test "$o3" = '/' && test "$o2" = '/' && test $n3 -lt $n4 && continue

    En plus du second processus, on va appeler un troisième dans la même boucle (c'est du « quick and dirty » et il doit être possible de fusionner les deux…)

    process2() {
      local o1="$1"
      local o2="$2"
      local n1="$3"
      local n2="$4"
      local n3="$5"
      local n4="$6"
      test "$o3" = '/' && test $n2 -eq 0 && return
      for o3 in '+' '-' '*' '/'
      do
        test "$o2" = '/' && test "$o3" = '/' && test $n2 -lt $n3 && continue
        test $(( n1 $o1 (n2 $o3 n3) $o2 n4 )) -eq 24 &&
          solution2 "$n1" "$o1" "$n2" "$n3" "$o2" "$n4" "$o3"
      done
    }
    
    solution2() {
      local r3=$(( $3 $7 $4 ))
      local r4=$(( $1 $2 $r3 ))
      echo "$3$7$4=$r3; $1$2$r3=$r4; $r4$5$6=24"
    }

    Enfin, on pense à ajouter les compteurs.

    $ trouve24.sh 1 2 3 8
    1/2=0; 3*8=24; 0+24=24
    1/2=0; 8*3=24; 0+24=24
    1+3=4; 8-2=6; 4*6=24
    2-1=1; 3*8=24; 1*24=24
    2-1=1; 8*3=24; 1*24=24
    3+1=4; 8-2=6; 4*6=24
    2-1=1; 3*1=3; 3*8=24
    2-1=1; 3/1=3; 3*8=24
    3*8=24; 1/2=0; 24+0=24
    3*8=24; 1/2=0; 24-0=24
    3*8=24; 2-1=1; 24*1=24
    3*8=24; 2-1=1; 24/1=24
    8-2=6; 1+3=4; 6*4=24
    2-1=1; 8*1=8; 8*3=24
    2-1=1; 8/1=8; 8*3=24
    8-2=6; 3+1=4; 6*4=24
    8*3=24; 1/2=0; 24+0=24
    8*3=24; 1/2=0; 24-0=24
    8*3=24; 2-1=1; 24*1=24
    8*3=24; 2-1=1; 24/1=24
    20 solutions for 2832 computed.

    Comme c'est bête/brute et méchant/truand, il m'annonce vingt réponses qui pourraient se ramener à 10 du fait des symétries et on a exploré deux mille huit cents combinaisons dont on aurait pu se passer du quart je pense.
    J'ai exploré ici les formes (A x B) y (C z D) (c'est (8-5)*(7+1) ou (1+3)*(2-8) par exemple) et A x (B y C) z D (c'est 3*(2-1)*8 par exemple) ; mais pas A x B y (C z D) et (A x B) y C z D ! Il s'agit d'une part d'un jet rapide, et d'autre part ce ne serait pas pertinent en shell car je soupçonne qu'il y aura des doublons et/ou même des triplons. Cependant, avec ces ajouts, on devrait arriver aux trois mille septante douze…

    Petit bémol cependant : les calcul ici sont fait sur des entiers et c'est problématique pour les divisions car le hollandais volant l'entend flottant… (si j'en crois la fonction randomizeNumbers() qui pourtant fait un Math.floor(), à moins que ce ne soit à cause du evalMath(cell1, operator, cell2) dans la fonction evalResultat() ?) Je pense pouvoir corriger cela facilement, ce qui réduira le nombre de solutions proposées.

    “It is seldom that liberty of any kind is lost all at once.” ― David Hume

  • [^] # Re: Retour d'erreur ?

    Posté par  (site web personnel, Mastodon) . En réponse au message renommage de fichiers en masse. Évalué à 3.

    Il y la structure et les checks nécessaires qui sont indiqué dans l'exemple que j'avais pointé (on est un peu loin de ce qui a été fait.

    “It is seldom that liberty of any kind is lost all at once.” ― David Hume

  • [^] # Re: Quai d'Orsay

    Posté par  (site web personnel, Mastodon) . En réponse au journal Évolution des Conditions Générales. Évalué à 3.

    Excellent ! Merci tout plein.

    “It is seldom that liberty of any kind is lost all at once.” ― David Hume

  • # palme de la boule de cristal

    Posté par  (site web personnel, Mastodon) . En réponse au lien « La France va-t-elle interdire la vente de PC sans OS ? ». Évalué à 2.

    En même temps, ce n'était qu'une question de délai…
    https://linuxfr.org/users/mcdoil74/journaux/ordi-baby-microsoft-windows#comment-1021358

    “It is seldom that liberty of any kind is lost all at once.” ― David Hume

  • [^] # Re: Ça ferait une bonne dépêche je trouve

    Posté par  (site web personnel, Mastodon) . En réponse au journal rétrospective sur la mise en page en console. Évalué à 2.

    La suite est presque prête. Ce sera une dépêche si plus de gens le signifient en plussant ton commentaire. La valeur à atteindre est 16 (parce-que 0xF simplement)

    “It is seldom that liberty of any kind is lost all at once.” ― David Hume

  • [^] # Re: Autres corrections

    Posté par  (site web personnel, Mastodon) . En réponse au journal rétrospective sur la mise en page en console. Évalué à 2.

    Je me suis fait un diff de toutes les corrections et c'est monstrueux…

    https://paste.chapril.org/?ad03e7cef7a32484#nVrrtCqfPzhHxtsyRHpHucPm6G5m67zJtaF85nSasxN

    (352 lignes de diff pour 1380 dans le source, soit le quart mais il y a dedans les trois lignes de contexte par défaut…)

    “It is seldom that liberty of any kind is lost all at once.” ― David Hume

  • [^] # Re: Un sacré jeu de piste

    Posté par  (site web personnel, Mastodon) . En réponse à la dépêche RFC Fast Kernel Headers très prometteur pour le noyau Linux. Évalué à 4.

    Il y a certainement une …mono piste…

    “It is seldom that liberty of any kind is lost all at once.” ― David Hume

  • [^] # Re: Attendre un caractère après les deux points

    Posté par  (site web personnel, Mastodon) . En réponse au journal Voter pour virer les emojis de Gitlab. Évalué à 2.

    Petite confusion de ma part : ce sont les parenthèses et non les crochets pour ce que j'avais à l'esprit, et il faut rajouter le croisillon et le pourcentage…

    <!ENTITY % flow
    "%block;|%inline">
    
    <!ELEMENT p
    (#PCDATA|%phrasing
    -(%flow_only|figcaption)>

    Pour le reste, c'est plus classique et on retrouve bien l'idée de second niveau

    <p>Il faut fermer les balises&hellip;
    <img src="/images/dessins/geekscottes_005.png"
     title="auto-satisfaction récursive" alt="Geeks Cottes 5" />
    (for the fun)</p>

    “It is seldom that liberty of any kind is lost all at once.” ― David Hume

  • [^] # Re: other links in english

    Posté par  (site web personnel, Mastodon) . En réponse au lien Sven Guckes verstorben. Évalué à 2.

    “It is seldom that liberty of any kind is lost all at once.” ― David Hume

  • [^] # Re: Bravo

    Posté par  (site web personnel, Mastodon) . En réponse au lien De gauche, ils revoteront Macron. Évalué à -5.

    Est-ce une façon de parler de son monarc ? Honnêtement, que veux-tu que les gens votent d'autres quand ce n'est « ni ceci ni cela et en même temps tout et son contraire » ?

    “It is seldom that liberty of any kind is lost all at once.” ― David Hume

  • [^] # Re: De l'art du chipotage

    Posté par  (site web personnel, Mastodon) . En réponse au lien L’œuf ou la poule ? Lequel est arrivé en premier ?. Évalué à 1.

    Il te faut une force lunaire pour faire un effet de marrée
    ~~~>[]

    “It is seldom that liberty of any kind is lost all at once.” ― David Hume

  • # nous on a le droit, pas vous

    Posté par  (site web personnel, Mastodon) . En réponse au lien Un revendeur de logiciel espion plaide coupable aux États-Unis (payant 1 mois) . Évalué à 1.

    …parce-qu'on a décidé qu'il doit en être ainsi.

    “It is seldom that liberty of any kind is lost all at once.” ― David Hume

  • [^] # Re: Titre trompeur

    Posté par  (site web personnel, Mastodon) . En réponse au lien Sustainability with Rust. Évalué à 2. Dernière modification le 22 février 2022 à 21:21.

    Bonus : il boit la vie… :-D Quel charmant calmant Jeanne

    “It is seldom that liberty of any kind is lost all at once.” ― David Hume

  • [^] # Re: De l'art du chipotage

    Posté par  (site web personnel, Mastodon) . En réponse au lien L’œuf ou la poule ? Lequel est arrivé en premier ?. Évalué à 2. Dernière modification le 22 février 2022 à 19:55.

    Insensiblement… pour ne pas dire négligeable, puisque ça touchera un nano sans en toucher l'autre, comme on dit.

    “It is seldom that liberty of any kind is lost all at once.” ― David Hume

  • [^] # Re: Attendre un caractère après les deux points

    Posté par  (site web personnel, Mastodon) . En réponse au journal Voter pour virer les emojis de Gitlab. Évalué à 3.

    Il n'y a pas que le point-virgule que tu n'as pas compté ; j'ajouterai bien à la liste : le signe d'égalité (=), les guillemets droit double (") et simple ('), la barre oblique (/), le point d'exclamation (!), le double tiret (--) et les crochets droits ([]) je crois. Mais bon, ces symboles ne sont spéciaux qu'au second niveau…

    Non, l'espace n'est pas féminin en typographie ; c'est plutôt que l'espace de genre féminin est un terme (et le concept) typographique tandis qu'au masculin c'est un terme mathématique et astrophysique.

    Il est bon de chipoter parfois.

    “It is seldom that liberty of any kind is lost all at once.” ― David Hume

  • [^] # Re: Le code ?

    Posté par  (site web personnel, Mastodon) . En réponse au message renommage de fichiers en masse. Évalué à 2.

    Du coup on voit que tu utilises libiconv pour lequel tu as un wrapper intéressant ici : https://github.com/unnonouno/iconvpp Et sinon tu peux étudier l'exemple assez complet du site officiel : https://www.gnu.org/software/libc/manual/html_node/iconv-Examples.html

    “It is seldom that liberty of any kind is lost all at once.” ― David Hume

  • [^] # Re: Alternative déjà dispo

    Posté par  (site web personnel, Mastodon) . En réponse au message renommage de fichiers en masse. Évalué à 2.

    C'est bien un exercice (ou alors la personne se fait plaisir dans son apprentissage de C++) …et il semble que ça fait appel à iconv qui bien aussi (et parfois mieux.)

    “It is seldom that liberty of any kind is lost all at once.” ― David Hume

  • [^] # Re: Titre trompeur

    Posté par  (site web personnel, Mastodon) . En réponse au lien Sustainability with Rust. Évalué à 2.

    Oui, hélas encore un titre trompeur/racoleur (rayer la mention inutile)

    “It is seldom that liberty of any kind is lost all at once.” ― David Hume

  • [^] # Re: J'adore le paragraphe sur les fondamentaux de l'édition de logiciels

    Posté par  (site web personnel, Mastodon) . En réponse au lien L'histoire de CATIA, racontée par son créateur. Évalué à 2.

    Je suis bien d'accord que « Si on ne fait qu’écouter le client » (sic) ça ne va pas aller, et c'est pourquoi j'ai écrit (un peu comme toi) que « le client n'écrit pas les spécifications technique » (désolé pour le S qui a pris la clé des champs.)
    Pour faire ce dont le client a besoin, il faut en effet écouter son besoin. Comme dit plus tôt par CrEv, il s'agit de faire « ensemble » ; d'où mon parallèle avec la médecine…
    (il semble que dans ma formulation non-et-oui on ne retient que le premier)

    “It is seldom that liberty of any kind is lost all at once.” ― David Hume

  • # other links in english

    Posté par  (site web personnel, Mastodon) . En réponse au lien Sven Guckes verstorben. Évalué à 2.

    J'ai eu l'info via un mail (plus précisément une liste de diffusion) dont le contenu peut être lu à l'adresse suivante :
    https://groups.google.com/d/msgid/vim_announce/20220221134844.047981C0FE0%40moolenaar.net.

    Ce message mentionne également le lien HN :
    https://news.ycombinator.com/item?id=30410077
    J'imagine qu'il y aura un fil sur SlashDot aussi…

    “It is seldom that liberty of any kind is lost all at once.” ― David Hume

  • # Cette Pub Utile

    Posté par  (site web personnel, Mastodon) . En réponse au lien combien de temps faut-il pour lire les CGU des principales apps ?. Évalué à 2.

    Pour en remettre une couche…
    https://linuxfr.org/users/dascritch/journaux/evolution-des-conditions-generales

    “It is seldom that liberty of any kind is lost all at once.” ― David Hume

  • # on en parle…

    Posté par  (site web personnel, Mastodon) . En réponse au journal Évolution des Conditions Générales. Évalué à 6.

    Je sais que vous êtes tous pleins à me moinsser quand je parle de mon émission de radio CPU

    Ah ? Je n'étais pas au courant de cette mode ; et moi qui te plusse (pour celles que j'ai écouter ensuite.)

    Quand j'avais enregistré la chronique originale en 2015, la longueur de ces pavés indigestes frisaient littéralement la logorrhée d'œuvres shakespeariennes. Ce qui m'a motivé de la rediffuser fut un autre banc-test de concours de longueur de pavé juridique effectué par la revue UFC Que Choisir dans leur numéro de Février.

    Il se trouve que la chose préoccupe un certain nombre de personnes ici, en tout cas les gens qui essaient de lire avant d'accepter. Cela a donné quelques journaux et liens comme :

    Corolaire : comment voir ce qui change et l'impact quand les CGU d'un service auquel on a souscrit évoluent ?

    Ce qui m'attriste, outre qu'il est plus rapide de lire lesdites CGU de SNCF Connect en 6 h 52 que de réserver son billet de train, c'est que l'éditeur de cette revue dit que pour lire leurs propres CGU « 23 mn 51 s suffisent ».

    Cordonniers (dénonciateurs) mal chaussés ou fainéants qui en ont pas fait assez ?
    En tout cas je suis d'accord qu'il y a comme « un méchant antiuser-pattern » à être fier de faire pire que d'autres.

    “It is seldom that liberty of any kind is lost all at once.” ― David Hume