From 32bc802fd01c3a7d8b5f4a8565629a5d68620c48 Mon Sep 17 00:00:00 2001 From: Jean-Christophe Jameux Date: Sun, 17 Oct 2021 18:07:06 +0200 Subject: [PATCH] Fonctionel !!! --- elm-stuff/0.19.1/ParserMaths.elmi | Bin 1852 -> 2210 bytes elm-stuff/0.19.1/ParserMaths.elmo | Bin 14102 -> 14447 bytes elm-stuff/0.19.1/QCM.elmi | Bin 11014 -> 10305 bytes elm-stuff/0.19.1/QCM.elmo | Bin 72020 -> 72665 bytes elm-stuff/0.19.1/d.dat | Bin 1873 -> 1873 bytes src/ParserMaths.elm | 26 +++++++++++++++++++++-- src/QCM.elm | 34 +++++++++++------------------- 7 files changed, 36 insertions(+), 24 deletions(-) diff --git a/elm-stuff/0.19.1/ParserMaths.elmi b/elm-stuff/0.19.1/ParserMaths.elmi index af18370f5a3911a86d0873011b05580537ac899a..64af869e056f188b474993372b9061de73c49df4 100644 GIT binary patch delta 155 zcmdnPw@7e;7$fUM@eSNusbz^drKv?unZ*<3wI;@A7_y{R6cjN)0V{KAPA*$PVo`Bw z5nBK<1y#Vvm^e9+MbVm(3rQtEM5Uf%N?BrFa%u`xCp$<9OLBfuDw|Vcab|Kct6yqa RYSH94Mrn{48;_T=0RU-3EyVx; delta 16 XcmZ1^xQB0o7$fsU@eP}GnM&CJEOrFl diff --git a/elm-stuff/0.19.1/ParserMaths.elmo b/elm-stuff/0.19.1/ParserMaths.elmo index dffa50eeaf079293b494d66507b6ba4239761673..f456104f322fd2e2e70c963f3c3a17a78247027a 100644 GIT binary patch delta 166 zcmbQ1_r8FW0Sc5SU(}S}s3ESa&Xro0m{Xcsa`!oVQJm!-_1Sz|!I_1TX>*ju8YTcbA`RjI delta 603 zcmX>Y&=xj9jM03f_z{K8fr`#7PRuN>6$M2MP{7EXSDFiD^RPPS=M|U0q+lvwG*~Hf zSYpxSx2guBECKmBl~5@rn3Bl?k}^sVbwEp?qRcQ^7|k*HqNK1I*co88Og?!~DHfO# z7!6jcj!?=RoC#CQ3R454G1NNe7enRPU}|7ASgi)aT$X^M{1m7pJCug`iV3Wk8=)9O zb6{ycEYvuN(v0FGc=&S?r5D-NE}3a*P)%G!Y1Tyef;Aw&JQbD>xUuS%K&VDZCk&gX Is;*%I0NveSga7~l diff --git a/elm-stuff/0.19.1/QCM.elmo b/elm-stuff/0.19.1/QCM.elmo index 3143c2437ea393764e69662b05cc748e1dfaa031..4eb00164518351066e1b3783ea3ee2d54a5f9e2d 100644 GIT binary patch delta 1748 zcmb_dYiv_>6z8QUECWX(O}%zaN;~dtXZfIM zg{aFGMt5SaOw-J7j1R=_A5xQYN3`j0Sgqp-vv{7OKr)#229j({K{!W$i*E4K(`YEx3?X zlMm!6LzQk*@h5{A;J%$U3^7`*q*FjlNKnv#Z})0&p@UYbeBmP_VV)JdG}H(SHqZ+{ z*q~0YVMo2eD9d#Rcm*888-G~vx|PP)Ef&l&EhNjdLBUW#v9S>j-?PTRjE`N}fkE4& zM!MU}2YkGQ-6yQrpjNv9vY-%MofaF;+4c(=Gw6`1_F;I@P)G!?F|{OFU8BY9I}9eH zoj7y83U4><7v)E$mbI8_4v69|vbW_Wc|mZ-t>oLSdO(ksA<%Z75=|1~+le8MigZ13 z4kTaP-ZNWr^*Gm61tGmsiw^f@a=J@az(QziCLiyfx@WvIGBWe@AT5Cshr79$+`j%j zQVtuFdqK*JtdFXS2DzGWTkNEiBzl}j@xtMGbPW#W-XP9!4-n(PHic-=gX7O##l)}$ zWo^|sJ~SXAZjACUes}1>dx}IZ9R8|Ug)`oRH~r-ZH;3;Q;Xl`LA4L{9qf~hhc0|gd zI->t`C|u-x_{qU0bnp}!{k6D*Z^EArK9g?^amMSR)W=AI%df5hPYo+@X}O&=z1j*D z8hq_|xf=n=6pk(@i)!5q_mUE8BGb9tX6PBH zYr~HTiIn-;^!W2HPl`~vPU&#$*OyBWxxu9f`R$xU6)QP$yR$rFLQhfe^l{u%glQ5H3wBg|`3<%A%eX(g1ZhOPSTBvxmuEOXZQhp@SN9xzxgt z2{bjdoDCkKd|{5I`T~4J%?CpMAR7sX@Zwer>c^DW+GQ@7s>J)P!d3tM!m}#S{Qbrr zkU^`kU@v7dngp}1*$MTutoS@m-_~ZMLeH}%6w!3f1!by#~E-d0E7uUxN^^; M9XdcJtl8nfpF%&mJ^%m! delta 1782 zcmcIkUrbYH6!)~Z1$x_pxA%gsD#EZ#Es_`=peB`65QDg)VM8}T5>bgjwUoggaIM6E z{~GZ;TsN)yVq%OYwx6zhkdV43!a`!=rX$h%pwSmZBl_asdu{J`d!vbF%ldHJ^ZT9e z{C?-$@ARJ-b2G{uTL&I&Il>P$H5d(UZ)cYu_d$_G@Ah`-W+XpGjDS6tS<|*-hXR>W zln(2SHjBQhcaOs8|2RTE36q$AFI~9VFiJ^xfE93FD|D>Qg8O<|zygjWx1!HM( zsNe;U&%0e=GAL6J<;7K2$dt|IGWFeFzmk(lbKYCq)J7c`WGz9zsk=kT%~Ep38%CIo z=jFz~ZJ|bhMBsWh2FCcItt?jB1YBvGO}24$Ahxi;qa`;BBU~Q(syOku83b@*f-A@R zBAbY2;H7Zf)(hDfapdCY+id*u?|In6S75f#EKZn#75}sVhX;iQ@={pF;=O4DmO8R9 z?kdOpFpCEYHc~7Yc4J9l8;#?xuSue?M^Ay^A%X03SV1gi!GV1%SaQAiIHS_xay;W) zr^F=gngk`lcx8hAmg?Y!roE)XU8ckNWtVVn^*P*AwU|s+F9HczjFZ(t@_IR=k;bXo zV&bXLCFM!qitvAu4rQkMAyc&rQ+?$OGGuLCiE2Hl?Ms@S3omy6K#xmvLeD@gp89c^ zVseY6^`Z2bjPEWtlDUmJX_XJTv48VKa-M@*8r1ZUN|xZ0?@MXU=gMwqYEEy}jryG_ z#mrrwQv5ef)?`qNL8-s?u9Vtd|No(O(uje^N*r(H@S1OnM)|LwQ_2$oAG(?iVzUVZ zob$Yp91VU28U$bLk7xk$s6Su5eex!F1{P?~klzM>Pk)uu7>F7~CkqAS?BRndlU%iL zRBPe5R_bvS~ZllA&f-{okwd=ce(S0l-KWF-3C z=hwp9p$m9LC&*eLscUy5<~4M+H~2Q#VUhX!l#@g2>45zpFLJmcm_XJVF> zo|Mf_)f&l_NoQ)y*{Ptq<;lVpy#H*CdL&$hf$2UvQ8MRwrBP+2f2;#9%Tk*ix@96y zUwO>2Iu_1l;39_=B}MTI8_WVT-e_=$!#3zu4##SE*a List DeadEnd -> String montrerErreurs source errs = case List.head errs of @@ -32,6 +33,11 @@ displayExpected err = _ -> "une expression" +evaluerBis : Expr -> F.Frac +evaluerBis expression = + case evaluer expression of + Nothing -> Frac 666 1 + Just a -> a evaluer : Expr -> Maybe F.Frac evaluer expression = @@ -65,6 +71,22 @@ evaluer expression = Poly a_i x -> Just <| F.Frac 50 1 +{-- +type Expr + = Const Fraction + | Var String + | Poly (List Fraction) String + | Exp Expr + | Ln Expr + | Sin Expr + | Cos Expr + | Prod Expr Expr + | Div Expr Expr + | Sum Expr Expr + | Dif Expr Expr + | Exp Expr Frac + | Opp Expr +--} type Expr = Add Expr Expr diff --git a/src/QCM.elm b/src/QCM.elm index 2b28487..7996dcf 100644 --- a/src/QCM.elm +++ b/src/QCM.elm @@ -7,7 +7,7 @@ import Set import ParserMaths as PM import String as S import Fractions as F exposing (Frac) -import Html exposing (Html, Attribute, button, div, textarea, input, text, p, iframe) +import Html exposing (Html, Attribute, button, div, textarea, input, p, iframe) import Html.Attributes exposing (..) import Html.Events exposing (onInput, onClick) @@ -84,6 +84,7 @@ view model = <| textarea [ placeholder "Liste des variables", value model.variables, onInput Variables ] [] :: textarea [ placeholder "Format de la question", value model.question, onInput Question ] [] :: button [ onClick GenererQuestion ] [ text "Générer les questions" ] + :: (text "Le résultat apparaitra\nici") :: [ ( p [] <| L.map (\q -> p [] [text q]) model.questions ) ] {-- :: text @@ -143,6 +144,12 @@ mix lls = (a :: ls) :: llss -> ( List.map ( (::) a ) ( mix llss ) ) ++ mix ( ls :: llss ) -} +text chaine = + S.lines chaine + |> L.map (p [] << L.singleton << Html.text) + |> p [] + + {- ██████ █████ ██████ ███████ ███████ ██████ ██████ ██████ ███ ███ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ████ ████ @@ -229,7 +236,7 @@ parserAremplacer variables = aRemplacer : Parser Aremplacer aRemplacer = - succeed Aremplacer + succeed ( \x y -> Aremplacer x (L.map (F.teX << PM.evaluerBis) y) ) |. P.spaces |= P.variable { start = \_ -> True @@ -243,11 +250,14 @@ aRemplacer = , separator = "," , end = "" , spaces = spaces + , item = PM.expr + {-- , item = P.variable { start = (/=) ',' , inner = (/=) ',' , reserved = Set.fromList [] } + --} , trailing = P.Optional } @@ -312,23 +322,6 @@ remplacerLaVariableParLaValeurDansLeTexteVariable var val tv = -} -type Nombre - = - -type Expr num - = Const num - | Var String - | Poly ( List num ) - | Exp ( Expr num ) - | Ln ( Expr num ) - | Sin ( Expr num ) - | Cos ( Expr num ) - | Prod ( Expr num ) ( Expr num ) - | Quot ( Expr num ) ( Expr num ) - | Sum ( Expr num ) ( Expr num ) - | Diff ( Expr num ) ( Expr num ) - | Power ( Expr num ) num - monome a n = if a == 0 then "" else if n == 0 then ( String.fromInt a ) @@ -385,15 +378,12 @@ dlGen a_ks n = {- - ██████ ██████ ███ ███ ██ ██ ██ ████ ████ ██ ██ ██ ██ ████ ██ ██ ▄▄ ██ ██ ██ ██ ██ ██████ ██████ ██ ██ ▀▀ - - -}