Bon, premièrement, si vous savez pas ce que c'est une médiane ou un Quartile, je vous redirige ici : [Contenu masqué]
Bref, voici le petit code que j'ai fait quand j'me faisais chier hehe.
[spoiler=La fonction]
function Mediane(type: text, t: text, p: player) :: text:
set {_test::*} to {_t} split at ","
set {_size} to (size of {_test::*})
loop {_size} times: #Vérification si la liste n'est faite que de nombres
set {_test::%loop-value%} to "%{_test::%loop-value%}%" parsed as number
if ({_test::%loop-value%} + 1) = 1:
send "&cDésolé mais vous devez mettre des nombres." to {_p}
stop
set {_nbreloop} to 0
loop ({_size}-1) times: #Vérification si la liste est croissante
set {_nbreloop2} to (loop-value + 1)
set {_number1} to "%{_test::%{_nbreloop}%}%" parsed as number
set {_number2} to "%{_test::%{_nbreloop2}%}%" parsed as number
if {_number1} > {_number2}:
send "&cVeuillez mettre une liste croissante!" to {_p}
stop
if "%{_type}%" is "Me":
set {_sizetxt} to "%{_size}/2%"
set {_nbreobj::*} to {_sizetxt} split at "."
if (size of {_nbreobj::*}) = 2:
set {_nbreobj::1} to "%{_nbreobj::1}%" parsed as integer
set {_recupobj} to ({_nbreobj::1}+1)
set {_t} to "%{_test::%{_recupobj}%}%"
else:
set {_sizetxt} to "%{_sizetxt}%" parsed as integer
set {_nbre2} to ({_sizetxt}+1)
set {_sizetxt} to "%{_test::%{_sizetxt}%}%" parsed as number
set {_nbre2} to "%{_test::%{_nbre2}%}%" parsed as number
set {_t} to (({_sizetxt}+{_nbre2})/2)
send "&cLa médiane est %{_t}%" to {_p}
else if "%{_type}%" is "Q1":
set {_sizetxt} to "%{_size}/4%"
set {_nbreobj::*} to {_sizetxt} split at "."
if (size of {_nbreobj::*}) = 2:
set {_sizetxt} to "%{_sizetxt}%" parsed as number
set {_nbreobj::1} to "%{_nbreobj::1}%" parsed as number
set {_sizetxt} to ({_nbreobj::1}+1)
set {_t} to "%{_test::%{_sizetxt}%}%"
else:
set {_t} to "%{_test::%{_sizetxt}%}%"
send "&cLe premier quartile est %{_t}%" to {_p}
else if "%{_type}%" is "Q3":
set {_sizetxt} to "%{_size}*(3/4)%"
set {_nbreobj::*} to {_sizetxt} split at "."
if (size of {_nbreobj::*}) = 2:
set {_sizetxt} to "%{_sizetxt}%" parsed as number
set {_nbreobj::1} to "%{_nbreobj::1}%" parsed as number
set {_sizetxt} to ({_nbreobj::1}+1)
set {_t} to "%{_test::%{_sizetxt}%}%"
else:
set {_t} to "%{_test::%{_sizetxt}%}%"
send "&cLe premier quartile est %{_t}%" to {_p}
set {_p} to "%{_p}'s UUID%"
delete {test.%{_p}%}
Bon, le code est pas si sorcier que ça, donc j'pense pas j'ai besoin de l'expliquer.
Bref, là, vous vous demandez surement, mais comment on l'utilise?
Voici un Skript bidon pour avoir un exemple de comment l'utiliser
[spoiler=Le skript Bidon]
command /test:
trigger:
if "%{test.%player's UUID%}%" is "<none>":
set {test.%player's UUID%} to "true"
stop
else:
delete {test.%player's UUID%}
send "%{test.%player's UUID%}%"
command /trolol:
trigger:
send "%{test.%player's UUID%}%"
send "%{List::%sender's UUID%::*}%"
delete {List::%sender's UUID%::*}
on chat:
if "%{test.%sender's UUID%}%" is "true":
set {_msg} to message
set {List::%sender's UUID%::*} to {_msg} split at ";"
cancel event
loop (size of {List::%sender's UUID%::*}) times:
add 1 to {_nbreloop}
set {List::%sender's UUID%::%{_nbreloop}%} to "%{List::%sender's UUID%::%{_nbreloop}%}%" parsed as integer
if ({List::%sender's UUID%::%{_nbreloop}%} + 1) = 1:
send "&cDésolé mais vous devez mettre des nombres."
stop
send "&cVeuillez désormais entrer &a""Me""&c, &a""Q1""&c ou &a""Q3""&c."
send "&cMe = Médiane"
send "&cQ1 = Quartile n°1 (environ 25%% des valeurs de la liste seront inférieures à cette valeur.)"
send "&cQ3 = Quartile n°3 (environ 75%% des valeurs de la liste seront inférieures à cette valeur.)"
set {test.%sender's UUID%} to "Choisir"
stop
if "%{test.%sender's UUID%}%" is "Choisir":
cancel event
if "%message%" is "Me":
set {_test} to "%{List::%sender's UUID%::*}%"
replace all " " in {_test} with ""
replace all "and" in {_test} with ","
send "&aCalcul de la Médiane en cours..."
Mediane("Me", "%{_test}%", player)
delete {test.%sender's UUID%}
delete {List::%sender's UUID%::*}
else if "%message%" is "Q1":
set {_test} to "%{List::%sender's UUID%::*}%"
replace all " " in {_test} with ""
replace all "and" in {_test} with ","
send "&aCalcul du 1er Quartile en cours..."
Mediane("Q1", "%{_test}%", player)
delete {test.%sender's UUID%}
delete {List::%sender's UUID%::*}
else if "%message%" is "Q3":
set {_test} to "%{List::%sender's UUID%::*}%"
replace all " " in {_test} with ""
replace all "and" in {_test} with ","
send "&aCalcul du 3e Quartile en cours..."
Mediane("Q3", "%{_test}%", player)
delete {test.%sender's UUID%}
delete {List::%sender's UUID%::*}
else:
send "&cVeuillez écrire &a""Me""&c, &a""Q1""&c ou &a""Q3""&c."
send "&cMe = Médiane"
send "&cQ1 = Quartile n°1 (environ 25%% des valeurs de la liste seront inférieures à cette valeur.)"
send "&cQ3 = Quartile n°3 (environ 75%%des valeurs de la liste seront inférieures à cette valeur.)"
function Mediane(type: text, t: text, p: player) :: text:
set {_test::*} to {_t} split at ","
set {_size} to (size of {_test::*})
loop {_size} times: #Vérification si la liste n'est faite que de nombres
set {_test::%loop-value%} to "%{_test::%loop-value%}%" parsed as number
if ({_test::%loop-value%} + 1) = 1:
send "&cDésolé mais vous devez mettre des nombres." to {_p}
stop
set {_nbreloop} to 0
loop ({_size}-1) times: #Vérification si la liste est croissante
set {_nbreloop2} to (loop-value + 1)
set {_number1} to "%{_test::%{_nbreloop}%}%" parsed as number
set {_number2} to "%{_test::%{_nbreloop2}%}%" parsed as number
if {_number1} > {_number2}:
send "&cVeuillez mettre une liste croissante!" to {_p}
stop
if "%{_type}%" is "Me":
set {_sizetxt} to "%{_size}/2%"
set {_nbreobj::*} to {_sizetxt} split at "."
if (size of {_nbreobj::*}) = 2:
set {_nbreobj::1} to "%{_nbreobj::1}%" parsed as integer
set {_recupobj} to ({_nbreobj::1}+1)
set {_t} to "%{_test::%{_recupobj}%}%"
else:
set {_sizetxt} to "%{_sizetxt}%" parsed as integer
set {_nbre2} to ({_sizetxt}+1)
set {_sizetxt} to "%{_test::%{_sizetxt}%}%" parsed as number
set {_nbre2} to "%{_test::%{_nbre2}%}%" parsed as number
set {_t} to (({_sizetxt}+{_nbre2})/2)
send "&cLa médiane est %{_t}%" to {_p}
else if "%{_type}%" is "Q1":
set {_sizetxt} to "%{_size}/4%"
set {_nbreobj::*} to {_sizetxt} split at "."
if (size of {_nbreobj::*}) = 2:
set {_sizetxt} to "%{_sizetxt}%" parsed as number
set {_nbreobj::1} to "%{_nbreobj::1}%" parsed as number
set {_sizetxt} to ({_nbreobj::1}+1)
set {_t} to "%{_test::%{_sizetxt}%}%"
else:
set {_t} to "%{_test::%{_sizetxt}%}%"
send "&cLe premier quartile est %{_t}%" to {_p}
else if "%{_type}%" is "Q3":
set {_sizetxt} to "%{_size}*(3/4)%"
set {_nbreobj::*} to {_sizetxt} split at "."
if (size of {_nbreobj::*}) = 2:
set {_sizetxt} to "%{_sizetxt}%" parsed as number
set {_nbreobj::1} to "%{_nbreobj::1}%" parsed as number
set {_sizetxt} to ({_nbreobj::1}+1)
set {_t} to "%{_test::%{_sizetxt}%}%"
else:
set {_t} to "%{_test::%{_sizetxt}%}%"
send "&cLe premier quartile est %{_t}%" to {_p}
set {_p} to "%{_p}'s UUID%"
delete {test.%{_p}%}
PS: Le code n'est pas parfait et pas optimisé, donc si vous avez des remarques à me faire, n'hésitez pas (Par contre, les remarques sur le Skript bidon, ça sert à rien vu que ce skript en lui même sert à rien et n'est qu'un exemple)