指数骑自行车

时间:2012-05-16 14:00:49

标签: algorithm language-agnostic

我有一组7组数据,可通过索引0-6访问。我需要使用6进行训练,1进行测试,需要循环使用,直到达到7种组合为止。

训练 - 0,1,2,3,4,5 测试 - 6

训练 - 1,2,3,4,5,6 测试 - 0

训练 - 2,3,4,5,6,0 测试 - 1

...

训练6,0,1,2,3,4, 测试 - 5

训练数据将是一组整数队列,测试是一个整数队列。我的大脑是炒的,我需要拼命帮助。我只是简单地对它们进行硬编码,但它看起来很可怕,如果我想改变我拥有的数量,那么它将需要重写。

使用模数的很多答案!我只用它来查找偶数数字:)我现在正在测试它是否适用于所有的gettin upvotes

很多很棒的答案!!你们是最棒的! :d

5 个答案:

答案 0 :(得分:2)

Modulo是你的朋友。

for(int i = 0; i < set.Length; i++)
{
    for(int j = 0; j < set.Length - 1; j++)
    {
        // Do something with ... set[(i+j)%set.Length];
    }
    // Test with set[(i+set.Length-1)%set.Length]
}

答案 1 :(得分:1)

简单模数运算将剪切值。

for i in range(7):
  v = range(i, i+7)
  print [x % 7 for x in v[:-1]], v[-1] % 7

答案 2 :(得分:1)

使用伪C#语法:

int[][] alldata = [[/* training1 */], [ /*training2*/ ], [ /* training3 */ ]];
for (int i = 0; i < alldata.Length; i++)
{
    int[][] testdata = new int[][] { alldata[i] };
    int[][] traindata = alldata.Where((d, idx) => idx != i).ToArray();
    //Do your thing.
}

答案 3 :(得分:1)

我不确定我的数据集是否正确,但这是你要找的吗?

Queue<Int>[] data = new Queue<Int>[7]();
int current;
for(int i=0; i<7; i++) {
    current = i;
    for(int j=0; j<6; j++) {
        training[i].add(data[(current + j)%7]);
        current++;
    }
    testing[i] = data[(current + 6)%7];
}

答案 4 :(得分:1)

以下是我将如何解决这个问题:

void IndicesCycling(int[] indexes, out Queue<Queue<int>> data, out Queue<int> test)
{
    data = new Queue<Queue<int>>();
    test = new Queue<int>();
    for (int i = 0; i < indexes.Length; i++)
    {
       test.Enqueue(indexes[i]);
       Queue<int> tmp = new Queue<int>();
       for (int j = 1; j < indexes.Length; j++)
       { 
           tmp.Enqueue(indexes[(i+j)%indexes.Length]);
       }
       data.Enqueue(tmp);
    }
}