gpt4 book ai didi

c# - 帮忙解决一道逻辑题

转载 作者:行者123 更新时间:2023-11-30 17:22:58 25 4
gpt4 key购买 nike

我在试图找出这个问题背后的逻辑时遇到了很大的困难。我已经开发了其他一切,但我真的需要一些帮助,任何形式的帮助,在我坚持的部分。

背景故事:

*一群 Actor 围成一圈等候。他们“数关闭“不同数量。最后几个试镜被认为最有可能获得零件并成为明星。

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

示例输出:

alt text http://content.screencast.com/users/SidSinister/folders/Jing/media/2f6de635-c1d1-48fa-b868-68f4e298bf16/2010-03-17_2033.png

等等,一直到 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);
}
}
}
}

我坚持的部分是进行一些数学运算: alt text http://content.screencast.com/users/SidSinister/folders/Jing/media/0d178ed4-64bd-468c-acc3-872fa8d8d541/2010-03-17_2035.png

谁能提供一些指导和/或示例代码?

进步一

新代码

public string Order(int inter, int num) { //多变的 字符串结果=“”; int 位置 = 0; ArrayList myArray = new ArrayList();

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

while (myArray.Count > 1)
{
pos = (pos + inter) % myArray.Count;
result += (myArray[pos] + " ");
myArray.RemoveAt(pos);
}


result += (myArray[0]);
myArray.Clear();
return result;

问题:Actor 相差一个: alt text http://content.screencast.com/users/SidSinister/folders/Jing/media/6bb7ab47-9d23-47fb-8691-649127afc47b/2010-03-17_2313.png

最佳答案

基本思想是找到下一个有公式的人

next position = (current position + count) modulo number of people

并且每次迭代都少了一个人。

这是在 python 中。 “计数”为 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

关于c# - 帮忙解决一道逻辑题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2466902/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com