首先,我为我糟糕的英语感到抱歉,希望你能理解我的要求。
在我们学校,毕业生必须在最后一年为论文挑选一个题目。每个学生从一个学科领域挑选一位导师来帮助他们。
起始位置
我如何确保尽可能多的学生实现他们的第一个愿望?在剩下的学生中,尽可能多的人应该得到第二个愿望,其余的得到第三个愿望。
哪种编程语言最适合这个问题: PHP,Access,Excel?
到目前为止,我们用手工对愿望进行排序,这一过程需要几个小时。有时几天。
我们想要使这一过程自动化。非常感谢你的每一个想法,每一个方法,每一个暗示。
理想案例:我们有一份清单,上面列出了分配给他们的导师和学生。
示例:
先生
最美好的祝愿,保持健康!
发布于 2020-08-02 11:25:48
如果输入数组的格式正确..。
$preferencesOfStudents是学生,他们的优先老师是有序的。
function shuffle_assoc($list) {
if (!is_array($list)) return $list;
$keys = array_keys($list);
shuffle($keys);
$random = array();
foreach ($keys as $key) {
$random[$key] = $list[$key];
}
return $random;
}
$preferencesOfStudents = [
'students' => [
'Stacy' => ['Mr Jobs','Mr Gates','Mr Musk'],
'Carl' => ['Mr Jobs','Mr Gates','Mr Musk'],
'Melody' => ['Mr Jobs','Mr Musk','Mr Gates'],
'William' => ['Mr Musk','Mr Gates','Mr Jobs'],
'Eric' => ['Mr Gates','Mr Jobs','Mr Musk'],
'Charlott' => ['Mr Jobs','Mr Gates','Mr Musk'],
'Anthony' => ['Mr Gates','Mr Musk','Mr Jobs'],
'Sarah' => ['Mr Gates','Mr Jobs','Mr Musk'],
'Nelly' => ['Mr Gates','Mr Musk','Mr Jobs']
]
];
// 1 = Jobs, 2 = Gates, 3 = Musk
$teachers = [
'Mr Jobs' => [],
'Mr Gates' => [],
'Mr Musk' => []
];
$randomstudentsarray = shuffle_assoc($preferencesOfStudents['students']);
//print_r($randomstudentsarray);
foreach($randomstudentsarray as $name => $student){
if(count($teachers[$student[0]]) < 3){
$teachers[$student[0]][] = $name;
} elseif(count($teachers[$student[1]]) < 3) {
$teachers[$student[1]][] = $name;
} else {
$teachers[$student[2]][] = $name;
}
}
print_r($teachers);https://stackoverflow.com/questions/63214635
复制相似问题