随机产生25个一位正整数存入5*5矩阵,求其靠边元素之和、内部元素之和、左上三角元素之和、右下三角元素之和。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Q1063633
{
class Program
{
static void Main(string[] args)
{
Random rnd = new Random();
var mat = Enumerable.Range(0, 5).Select(_ => Enumerable.Range(0, 5).Select(__ => rnd.Next() % 10).ToArray()).ToArray();
for (int i = 0; i < 5; i++)
{
Console.WriteLine(string.Join("\t", mat[i].Select(x => x.ToString())));
}
Func<int, bool> pred = x => x < 5 || x >= 20 || x % 5 == 0 || x % 5 == 4;
var idx = mat.SelectMany(_ => _, (_, y) => y).Select((x, i) => new { x, i});
var 靠边元素之和 = idx.Where(x => pred(x.i))
.Select(x => x.x).Sum();
Console.WriteLine("靠边元素之和={0}", 靠边元素之和);
var 内部元素之和 = idx.Where(x => !pred(x.i))
.Select(x => x.x).Sum();
Console.WriteLine("内部元素之和={0}", 内部元素之和);
var 左上三角元素之和 = idx.Where(x => x.i / 5 <= 4 - x.i % 5)
.Select(x => x.x).Sum();
Console.WriteLine("左上三角元素之和={0}", 左上三角元素之和);
var 右下三角元素之和 = idx.Where(x => x.i / 5 >= 4 - x.i % 5)
.Select(x => x.x).Sum();
Console.WriteLine("右下三角元素之和={0}", 右下三角元素之和);
}
}
}
9 8 2 8 3
9 1 9 6 9
9 6 3 5 0
3 0 6 9 4
1 9 8 1 5
靠边元素之和=88
内部元素之和=45
左上三角元素之和=77
右下三角元素之和=69
Press any key to continue . . .