[Linuxcourse] Расписание семинара
Dmitry Irtegov
fat at nsu.ru
Fri Oct 13 14:27:33 NOVST 2006
Господа и дамы!
Тут меня народ уже замучил вопросами о том, когда будет расписание.
И некоторые не получали вообще никаких подтверждений, например
vivat at gorodok.net
Скрипт для "составления" расписания в аттаче, но он, зараза, сильно
чувствительный к формату входных данных.
И вопрос - мы завтра собираемся? Если да, я предпочел бы в районе 12:30.
P.S. Дядька, который приходил последним (Королев, korol at ngs.ru) - он не
студент а сисадмин в каком-то из терминальных классов лабкорпуса, я
думаю все-таки его стоило бы взять, хотя бы слушателем, несмотря на
плачевные результаты тестирования. И еще я хотел бы попросить за Семена
Факторовича, он из нашей лаборатории и вообще-то умный...
-------------- next part --------------
#!/usr/bin/perl
# parse file
$i=0;
@dayname=("Понедельник", "Вторник", "Среда", "Четверг", "Пятница", "Суббота");
my (%schedule);
while(<>) {
#parse name
$name=$_;
$name =~ s/^\s+//;
$name =~ s/\s+$//;
$name =~ s/\r$//;
$name =~ s/\s+$//;
$nameindex{$name} = $i;
#parse days
$daysched="";
for ($j=0; $j<6; $j++) {
$line=<>;
($head, $rest) = split(' ', $line);
die "syntax error, wrong day name $head" unless $head==$dayname[j];
$rest =~ s/^\s+//;
$rest =~ s/\s+$//;
next if $rest=="";
$rest=~ s/9:00-10:45/9:00,10:45/;
$rest=~ s/9:00-/9:00,10:45-/;
$rest=~ s/10:45-12:30/10:45,12:30/;
$rest=~ s/10:45-/10:45,12:30-/;
$rest=~ s/12:30-14:15/12:30,14:15/;
$rest=~ s/12:30-/12:30,14:15-/;
$rest=~ s/14:15-16:00/14:15,16:00/;
$rest=~ s/14:15-/14:15,16:00-/;
$rest=~ s/16:00-17:45/16:00,17:45/;
$rest=~ s/16:00-19:20/16:00,17:45,19:20/;
$rest=~ s/16:00-/16:00,17:45-/;
$rest=~ s/17:45-19:20/17:45,19:20/;
# print $j.$rest."\n";
for my $pair (split(/,/,$rest)) {
$daysched.=$j.':'.$pair.' ';
}
# print $daysched."\n";
}
$schedule{$name}=$daysched;
}
#for my $name (keys(%schedule)) {
# print "$name schedule is $schedule{$name}\n";
#}
#die "Debug\n";
for($i=0; $i<6; $i++) {
for my $pair ("9:00", "10:45", "12:30", "14:15", "16:00", "17:45", "19:20") {
$count=0;
$testpair=$i.':'.$pair;
$cannotattend="";
for my $name (keys(%schedule)) {
if (index($schedule{$name},$testpair)<0) {
$count++;
$cannotattend.=" $name";
}
}
print "$count people cannot attend at $dayname[$i], $pair: $cannotattend\n";
}
}
More information about the Linuxcourse
mailing list