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"
}
--}
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
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"
mesReonses =
"""ABBACBBBCDB
BABABCBDCAD
ABAACCCBADD
BAAAAACBADB
BAAACCBAAAC
ABBAABACCAC
BBBAACCADAC
AAAACCBDBBB
BABACAADBDC
AAAAAACCDBD
BBBABCBDDBC
ABBABACCCDA
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;;"""
ecartType elvs =
let
moy nts = List.sum nts / toFloat (List.length nts)
moyCarre = moy << List.map (\x -> x^2)
ecTp nts = sqrt <| moyCarre nts - (moy nts)^2
in
List.map .note elvs
|> expurgerNotesManquantes
|> ecTp
expurgerNotesManquantes nts =
case nts of
[] -> []
Nothing :: ntss -> expurgerNotesManquantes ntss
Just nt :: ntss -> nt :: expurgerNotesManquantes ntss

@ -114,21 +114,29 @@ subscriptions model =
view : Model -> Html Msg
view model =
layout [] <|
column [height fill, width fill]
[ Input.multiline []
row [spacing grandEspacement, padding tresGrandEspacement, height fill, width fill, clip, scrollbars]
[ Input.multiline [height <| maximum 800 fill, clip, scrollbars]
{ onChange = StructureDuSujet
, label = Input.labelHidden "chose"
, placeholder = Just <| Input.placeholder [] <| text "Structure du sujet"
, text = model.structureDuSujet
, spellcheck = True
}
, Input.button []
{ onPress = Just GenererSujet
, label = text "Générer le sujet"
}
, text model.sujetGenere
, column [spacing petitEspacement, height fill, width fill]
[ Input.button []
{ onPress = Just GenererSujet
, label = text "Générer le sujet"
}
, 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
f sj vl = remplacerLaVariableDansLesBlocsAleatoires vrbl vl sj
in
{--
Debug.log
( "blocAleatoire, branche VariableAremplacer, variable : "
++ vrbl ++ " "
) <|
--}
Random.andThen (f sjt) vlr
Entete mcr sjt ->
Random.map (L.singleton << Entete mcr) (blocsAleatoires sjt)
@ -560,6 +562,104 @@ remplacerLaVariableParLaValeurDansLaProposition vrbl vlr prp =
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