Risultati
Ordinati per punteggio (alto → basso). Il verde indica qualità maggiore.
⚠️ Prototipo informativo. Verifica sempre ore, prezzi e condizioni sui siti ufficiali.
`;
// --- dati (17 provider) ---
const PROVIDERS = [
{ name:"Accademia del Test", url:"https://corsi.accademiadeltest.com/", offer:"MedStart (128h) + locali/online", hours:128, price:null, maxStudents:25, onDemand:true, micro:false, sims:5, freeSims:0, guaranteeLevel:0 },
{ name:"Alpha Test", url:"https://www.alphatest.it/", offer:"Manuali, simulatore, corsi online", hours:40, price:80, maxStudents:null, onDemand:true, micro:false, sims:10, freeSims:0, guaranteeLevel:0 },
{ name:"Cordua", url:"https://www.corduapreparazione.it/", offer:"Corsi specifici Medicina", hours:90, price:null, maxStudents:30, onDemand:true, micro:false, sims:6, freeSims:0, guaranteeLevel:0 },
{ name:"DispensoAcademy", url:"https://dispensoacademy.it/", offer:"Pacchetti teoria + simulazioni", hours:80, price:null, maxStudents:30, onDemand:true, micro:false, sims:12, freeSims:0, guaranteeLevel:0 },
{ name:"Dotto.me", url:"https://www.dotto.me/", offer:"Pacchetti semestre filtro", hours:70, price:null, maxStudents:25, onDemand:true, micro:false, sims:8, freeSims:0, guaranteeLevel:0 },
{ name:"Futura / Accademia dei Test", url:"https://futura.study/", offer:"Pre-semestre + tutor/mentor", hours:120, price:2000, maxStudents:20, onDemand:true, micro:false, sims:10, freeSims:0, guaranteeLevel:2 },
{ name:"MedCampus", url:"https://www.medcampus.it/", offer:"Micro-lezioni + coach", hours:60, price:null, maxStudents:10, onDemand:true, micro:true, sims:10, freeSims:0, guaranteeLevel:1 },
{ name:"MedicinaSemestreFiltro.it", url:"https://www.medicinasemestrefiltro.it/", offer:"108 lezioni da 25′ + 25 simulazioni", hours:45, price:1170, maxStudents:10, onDemand:true, micro:true, sims:25, freeSims:7, guaranteeLevel:2 },
{ name:"Studio Test Universitari", url:"https://www.studiotestuniversitari.it/", offer:"Corsi estivi/base (~180h)", hours:180, price:null, maxStudents:30, onDemand:false, micro:false, sims:8, freeSims:0, guaranteeLevel:0 },
{ name:"TeachCorner", url:"https://www.teachcorner.com/", offer:"3 live/sett + registrazioni", hours:90, price:null, maxStudents:30, onDemand:true, micro:false, sims:6, freeSims:0, guaranteeLevel:0 },
{ name:"Test Academy", url:"https://test.academy/", offer:"Core / Advanced", hours:120, price:1200, maxStudents:25, onDemand:true, micro:false, sims:10, freeSims:0, guaranteeLevel:1 },
{ name:"TestAmmissione.com", url:"https://www.testammissione.com/", offer:"Piattaforma + app simulazioni", hours:30, price:99, maxStudents:null, onDemand:true, micro:true, sims:15, freeSims:0, guaranteeLevel:0 },
{ name:"Testbusters", url:"https://www.testbusters.it/", offer:"Basic/Plus/Advanced (100–275h)", hours:200, price:549, maxStudents:40, onDemand:true, micro:false, sims:20, freeSims:0, guaranteeLevel:1 },
{ name:"UniD Formazione / UnidTest", url:"https://www.unidformazione.com/", offer:"MED 300/340/380/400", hours:320, price:3200, maxStudents:20, onDemand:true, micro:false, sims:15, freeSims:0, guaranteeLevel:1 },
{ name:"WAU (WAUniversity)", url:"https://wauniversity.com/", offer:"Pacchetti 120–168h", hours:150, price:990, maxStudents:30, onDemand:true, micro:false, sims:10, freeSims:0, guaranteeLevel:0 },
{ name:"Futura – Landing Med-LP", url:"https://med-lp.futura.study/", offer:"Variazione landing Futura", hours:120, price:2000, maxStudents:20, onDemand:true, micro:false, sims:10, freeSims:0, guaranteeLevel:2 },
{ name:"Test Academy (alt brand)", url:"https://www.test.academy/", offer:"Variante brand operativa", hours:120, price:1200, maxStudents:25, onDemand:true, micro:false, sims:10, freeSims:0, guaranteeLevel:1 }
];
// date appelli
const exams = [new Date("2025-11-20T00:00:00+01:00"), new Date("2025-12-10T00:00:00+01:00")];
function daysToNextExam(){
const now = new Date();
const diffs = exams.map(d => (d - now) / (1000*60*60*24)).filter(d=>d>=0);
if(!diffs.length) return 0;
return Math.ceil(Math.min(...diffs));
}
document.getElementById("msf-days").textContent = daysToNextExam();
function clamp01(x){ return Math.max(0, Math.min(1, x)); }
function score(p, w, ctx){
let s = 0;
// Flessibilità: on-demand + micro-lezioni
const shortLessons = p.micro ? 1 : 0.5;
const flexibility = ((p.onDemand?1:0) + shortLessons)/2;
s += w.flexibility*flexibility;
// Numero di studenti per classe (più basso è meglio)
let smallClassScore = 0.5;
if (p.maxStudents!==null){
if (p.maxStudents({...p, score:score(p,w,ctx)})).sort((a,b)=>b.score-a.score);
const res = document.getElementById("msf-results");
const maxScore = list.length ? list[0].score : 1;
const minScore = list.length ? list[list.length-1].score : 0;
const range = Math.max(0.0001, maxScore - minScore);
res.innerHTML = list.map((p,i)=>{
const norm = clamp01((p.score - minScore) / range);
const bg = greenBG(norm);
return `
${(p.score*100).toFixed(0)}/100
${p.offer}
${p.onDemand?'On-demand':''}
${p.micro?'Micro-lezioni':''}
${(p.maxStudents!==null)?'Max '+p.maxStudents+'':'Classe ND'}
${typeof p.hours==='number'?''+p.hours+'h totali':''}
${p.sims?''+p.sims+' simulazioni':''}
${p.freeSims?''+p.freeSims+' prove gratuite':''}
${p.guaranteeLevel>=2?'Ammesso o rimborsato':(p.guaranteeLevel>=1?'Ripreparato/condiz.':'')}
${p.price?'~€'+p.price+'':''}
`;
}).join("");
}
["msf-weeklyHours","msf-flexibility","msf-smallClass","msf-price","msf-guarantees","msf-simulations","msf-coaching","msf-hoursFit"]
.forEach(id => document.getElementById(id).addEventListener("input", render));
function init(){
document.getElementById("msf-days").textContent = daysToNextExam();
render();
}
init();
})();