type Тележка chan Человек
тележки := make(chan Тележка,N)
for i:=0;i<N; i++ {
тележки <- make(chan Человек,P)
}
//очередь так сказать с запасом, всё равно больше чем P*N человек на аттракцион не влезет
людиВходящие := make(chan Человек,P*N)
людиВыходящие := make(chan Тележка,P*N)
go func() {
//ждем телегу, рассовываем по ней людей
//не стоять же им в очереди, пусть сразу в телегу садятся, если место есть =)
свободнаяТелега := <-тележки
for len(свободнаяТелега)!=cap(свободнаяТелега) {
свободнаяТелега <- <- людиВходящие
}
time.Sleep(T) //WHEEEE
for довольныйЧеловек := range свободнаяТелега {
людиВыходящие <- довольныйЧеловек
}
тележки <- свободнаяТелега
}()
Довольно близко к тому, что просят в задании.