On Tue, Nov 22, 2011 at 4:32 AM, Steven D'Aprano <st...@pearwood.info>wrote:

> John wrote:
>
>>
>> Hi all,
>>
>> I have wriiten the following code:
>> [Segment]
>>
>>   def survivor(names, step):
>>>>>
>>>>    index = step - 1
>>    next = names
>>    while len(next)>  1:
>>        next.remove (next[index])
>>
>
>
> What is the intention of this function? The name given doesn't mean
> anything to me. The parameters "names" and "step" don't seem meaningful.
>
I guess he is trying the Josephus problem. I am guessing from the name!

If so,  you have to remember that when you delete an item you change the
positions of subsequent items.
For example, in a 11-element list, say A,  if you want to delete every
third, the index numbers you *should* delete are 2, 5, 8. But if you delete
A[2], then you will delete the original A[6] and then the original A[10].

So you have to think in terms of 'marking' for deletion and later deleting
or deleting from the other end.

A more interesting possibility is to replicate the original list and append
it to itself and "delete" all occurrences.

About 25 years back thats what I did in BASIC and won an honorable mention
in a coding contest in a magazine :-)
I replaced the cell contents with a space and in subsequent rounds counted
non-space items.

The first prize was won by a circular(linked-)list in Pascal, with the same
repace by Space idea

HTH

Asokan
_______________________________________________
Tutor maillist  -  Tutor@python.org
To unsubscribe or change subscription options:
http://mail.python.org/mailman/listinfo/tutor

Reply via email to