[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