csharp进阶练习题:抽奖活动【难度:2级】:

要参与抽奖每一个给他/她的名字.

一姓的每个字母
有一个值是其在英文字母等级. A``和有秩1,BB排名2等.

的姓名的长度* * 被加入到* 总和* 这些行列因此许多som.

随机权的数组矩阵被链接到firstnames并且每个som乘以
其相应的权重,以获得他们所称的’获胜number`.

例:


名称: "科林,AMANDBA,AMANDAB,卡罗尔,保罗,JOSEPH"
权重:[1,4,4,5,2,1]

保罗 - >索姆=姓名的长度+ 16 + 1 + 21 + 12 = 4 + 50  - > 54
与保罗相关联的* 重量* 是2,从而保罗* 中奖号码* 54 * 2 = 108.

现在,人们可以在降低获奖numbers的顺序排序firstnames.当两个
人都有同样的获奖number对它们进行排序按字母顺序* * 通过他们的firstnames.

任务:

  • 参数:st firstnames的字符串,we权重的数组矩阵,N

  • 回报:其排名参与者的名字是N
    (等级从1编号)

实施例:


名称: "科林,AMANDBA,AMANDAB,卡罗尔,保罗,JOSEPH"
权重:[1,4,4,5,2,1]
N:4

该函数将返回:"保罗"

注意:

  • 如果’st`是空返"不参加".

  • 如果n大于参与者的数量多则返回"没有足够的参与者".

  • 查看范例测试用例更多的例子.

编程目标:

public class Rank
{
    public static string NthRank(string st, int[] we, int n)
    {
        // your code
    }
}


测试样例:

using System;
using NUnit.Framework;
[TestFixture]
public static class RankTests {
[Test]
    public static void test1() {
        Assert.AreEqual("No participants", Rank.NthRank(st, we, 4));
        st = "Addison,Jayden,Sofia,Michael,Andrew,Lily,Benjamin";
        we = new int[] {4, 2, 1, 4, 3, 1, 2};
        Assert.AreEqual("Not enough participants", Rank.NthRank(st, we, 8));
        st = "Addison,Jayden,Sofia,Michael,Andrew,Lily,Benjamin";
        we = new int[] {4, 2, 1, 4, 3, 1, 2};
        Assert.AreEqual("Benjamin", Rank.NthRank(st, we, 4));


最佳答案(多种解法):

点击查看答案

更多关联题目:

csharp基础练习题:温度分析我【难度:1级】–景越C# 经典编程题库,不同难度C# 练习题,适合自学C# 的新手进阶训练

免责申明

本博客所有编程题目及答案均收集自互联网,主要用于供网友学习参考,如有侵犯你的权益请联系管理员及时删除,谢谢
题目收集至https://www.codewars/
https://www.codewars/kata/prize-draw

更多推荐

csharp进阶练习题:抽奖活动【难度:2级】--景越C#经典编程题库,不同难度C#练习题,适合自学C#的新手进阶训练