Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
$test = new test();
$test->run();
class test
{
public $currentBookState = '01'; // Расположение книг первоначальное
public $order = array(1,2,1,1,3,4,5,1); // Очередность пускания Зеков к книгам
function run()
{
$zekMemory = array(); // память зека, какую комбинацию он увидел при входе
$zekBinMemory = array(); // сколько раз был у книг
foreach ($this->order as $zek) {
$zekBinMemory[$zek] = intval($zekBinMemory[$zek]) + 1;
if (isset($zekMemory[$zek]) // Если зек здесь был
&& $this->invertor($this->currentBookState) == $zekMemory[$zek] // если он видел эту комбинацию
&& $zekBinMemory[$zek] % 2 == 0 // И если это не он снова пришел (N-раз подряд)
) {
echo "Zek #{$zek}: We are free!!!\n";
break;
}
// Если мы в первый раз, то запоминаем комбинацию книг
if (!isset($zekMemory[$zek])) {
echo "Zek #{$zek}: I'm here at first time; I see: {$this->currentBookState}, I made: " .$this->invertor($this->currentBookState). " \n";
$zekMemory[$zek] = $this->currentBookState;
$this->currentBookState = $this->invertor($this->currentBookState);
} else {
echo "Zek #{$zek}: I'm here was {$zekBinMemory[$zek]} times; I see: {$this->currentBookState}, I made: " .$this->invertor($this->currentBookState). " \n";
$this->currentBookState = $this->invertor($this->currentBookState);
}
}
}
/**
* Простеццкий инвертор
*/
function invertor($val)
{
switch ($val) {
case '00':
return '01';
case '01':
return '11';
case '11':
return '10';
case '10':
return '00';
}
}
}
?>
ttimВыбирать заключенных я буду как мне хочется: например, сегодня первого три раза свожу, а завтра всех по очереди, а послезавтра обойдетесь.
Рано или поздно каждый из вас побывает в Ленинской комнате
Здравый смысл оставим в стороне, согласитесь, что он к этой задаче ни какого отношения не имеет.
Маркс и Энгельс