55 lines
1.7 KiB
C
55 lines
1.7 KiB
C
|
//YOU MAY NOT MODIFY THIS DOCUMENT
|
||
|
#pragma once
|
||
|
#include <iostream>
|
||
|
#include <string>
|
||
|
#include <vector>
|
||
|
|
||
|
using namespace std;
|
||
|
|
||
|
class JosephusInterface
|
||
|
{
|
||
|
public:
|
||
|
JosephusInterface(void){}
|
||
|
virtual ~JosephusInterface(void){}
|
||
|
/*
|
||
|
getNames
|
||
|
|
||
|
Returns a list of names in the order in which the people will be standing for the "game".
|
||
|
Although fewer people may be playing, you must return 20 names here. Do not provide
|
||
|
duplicate names.
|
||
|
|
||
|
For the sake of the test driver, this method must return the list of 20 names in the
|
||
|
same order every time it is called, and this list of 20 names in this order must be used
|
||
|
to play the "game".
|
||
|
|
||
|
This method will be called repeatedly.
|
||
|
*/
|
||
|
virtual vector<string> getNames() = 0;
|
||
|
/*
|
||
|
playGame
|
||
|
|
||
|
Plays a "game" with the first n people from the list (above) counting forward every m. An
|
||
|
explanation for how the "game" works can be found in the exam specs.
|
||
|
|
||
|
This method should return a list of names in the order in which the lot fell upon them (including
|
||
|
the survivor, who should be last). If n is not between 10 and 20 or if m is non-positive,
|
||
|
return an empty vector.
|
||
|
|
||
|
This method will be called repeatedly.
|
||
|
*/
|
||
|
virtual vector<string> playGame(int n, int m) = 0;
|
||
|
/*
|
||
|
reportSafeIndex
|
||
|
|
||
|
Returns the "safe index", the last index/location in the circle that will be chosen when
|
||
|
the "game" is played. The point of this method is to permit someone to cheat the system
|
||
|
by finding the safe location ahead of time.
|
||
|
|
||
|
If n is not between 10 and 20 or if m is non-positive, return -1.
|
||
|
|
||
|
This method may be called repeatedly.
|
||
|
*/
|
||
|
virtual int reportSafeIndex(int n, int m) = 0;
|
||
|
};
|
||
|
|