我想有一个C#方法来计算交换机语句中的案例数.(我们称之为CaseCounter).例如,假设你有这个枚举和这两种方法:
enum Painter
{
Rubens,
Rembrandt,
Vermeer,
Picasso,
Kandinsky
}
int GetYearOfBirth(Painter painter)
{
switch(painter)
{
case Painter.Kandinsky:
return 1866;
case Painter.Picasso:
return 1881;
case Painter.Rembrandt:
return 1606;
case Painter.Rubens:
return 1577;
case Painter.Vermeer:
return 1632;
default:
return 0;
}
}
bool IsModern(Painter painter)
{
switch (painter)
{
case Painter.Kandinsky:
case Painter.Picasso:
return true;
default:
return false;
}
}
Run Code Online (Sandbox Code Playgroud)
现在应该保持以下平等:
CaseCounter("GetYearOfBirth") == 5
CaseCounter("IsModern") == 2
Run Code Online (Sandbox Code Playgroud)
(在计数中是否包含默认大小写并不重要.此外,参数CaseCounter不需要是字符串;任何可以某种方式用于表示方法的类型都可以.)
那么,你将如何实施CaseCounter?它甚至可能吗?
--- ADDENDUM(编辑)---
这里有一些背景信息,如果你想知道为什么我问这个问题.
我正在维护一个代码库,其中包含很多打开枚举的方法.这些方法分布在各个类别中; 当枚举枚举时(例如,当你添加一个新的Painter …
使用 xpath,我想返回包含多个标题标签的所有节标签。我试过了
count(concept/conbody/section:child:title>1)
Run Code Online (Sandbox Code Playgroud)
并且没有返回结果。我想在许多文件中运行此 xpath 来查找那些包含多个标题的部分的概念。
<concept>
<title>Topic Title</title>
<shortdesc>Short description text.</shortdesc>
<conbody>
<section>
<title>Section Title</title>
<p>paragraph text.</p>
</section>
<section>
<title>Section Title</title>
<p>paragraph text.</p>
<title>Section Title</title>
<p>paragraph text.</p>
</section>
</conbody>
</concept>
Run Code Online (Sandbox Code Playgroud) 我有一堆 csv 文件,我正在将它们读入如下列表中:
f <- list.files(pattern="201\\d{5}\\.csv")
Run Code Online (Sandbox Code Playgroud)
有什么方法可以计算我正在读入的文件数量吗?
我有一个生成如下表的查询:
Login_Date Username
----------------------------------------------
1/1/10 user-1
1/1/10 user-1
1/1/10 user-2
1/2/10 user-1
1/2/10 user-2
1/3/10 user-1
1/3/10 user-1
1/3/10 user-1
1/3/10 user-3
Run Code Online (Sandbox Code Playgroud)
查询如下所示:
SELECT Date_Used, Name AS licenseNames FROM B, A WHERE A.License_Key = B.License_Key ORDER BY Date_Used ;
Run Code Online (Sandbox Code Playgroud)
这很好,但我需要它来生成日期列表,对于每个日期,它都会为我提供当天登录的用户列表,以及他们登录的次数。我已经查看了所有内容试图找到一个简洁的解决方案,但这只是死胡同。
我想要发布的结果如下所示:
Login_Date Username # of Times logged in
--------------------------------------------------
1/1/10 user-1 2
1/1/10 user-2 1
1/2/10 user-1 1
1/2/10 user-2 2
1/3/10 user-1 3
1/3/10 user-3 1
Run Code Online (Sandbox Code Playgroud)
任何帮助将不胜感激,这让我发疯。
编辑
以下是相应的表格,以避免混淆:
表 A 列:
--------------------------
ID License_Key Name
Run Code Online (Sandbox Code Playgroud)
表 B 列: …
例如,假设我真的很饿,所以我就继续做煎饼!
var Buttermilk = new Pancake("Buttermilk", "Delicious");
var ChocolateChip = new Pancake("Chocolate Chip", "Amazing");
var BlueBerry = new Pancake("Blue Berry", "The Best");
var SnozBerry = new Pancake("Snoz Berry", "What's a Snoz Berry?");
Run Code Online (Sandbox Code Playgroud)
如果不手动做,我如何计算我刚做了多少煎饼?是否有代码说“煎饼品种有这么多变量”?
编辑:
谢谢你的回答!我一直在寻找一种简单的方法来快速计算我用少量代码创建对象的次数。这就是我得到的,谢谢!
我有一个如下所示的数据框:
import pandas as pd
df = pd.DataFrame({"id":[1,1,1,1,1,1,2,2,2,2,3,3,3,3],
"val":[0,1,1,0,1,0,0,1,0,1,0,0,0,1]})
id val
0 1 0
1 1 1
2 1 1
3 1 0
4 1 1
5 1 0
6 2 0
7 2 1
8 2 0
9 2 1
10 3 0
11 3 0
12 3 0
13 3 1
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,ID 是重复的,并且我的值在 0 和 1 之间交替。我想以某种方式计算值从 0 切换到 1 的次数。例如,如下所示:
id val
1 2
2 2
3 1
Run Code Online (Sandbox Code Playgroud)
它不是计数 1,而是计数每个 ID 的 val 切换为 0-->1 的次数。
我无法弄清楚如何获取矩阵并计算每行的字母数字值的数量。我只会采用我正在计算的值的矩阵。例如,如果我得到:
ABA455
7L9O36G
DZLFPEI
Run Code Online (Sandbox Code Playgroud)
对于第一行,我会得到类似 A:2 B:1 4:1 5:2 的结果,每一行都将独立计算。如果您也可以解释一下,我最想了解所使用的运算符。谢谢你。
我正在使用C#,Silverlight,Visual Studio for Windows Phone 7.
我目前有一个包含通用UIElement的List,我可以把TextBlock或Grid或StackPanel这样的东西放到List中.
例如:
List<UIElement> UIList= new List<UIelement>();
UIList.Add(someUIObject as UIElement);
Run Code Online (Sandbox Code Playgroud)
我的问题是,是否有一种有效的方法来计算列表中对象类型的数量?例如,如果有8个TextBlocks和4个Grids,我想知道List中有2个对象类型.或者,如果有1个TextBlock,1个Grid和1个StackPanel,我想知道有3种类型的对象.
我正在寻找比O(n ^ 2)性能更好的东西.我当前的解决方案将每个元素类型与List中的其他元素类型进行比较,类似于BubbleSort.
是否有任何酷的cmdlet可以帮助我做以下事情?我想要Powershell中的东西就像在SQL中做同样简单:
select RootElementName , count(*) from Table
group by RootElementName
order by RootElementName
Run Code Online (Sandbox Code Playgroud)
我是目录中的所有XML文件,找到每个XML文件的根元素.
$DirectoryName = "d:\MyFolder\"
$AllFiles = Get-ChildItem $DirectoryName -Force
foreach ($Filename in $AllFiles)
{
$FQFilename = $DirectoryName + $Filename
[xml]$xmlDoc = Get-Content $FQFilename
$rootElementName = $xmlDoc.SelectSingleNode("/*").Name;
Write-Host $FQFilename $rootElementName
}
Run Code Online (Sandbox Code Playgroud)
期望的结果:
RootName Count
-------- -----
Root1 15
MyRoot 16
SomeRoot 24
Run Code Online (Sandbox Code Playgroud)
我知道我可以创建两个数组,或者一个对象数组,将根元素存储在数组中,并使用典型代码完成所有计数,只是希望这种新语言可能有内置的东西,我没有'发现了.
我可以将"Write-Host $ FQFilename $ rootElementName"传递给与上面提到的SQL有关的东西吗?
最近我处理的是我确信这是一个非常常见的问题,主要归结为以下几点:
给定长文本,计算文本中出现的每个单词的频率.
我能够解决这个问题std::unordered_map.然而,这对于文本中的每个单词来说都变得非常难看,如果已经遇到过这种情况,我必须进行查找,擦除,然后重新插入到地图中并增加值.
我意识到还有其他方法可以做到这一点,例如在vanilla数组/向量上使用散列函数并在那里增加值,但我想知道是否有更优雅的方法来解决这个问题,比如STL组件,或功能.这将与Pythons Counter集合具有类似的接口.
我知道C++是C++我真的不能期望总是为我实现这样的高级概念,但只是想知道你们是否有新的东西(或者至少你的谷歌搜索技能优于我的)可能使我的代码成为一个好一点.