zjbonrace 2015-01-19 14:16 采纳率: 100%
浏览 1519
已采纳

link关于课程表的问题,要求同样的课连续上,如何修改如下代码?

 using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;
using System.Threading.Tasks;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            string[] courses = { "体育课", "体育课", "美术课", "音乐课", "劳动课", "语文课", "数学课", "英语课"};
            var result = Enumerable.Range(0, 5).Select(_ => Enumerable.Range(0, 6).Select(__ => "").ToArray()).ToArray();
            while (!result.All(x => x.Contains("语文课") && x.Contains("数学课") && x.Contains("英语课")))
            {
                var rndseq = Enumerable.Range(0, 30).OrderBy(_ => Guid.NewGuid()).Zip(courses, (x, y) => new { x, y }).ToArray();
                for (int i = 0; i < 5; i++)
                {
                    int pos = 0;
                    string[] cs = { "语文课", "数学课", "英语课" };
                    for (int j = 0; j < 6; j++)
                    {
                        if (rndseq.Any(x => x.x == i * 6 + j))
                            result[i][j] = rndseq.First(x => x.x == i * 6 + j).y;
                        else
                            result[i][j] = (pos++ < 3) ? cs[pos - 1] : "自修课";
                    }
                }
            }
            result = result.Select(x => x.OrderBy(y => y == "自修课" ? 1 : 0).ThenBy(_ => Guid.NewGuid()).ToArray()).ToArray();
            for (int j = 0; j < 6; j++)
            {
                for (int i = 0; i < 5; i++)
                {
                    Console.Write(result[i][j] + "\t");
                }
                Console.WriteLine();
            }
        }
    }
}
  • 写回答

3条回答 默认 最新

  • threenewbee 2015-01-19 14:26
    关注

    result = result.Select(x => x.OrderBy(y => y == "自修课" ? 1 : 0).ThenBy(_ => Guid.NewGuid()).GroupBy(y => y).SelectMany(y => y).ToArray()).ToArray();

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥15 对于squad数据集的基于bert模型的微调
  • ¥15 为什么我运行这个网络会出现以下报错?CRNN神经网络
  • ¥20 steam下载游戏占用内存
  • ¥15 CST保存项目时失败
  • ¥15 树莓派5怎么用camera module 3啊
  • ¥20 java在应用程序里获取不到扬声器设备
  • ¥15 echarts动画效果的问题,请帮我添加一个动画。不要机器人回答。
  • ¥15 Attention is all you need 的代码运行
  • ¥15 一个服务器已经有一个系统了如果用usb再装一个系统,原来的系统会被覆盖掉吗
  • ¥15 使用esm_msa1_t12_100M_UR50S蛋白质语言模型进行零样本预测时,终端显示出了sequence handled的进度条,但是并不出结果就自动终止回到命令提示行了是怎么回事: