pull/1/head
Jean-Christophe Jameux 4 years ago
parent 0fe5ed10b3
commit d7240509e3
  1. 13936
      CalculateurDeNotes.html
  2. 15132
      GenerateurDeProblemes.html
  3. 7427
      GenerateurDeQuestions.html
  4. BIN
      elm-stuff/0.19.1/CalculateurDeNotes.elmi
  5. BIN
      elm-stuff/0.19.1/CalculateurDeNotes.elmo
  6. BIN
      elm-stuff/0.19.1/GenerateurDeProblemes.elmi
  7. BIN
      elm-stuff/0.19.1/GenerateurDeProblemes.elmo
  8. BIN
      elm-stuff/0.19.1/d.dat
  9. 5233
      elm.js
  10. 1
      elm.min.js
  11. 0
      index.html
  12. 7360
      qcm.js
  13. 1
      qcm.min.js
  14. 1
      qcmUgly.js
  15. 155
      src/CalculateurDeNotes.elm
  16. 126
      src/GenerateurDeProblemes.elm

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

Binary file not shown.

5233
elm.js

File diff suppressed because it is too large Load Diff

1
elm.min.js vendored

File diff suppressed because one or more lines are too long

7360
qcm.js

File diff suppressed because it is too large Load Diff

1
qcm.min.js vendored

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

@ -178,7 +178,10 @@ view model =
, label = text "Calculer les notes" , label = text "Calculer les notes"
} }
--} --}
voirNotes model.eleves text
<| "Moyenne : " ++ String.fromFloat (moyenne model.eleves)
++ " Écart type : " ++ String.fromFloat (ecartType model.eleves)
, voirNotes model.eleves
] ]
] ]
@ -407,132 +410,26 @@ noteQuestion brm bonneRpn rpnEleve =
else else
brm.mauvaiseReponse brm.mauvaiseReponse
moyenne elvs =
let
moy nts = List.sum nts / toFloat (List.length nts)
in
List.map .note elvs
|> expurgerNotesManquantes
|> moy
monBareme = "+1 -1, +1 -1, +1 -1, +1 -1, +2 -1, +2 -1, +2 -1, +3 -1, +3 -1, +3 -1, +3 -1" ecartType elvs =
let
mesReonses = moy nts = List.sum nts / toFloat (List.length nts)
"""ABBACBBBCDB moyCarre = moy << List.map (\x -> x^2)
BABABCBDCAD ecTp nts = sqrt <| moyCarre nts - (moy nts)^2
ABAACCCBADD in
BAAAAACBADB List.map .note elvs
BAAACCBAAAC |> expurgerNotesManquantes
ABBAABACCAC |> ecTp
BBBAACCADAC
AAAACCBDBBB expurgerNotesManquantes nts =
BABACAADBDC case nts of
AAAAAACCDBD [] -> []
BBBABCBDDBC Nothing :: ntss -> expurgerNotesManquantes ntss
ABBABACCCDA Just nt :: ntss -> nt :: expurgerNotesManquantes ntss
AABAABCBCAD
BAAABACCCDB
BBAABCAACCC
BABABBCDCCA
AABACCBACDB
BBAAACAABBC
AAAACBBAAAA
AAAABCCDCCB
AABABCCBDAA
BBAACCCBADC
BBBABCBAABC
AAAABABCADB
ABBAAAADDAD
AAAAAABDDBA
BBAAAACCCDA
ABBACAABABD
BABACBCBABA
AAAABABBCCA
BBBAACAAABD
AAAACBAABBC
AABAACBCDCA
BBAABBCDBBC
ABAACCBBAAA
BAAACCAADCB
BBAAAACABAD
BAAABBCABDD
BBBAAABACCA
AABACCADBAC
BABABBBACCB
BAAACCBBABA
BBAAAACAADD
BAAAACBACAA
AAAAAACDBCD
AABABABCCDB
ABAAAAADBAC
ABAACAABABA
BABABBCDBBB
BBBABCBBDDD
BABABBCACBB
BABACCCABAB
ABAACCBAADB
AAAAABCBBCD
ABAACCBCCCD
BBBAAACBBCB
ABAAAAAADBC
AAAABBCDBCA
AABAABBABAC
ABBABBBBABD
BABAABAAADB
BABABBBDACA
BABABACDCDD
BBBACCCBAAB
ABAAABBBCDA
AAAABACBBBA
AABACBCBADA
BBAACCABCDA
BBBAABADADA
BBAACBBCDDD
BBAAACBCACC
BAAABBCDDDD
ABAABBCBBCA
BAAAAABCBCB
BBAAABCDDBB
ABAACAACBCC
AABACCABCCB
BAAACCADCBB
BBBAABCBDAD
BBAABBADCCB
ABAACABBCDC
BAAACACACCB
BBBACABDCDD
BBBAAACADAD
AAAAABADDAC
BBBAACCACBB
BBBABBABBDD
BABAACCADCD
ABBACBBACAC"""
mesEleves =
"""2000126;rayan;;B;B;A;B;B;-;B;D;A;D;-;;
2000224;selena;;B;B;A;A;B;-;C;B;B;-;-;;
2000527;maryam;;B;-;B;-;B;-;A;A;D;A;-;;
2000728;juliette;;A;-;-;-;A;C;A;D;C;C;-;;
2000829;ma?v?ne;;A;A;-;B;B;C;-;A;A;-;-;;
2000891;ma?v?ne;;B;B;B;B;C;A;C;B;C;D;C;;
2000948;mathilde;;B;B;A;B;C;B;A;-;-;-;-;;
2001047;lucille;;A;B;A;B;A;A;-;A;A;A;D;;
2001160;marie;;B;B;A;-;C;-;A;-;-;-;-;;
2001458;issra;;A;B;A;B;A;A;C;B;A;B;-;;
2001732;audrey;;B;B;A;A;C;C;C;-;-;-;-;;
2001834;emeric;;A;A;A;A;-;A;B;-;-;-;-;;
2001944;lamia;;A;B;B;A;A;B;A;D;C;A;C;;
2002030;adrien;;A;B;A;A;A;A;C;-;-;-;B;;
2002128;bettina;;B;B;A;A;A;C;C;A;B;-;-;;
2002333;samuel;;B;B;B;B;-;C;-;A;B;-;-;;
2002439;marl?ne;;B;B;A;A;A;B;C;B;A;B;D;;
2003684;vincent;;B;A;A;A;A;A;B;C;D;C;B;;
2000632;chiche;;B;B;A;B;A;C;C;B;A;-;-;;
2000334;BOUDRY;;A;B;A;A;-;-;A;C;-;-;-;;
2001641;GUERIN;;A;B;B;A;-;B;B;A;-;B;-;;
2002514;NGEUMELEU;;A;B;A;A;B;C;B;B;A;B;B;;
2002215;MEJJATI;;A;A;B;A;B;C;A;D;C;C;-;;
2002790;NICOISE;;A;B;A;A;A;B;B;A;A;A;A;;
2003293;SCHEPENS;;B;B;B;A;C;A;C;D;D;D;D;;
2000430;BOUHNIK;;A;A;B;A;B;C;B;D;C;-;-;;
2003392;SERGEANT;;B;A;A;A;C;A;A;-;-;-;-;;
2002986;PEREZ;;A;B;A;B;-;A;B;-;-;B;-;;
2003710;PERROT;;A;B;A;A;B;A;C;D;C;A;D;;
2003585;SUNNASSEE;;B;B;A;A;C;A;C;D;B;C;A;;
2003110;QIU;;B;A;A;A;C;A;C;A;B;C;A;;
2001356;ESTIVAL;;A;A;B;A;C;B;B;C;B;D;C;;
2001546;GRANDJEAN;;B;A;B;A;-;C;-;A;D;C;B;;
2001262;DUFRIEN;;B;A;-;A;-;C;-;B;C;-;D;;"""

@ -114,21 +114,29 @@ subscriptions model =
view : Model -> Html Msg view : Model -> Html Msg
view model = view model =
layout [] <| layout [] <|
column [height fill, width fill] row [spacing grandEspacement, padding tresGrandEspacement, height fill, width fill, clip, scrollbars]
[ Input.multiline [] [ Input.multiline [height <| maximum 800 fill, clip, scrollbars]
{ onChange = StructureDuSujet { onChange = StructureDuSujet
, label = Input.labelHidden "chose" , label = Input.labelHidden "chose"
, placeholder = Just <| Input.placeholder [] <| text "Structure du sujet" , placeholder = Just <| Input.placeholder [] <| text "Structure du sujet"
, text = model.structureDuSujet , text = model.structureDuSujet
, spellcheck = True , spellcheck = True
} }
, Input.button [] , column [spacing petitEspacement, height fill, width fill]
{ onPress = Just GenererSujet [ Input.button []
, label = text "Générer le sujet" { onPress = Just GenererSujet
} , label = text "Générer le sujet"
, text model.sujetGenere }
, el [height <| maximum 800 fill, clip, scrollbars] <| text model.sujetGenere
]
] ]
petitEspacement = 20
grandEspacement = 5*petitEspacement // 4
tresGrandEspacement = 25*petitEspacement // 16
{- {-
@ -488,12 +496,6 @@ blocAleatoire prblm =
vlr = valeurAleatoire "" ar.vals vlr = valeurAleatoire "" ar.vals
f sj vl = remplacerLaVariableDansLesBlocsAleatoires vrbl vl sj f sj vl = remplacerLaVariableDansLesBlocsAleatoires vrbl vl sj
in in
{--
Debug.log
( "blocAleatoire, branche VariableAremplacer, variable : "
++ vrbl ++ " "
) <|
--}
Random.andThen (f sjt) vlr Random.andThen (f sjt) vlr
Entete mcr sjt -> Entete mcr sjt ->
Random.map (L.singleton << Entete mcr) (blocsAleatoires sjt) Random.map (L.singleton << Entete mcr) (blocsAleatoires sjt)
@ -560,6 +562,104 @@ remplacerLaVariableParLaValeurDansLaProposition vrbl vlr prp =
Faux mcr -> Faux <| remplacerLaVariableParLaValeurDansLaMacro vrbl vlr mcr Faux mcr -> Faux <| remplacerLaVariableParLaValeurDansLaMacro vrbl vlr mcr
{-
-}
variantesBlocs : Blocs -> Blocs
variantesBlocs = L.concat << L.map variantesBloc
variantesBloc : Bloc -> Blocs
variantesBloc blcs =
case blcs of
Sujet blcss ->
L.singleton <| Sujet <| variantesBlocs blcss
VariableAremplacer ar blcss ->
remplacerLaVariableDansLesVariantesBlocs ar.var ar.vals blcss
Entete mcr blcss ->
case qcmsDepuisVraiFauxx mcr blcss of
Just qcms -> qcms
Nothing -> [ Entete ( Texte "Je ne peux pas prendre en charge une telle imbrication :(" ) [] ]
VraiFaux prps -> [ VraiFaux prps ]
QCM mcr prps -> [ QCM mcr prps ]
qcmsDepuisVraiFauxx : Macro -> Blocs -> Maybe Bloc
qcmsDepuisVraiFauxx mcr blcs =
let
recupererPropositionsDuVraiFaux blc =
case blc of
VraiFaux prps -> Just prps
_ -> Nothing
listeDePropositions listePartielle listeDeMaybePropositions =
case listeDeMaybePropositions of
[] -> Just <| List.reverse listePartielle
Nothing :: lstMbPrps -> Nothing
Just prps :: lstMbPrps -> listeDePropositions (prps :: listePartielle) lstMbPrps
in
recupererPropositionsDuVraiFaux blcs
|> listeDePropositions []
|> Maybe.map mix
|> Maybe.map ( List.map (QCM mcr) )
{-| mix [ [1,2] , [3,4] , [5,6] ] == [ [1,3,5] , [1,3,6] , [1,4,5] , [1,4,6] , [2,3,5] , ... ]
-}
mix : List (List a) -> List (List a)
mix lls =
case lls of
[] -> []
[] :: llss -> []
l :: [] -> List.map List.singleton l
(a :: ls) :: llss -> ( List.map ( (::) a ) ( mix llss ) ) ++ mix ( ls :: llss )
queDesVraiFaux = List.fold && True estUnVraiFaux
estUnVraiFaux blc =
case blc of
VraiFaux _ -> True
_ -> False
remplacerLaVariableDansLaVarianteBloc : String -> List String -> Bloc -> Blocs
remplacerLaVariableDansLaVarianteBloc vrbl vlrs blc =
case blc of
Sujet blcs ->
remplacerLaVariableDansLesVariantesBlocs vrbl vlr blcs
VariableAremplacer ar sjt ->
variantesBloc (VariableAremplacer ar sjt)
|> Random.andThen (remplacerLaVariableDansLesVariantesBlocs vrbl vlr)
Entete mcr sjt ->
Random.map L.singleton
<| Random.map2 Entete
( Random.constant <| remplacerLaVariableParLaValeurDansLaMacro vrbl vlr mcr )
( remplacerLaVariableDansLesVariantesBlocs vrbl vlr sjt )
QCM mcr prps ->
Random.map L.singleton
<| Random.map2 QCM
( Random.constant <| remplacerLaVariableParLaValeurDansLaMacro vrbl vlr mcr )
( Random.List.shuffle
<| L.map (remplacerLaVariableParLaValeurDansLaProposition vrbl vlr) prps
)
VraiFaux prps ->
Random.map
( L.singleton
<< VraiFaux
<< L.singleton
<< remplacerLaVariableParLaValeurDansLaProposition vrbl vlr
)
<| valeurVariante ( Vrai [ Texte "Le prof de maths est le meilleur." ] ) prps
remplacerLaVariableDansLesVariantesBlocs : String -> String -> Blocs -> Blocs
remplacerLaVariableDansLesVariantesBlocs vrbl vlr sjt =
L.concat <| L.map (remplacerLaVariableDansLaVarianteBloc vrbl vlr) sjt
{- {-

Loading…
Cancel
Save