csharp进阶练习题:抽奖活动【难度:2级】:
要参与抽奖每一个给他/她的名字.
一姓的每个字母
有一个值是其在英文字母等级. A``和了
有秩1
,B
和B
排名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#的新手进阶训练
发布评论