C# 帮助解决逻辑问题

C# 帮助解决逻辑问题,c#,logic,C#,Logic,我很难理解这个问题背后的逻辑。我已经开发了其他的一切,但我真的需要一些帮助,任何形式的帮助,对我所坚持的部分 背景故事: *一群演员围成一圈等待。他们“算数” 按不同数量“关闭”。最后几次试镜 被认为最有可能获得 分手,成为明星 演员没有名字,而是被识别出来 按数字。表中的“试听顺序”告诉我们, 从左到右阅读演员的“名字” 将按照他们表演的顺序进行试镜* 样本输出: 等等,一直到10 到目前为止,我所拥有的: using System; using System.Collections; us

我很难理解这个问题背后的逻辑。我已经开发了其他的一切,但我真的需要一些帮助,任何形式的帮助,对我所坚持的部分

背景故事:

*一群演员围成一圈等待。他们“算数” 按不同数量“关闭”。最后几次试镜 被认为最有可能获得 分手,成为明星

演员没有名字,而是被识别出来 按数字。表中的“试听顺序”告诉我们, 从左到右阅读演员的“名字” 将按照他们表演的顺序进行试镜*

样本输出:

等等,一直到10

到目前为止,我所拥有的:

using System;
using System.Collections;
using System.Text;

namespace The_Last_Survivor
{
    class Program
    {
        static void Main(string[] args)
        {
            //Declare Variables
            int NumOfActors = 0;
            System.DateTime dt = System.DateTime.Now;
            int interval = 3;
            ArrayList Ring = new ArrayList(10);

            //Header
            Console.Out.WriteLine("Actors\tNumber\tOrder");

            //Add Actors
            for (int x = 1; x < 11; x++)
            {
                NumOfActors++;

                Ring.Insert((x - 1), new Actor(x));

                foreach (Actor i in Ring)
                {
                    Console.Out.WriteLine("{0}\t{1}\t{2}", NumOfActors, i, i.Order(interval, x));
                }

                Console.Out.WriteLine("\n");
            }

            Console.In.Read();
        }

        public class Actor
        {
            //Variables
            protected int Number;

            //Constructor
            public Actor(int num)
            {
                Number = num;
            }

            //Order in circle
            public string Order(int inter, int num)
            {
                //Variable
                string result = "";
                ArrayList myArray = new ArrayList(num);

                //Filling Array
                for (int i = 0; i < num; i++)
                    myArray.Add(i + 1);

                //Formula
                foreach (int element in myArray)
                {
                    if (element == inter)
                    {
                        result += String.Format(" {0}", element);
                        myArray.RemoveAt(element);
                    }
                }   
                return result;
            }

            //String override
            public override string ToString()
            {
                return String.Format("{0}", Number);
            }
        }
    }
}
使用系统;
使用系统集合;
使用系统文本;
为最后一个幸存者命名名称空间
{
班级计划
{
静态void Main(字符串[]参数)
{
//声明变量
int NumOfActors=0;
System.DateTime dt=System.DateTime.Now;
整数区间=3;
ArrayList环=新的ArrayList(10);
//标题
Console.Out.WriteLine(“Actors\tNumber\tOrder”);
//添加演员
对于(int x=1;x<11;x++)
{
numfactors++;
插入((x-1),新的参与者(x));
foreach(拳台一号演员)
{
Console.Out.WriteLine(“{0}\t{1}\t{2}”,numfactors,i,i.Order(interval,x));
}
控制台输出写入线(“\n”);
}
Console.In.Read();
}
公共级演员
{
//变数
受保护整数;
//建造师
公共参与者(int-num)
{
Number=num;
}
//循环往复
公共字符串顺序(int-inter,int-num)
{
//变数
字符串结果=”;
ArrayList myArray=新的ArrayList(num);
//填充阵列
for(int i=0;i
我一直在做的是做一些数学运算:

有人能提供一些指导和/或示例代码吗

进步一号

新代码

公共字符串顺序(int-inter,int-num) { //变数 字符串结果=”; int pos=0; ArrayList myArray=新的ArrayList()

//填充数组
对于(int i=0;i1)
{
pos=(pos+inter)%myArray.Count;
结果+=(myArray[pos]+“”);
myArray.RemoveAt(pos);
}
结果+=(myArray[0]);
myArray.Clear();
返回结果;
问题:演员一个接一个离开:
基本思路是找到下一个使用公式的人

next position = (current position + count) modulo number of people
每次迭代都会少一个人

在python中,“count”是2,因为我们从零开始计数,这使得几乎所有涉及模的问题都变得简单一些

people=[1,2,3,4,5]
people=['a','b','c','d','e']
count=2  # base 0 counting

pos=0
while len(people) > 1:
    pos = (pos + count) % len(people)
    print "at pos",pos,"eliminating person",people[pos],'from',people,
    del people[pos]
    print 'leaving',people
print 'winner is',people[0]
给予

at pos 2 eliminating person c from ['a','b','c','d','e'] leaving ['a','b','d','e']
at pos 0 eliminating person a from ['a','b','d','e'] leaving ['b','d','e']
at pos 2 eliminating person e from ['b','d','e'] leaving ['b','d']
at pos 0 eliminating person b from ['b','d'] leaving ['d']
winner is d

听起来像是家庭作业!我记得在课堂上用不同的措辞做了这个问题。我记不起答案,但也不太难。坚持下去!基本上我只需要理解如何循环数组的索引并从中减去元素。这通常被称为约瑟夫斯问题…嗨,马克,谢谢你的帮助我的节目快结束了,我的节目确实走了很长一段路。但是我仍然有一个问题。我的演员们一个接一个地离开了……似乎找不到它在做什么。你能看看我上面的编辑吗?
at pos 2 eliminating person c from ['a','b','c','d','e'] leaving ['a','b','d','e']
at pos 0 eliminating person a from ['a','b','d','e'] leaving ['b','d','e']
at pos 2 eliminating person e from ['b','d','e'] leaving ['b','d']
at pos 0 eliminating person b from ['b','d'] leaving ['d']
winner is d