• [^] # 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