Простой подход заключается в использовании программного обеспечения для работы с электронными таблицами (например, oocalc).Составьте по одной строке на каждого учащегося и одну колонку на курс;поместите 1 (или другую непустую метку) в соответствующие ячейки и используйте функцию суммы (диапазона) для подсчета количества меток в каждом столбце.
Обновление : в приведенном выше подходе один вручнуювводит матрицу заболеваемости;что я ранее предполагал, что вы хотели создать.Тем не менее, вы можете подразумевать что-то еще под «матрицей совместного вхождения».В любом случае, программы на таких языках, как Python, Perl, Awk, Ruby, займут всего несколько строк для вывода матрицы инцидентности из данных в показанной форме.Например, длинная программа на Perl, приведенная ниже, может быть адаптирована для печати матрицы вместо таблицы:
#!/usr/bin/perl
for (<>) { # Read all data lines
++$i; # compute student #
chomp $_; # Remove newlines
@s = split (/ */);
foreach (@s) { # Add student to each course
$c{$_} .= " $i"
}
}
foreach $course (sort keys %c) {
print "Course $course : $c{$course}\n"
}
__END__
Как есть, из предоставленной вами выборки данных она выдает следующие данные:
Course 411 : 6 7 9 11
Course 421 : 1 5 7 9
Course 422 : 11
Course 519 : 5
Course 528 : 2 10
Course 531 : 1
Course 532 : 3
Course 540 : 1 6 9 11
...
Course 582 : 1
Course IT : 1 2 3 5 6 7 9 10 11
при передаче данных через стандартный ввод.