<?php
$total = 30 ; //number of people
$skip = 5 ; //couplets
$key = $skip ;
$M = $skip ; //stopper. once reached M exit loop
$arrayOfStudents = range ( 1 , $total , 1 ) ; $lastKey = key ( $arrayOfStudents ) ; //last available student in each cycle. count($array) wont work since at the end of the cycle we have changed (decreased) array.length because of dropped students
//but this must not affect last student in the cycle (determined in the beginning of each cycle) since countdown was not interrupted or renewed after each drop
while ( count ( $arrayOfStudents ) >= $M ) {
if ( $key - 1 <= $lastKey ) {
unset ( $arrayOfStudents [ $key - 1 ] ) ; $key += $skip ;
}
elseif ( $key - 1 > $lastKey ) {
$key = ( $key - 1 ) - $lastKey ;
$lastKey = key ( $arrayOfStudents ) ; unset ( $arrayOfStudents [ $key - 1 ] ) ; $key += $skip ;
}
}
echo "Выигрышные места: " . implode ( ", " , $arrayOfStudents ) ;
?>
PD9waHAKZXJyb3JfcmVwb3J0aW5nKC0xKTsKJHRvdGFsPTMwOyAvL251bWJlciBvZiBwZW9wbGUKJHNraXA9NTsgLy9jb3VwbGV0cwoka2V5PSRza2lwOwokTT0kc2tpcDsgLy9zdG9wcGVyLiBvbmNlIHJlYWNoZWQgTSBleGl0IGxvb3AKJGFycmF5T2ZTdHVkZW50cz1yYW5nZSgxLCR0b3RhbCwxKTsKZW5kKCRhcnJheU9mU3R1ZGVudHMpOwokbGFzdEtleT1rZXkoJGFycmF5T2ZTdHVkZW50cyk7IAovL2xhc3QgYXZhaWxhYmxlIHN0dWRlbnQgaW4gZWFjaCBjeWNsZS4gY291bnQoJGFycmF5KSB3b250IHdvcmsgc2luY2UgYXQgdGhlIGVuZCBvZiB0aGUgY3ljbGUgd2UgaGF2ZSBjaGFuZ2VkIChkZWNyZWFzZWQpIGFycmF5Lmxlbmd0aCBiZWNhdXNlIG9mIGRyb3BwZWQgc3R1ZGVudHMKLy9idXQgdGhpcyBtdXN0IG5vdCBhZmZlY3QgbGFzdCBzdHVkZW50IGluIHRoZSBjeWNsZSAoZGV0ZXJtaW5lZCBpbiB0aGUgYmVnaW5uaW5nIG9mIGVhY2ggY3ljbGUpIHNpbmNlIGNvdW50ZG93biB3YXMgbm90IGludGVycnVwdGVkIG9yIHJlbmV3ZWQgYWZ0ZXIgZWFjaCBkcm9wCgp3aGlsZSAoY291bnQoJGFycmF5T2ZTdHVkZW50cyk+PSRNKXsKICAKICAgIAogICAgaWYgKCRrZXktMTw9JGxhc3RLZXkpIHsKICAgICAgICB1bnNldCgkYXJyYXlPZlN0dWRlbnRzWyRrZXktMV0pOwogICAgICAgICRrZXkrPSRza2lwOyAKICAgICAgIAogICAgfQogICAgCiAgICBlbHNlaWYgKCRrZXktMT4kbGFzdEtleSkgewogICAgICAgICRrZXk9KCRrZXktMSktJGxhc3RLZXk7CiAgICAgICAgJGFycmF5T2ZTdHVkZW50cz1hcnJheV92YWx1ZXMoJGFycmF5T2ZTdHVkZW50cyk7CiAgICAgICAgZW5kKCRhcnJheU9mU3R1ZGVudHMpOwogICAgICAgICRsYXN0S2V5PWtleSgkYXJyYXlPZlN0dWRlbnRzKTsKICAgICAgICB1bnNldCgkYXJyYXlPZlN0dWRlbnRzWyRrZXktMV0pOyAKICAgICAgICAka2V5Kz0kc2tpcDsKICAgICAgIAogICAgfQoKICAgIAp9CgplY2hvICLQktGL0LjQs9GA0YvRiNC90YvQtSDQvNC10YHRgtCwOiAiIC4gaW1wbG9kZSgiLCAiLCRhcnJheU9mU3R1ZGVudHMpOwogCj8+