собственно вот мое решение предыдущей задачи, модифицированное для новых условий
зэки нумеруются от 1 до 100. дни тоже нумеруются от 1 до 100 и циклически повторяются.
условимся, что «лампочка горит в день номер X» => «все зэки с номерами 1..X уже побывали в камере».
каждый зэк помнит максимальный номер дня, когда он видел лампочку включенной. изначально у всех зеков z(n) = 0
соответственно, если зэк с номером Z попадает в камеру в день D, то алгоритм его действий таков:
если лампочка горит (значит зеки 1..D-1 уже побывали в камере)
{
если z(Z) > D (зек видел лампочку включенной в более поздний день), то оставляет ее гореть
если Z == D (зек попал в камеру в «свой» день), то тоже оставляем лампочку гореть
если z(Z) < D то обновляем свое знание z(Z) = D и выключаем лампочку (зек запоминает, что видел в этот день лампочку включенной)
}
если лампочка не горит, то зек включает ее, если:
а) если он уже видел ее включенную в этот день (z(Z) >= D)
или
б) он видел ее включенной в предыдущий день и сегодня его день (z(Z) >= D — 1 && Z == D)
таким образом если вдруг зек 100 в день номер 100 попадет в камеру и застанет лампочку горящей, то он может утверждать что все тут уже побывали (#100 может смело говорить «да»). он оставляет лампочку включенной. после этого события все зеки, которые застанут лампочку горящей в день номер 1, смогут говорить «да» (и к тому же в дальнейшем включать лампочку в любой день).
уточнеие: зек может включить лампочку, если видел ее в предыдущий день включенной и его номер совпадает с номером текущего дня.
первый раз лампочку включит зек номер 1, попав в камеру в день с номером 1.
и там местами у меня написаны строгие равенства на месте нестрогих, сорри
зэки нумеруются от 1 до 100. дни тоже нумеруются от 1 до 100 и циклически повторяются.
условимся, что если лампочка горит в день номер X равнозначно тому, что все зэки с номерами 1..X уже побывали в камере.
каждый зэк помнит максимальный номер дня, когда он видел лампочку включенной. изначально у всех зеков z(n) = 0
соответственно, если зэк с номером Z попадает в камеру в день D, то алгоритм его действий таков:
если лампочка горит (значит зеки 1..D-1 уже побывали в камере)
{
если z(Z) > D (зек видел лампочку включенной в более поздний день), то оставляет ее гореть
если Z == D (зек попал в камеру в «свой» день), то тоже оставляем лампочку гореть
если z(Z) < D то обновляем свое знание z(Z) = D и выключаем лампочку (зек запоминает, что видел в этот день лампочку включенной)
}
если лампочка не горит, но зек видел ее включенную в этот день (z(Z) > D), то он включает ее
таким образом если вдруг зек 100 в день номер 100 попадет в камеру и застанет лампочку горящей, то можно утверждать что все тут уже побывали
вопрос знатокам: в репозитории есть файлик local.properties. его содержимое различается на разных компах, но он должен быть в репозитории. после выполнения git clone правим этот файл, и командой «git update-index --assume-unchanged local.properties» предотвращаем закоммичивание локальных изменений. проблема: как сохранить эти изменения при выполнении команд pull или reset?
да вы там еб*нулись
www.youtube.com/watch?v=01XKCsyIZxE&feature=related
зэки нумеруются от 1 до 100. дни тоже нумеруются от 1 до 100 и циклически повторяются.
условимся, что «лампочка горит в день номер X» => «все зэки с номерами 1..X уже побывали в камере».
каждый зэк помнит максимальный номер дня, когда он видел лампочку включенной. изначально у всех зеков z(n) = 0
соответственно, если зэк с номером Z попадает в камеру в день D, то алгоритм его действий таков:
если лампочка горит (значит зеки 1..D-1 уже побывали в камере)
{
если z(Z) > D (зек видел лампочку включенной в более поздний день), то оставляет ее гореть
если Z == D (зек попал в камеру в «свой» день), то тоже оставляем лампочку гореть
если z(Z) < D то обновляем свое знание z(Z) = D и выключаем лампочку (зек запоминает, что видел в этот день лампочку включенной)
}
если лампочка не горит, то зек включает ее, если:
а) если он уже видел ее включенную в этот день (z(Z) >= D)
или
б) он видел ее включенной в предыдущий день и сегодня его день (z(Z) >= D — 1 && Z == D)
таким образом если вдруг зек 100 в день номер 100 попадет в камеру и застанет лампочку горящей, то он может утверждать что все тут уже побывали (#100 может смело говорить «да»). он оставляет лампочку включенной. после этого события все зеки, которые застанут лампочку горящей в день номер 1, смогут говорить «да» (и к тому же в дальнейшем включать лампочку в любой день).
PS: ох и долго ж им там сидеть придется :(
первый раз лампочку включит зек номер 1, попав в камеру в день с номером 1.
и там местами у меня написаны строгие равенства на месте нестрогих, сорри
условимся, что если лампочка горит в день номер X равнозначно тому, что все зэки с номерами 1..X уже побывали в камере.
каждый зэк помнит максимальный номер дня, когда он видел лампочку включенной. изначально у всех зеков z(n) = 0
соответственно, если зэк с номером Z попадает в камеру в день D, то алгоритм его действий таков:
если лампочка горит (значит зеки 1..D-1 уже побывали в камере)
{
если z(Z) > D (зек видел лампочку включенной в более поздний день), то оставляет ее гореть
если Z == D (зек попал в камеру в «свой» день), то тоже оставляем лампочку гореть
если z(Z) < D то обновляем свое знание z(Z) = D и выключаем лампочку (зек запоминает, что видел в этот день лампочку включенной)
}
если лампочка не горит, но зек видел ее включенную в этот день (z(Z) > D), то он включает ее
таким образом если вдруг зек 100 в день номер 100 попадет в камеру и застанет лампочку горящей, то можно утверждать что все тут уже побывали
2. построить космический корабль Apollo
3.?
4. PROFIT!