GVKun编程网logo

如何计算OCaml中任何元素类型的列表中连续出现的次数?

28

在本文中,我们将详细介绍如何计算OCaml中任何元素类型的列表中连续出现的次数?的各个方面,同时,我们也将为您带来关于bash–计算单词列表中每个单词出现在文件中的次数?、c#–如何查找同一对象在列表

在本文中,我们将详细介绍如何计算OCaml中任何元素类型的列表中连续出现的次数?的各个方面,同时,我们也将为您带来关于bash – 计算单词列表中每个单词出现在文件中的次数?、c# – 如何查找同一对象在列表中出现的次数,然后找到最常出现的对象的属性、Java-如何计算字符串中char出现的次数?、Java如何计算列表中元素的出现次数的有用知识。

本文目录一览:

如何计算OCaml中任何元素类型的列表中连续出现的次数?

如何计算OCaml中任何元素类型的列表中连续出现的次数?

这显然是一项家庭作业,所以我只给出一些提示。

使代码正常工作时,不会将字符串(或任何其他类型)加在一起。它将整数加在一起。因此,您可能想再次在网上回顾一下这些示例:-)

您绝对可以使用fold_left来获得答案。首先,请注意结果是成对的列表。每对的第一个元素可以是任何类型,具体取决于原始列表的类型。每对中的第二个元素是一个int。因此,您有一个正在使用的基本类型:('a * int) list

想象一下,您有办法“增加”这样的列表:

let increment (list: ('a * int) list) value =
     (* This is one way to think of your problem *)

此函数在列表中查找第一个元素等于value的对。如果找到它,它将返回一个新列表,其中关联的int比以前大一个。如果找不到,它将返回一个带有附加元素(value,1)的新列表。

这是您要折叠到列表上的基本操作,而不是示例代码的+操作。

bash – 计算单词列表中每个单词出现在文件中的次数?

bash – 计算单词列表中每个单词出现在文件中的次数?

我有一个文件list.txt,其中包含一个单词列表.我想检查每个单词出现在另一个文件file1.txt中的次数,然后输出结果.所有数字的简单输出就足够了,因为我可以用电子表格程序手动将它们添加到list.txt,但是如果脚本在list.txt的每行末尾添加数字,那就更好了,例如:
bear 3
fish 15

我试过这个,但它不起作用:

cat list.txt | grep -c file1.txt
您可以在循环中执行此操作,该循环一次从单词列表文件中读取单个单词,然后计算数据文件中的实例.例如:
while read; do
    echo -n "$REPLY "
    fgrep -ow "$REPLY" data.txt | wc -l
done < <(sort -u word_list.txt)

“秘密酱”包括:

>使用隐式REPLY变量;>使用进程替换从单词列表文件中收集单词;和>确保您在数据文件中搜索整个单词.

c# – 如何查找同一对象在列表中出现的次数,然后找到最常出现的对象的属性

c# – 如何查找同一对象在列表中出现的次数,然后找到最常出现的对象的属性

我正在为一些编程实践做一个扑克手评估器,我已经提交给codereview堆栈交换.我需要能够正确地比较双手,为此我需要看到对的价值.我目前检查双手班

private static PokerHandsRank CheckHandForPairs(Hand hand)

    {
        var faceCount = (from card in hand.Cards
                         group card by card.Face
                         into g
                         let count = g.Count()
                         orderby count descending
                         select count).Take(2).ToList(); // take two to check if multiple pairs of pairs,if second in list is 1 there will be two pairs

        switch (faceCount[0])
        {
            case 1: return PokerHandsRank.HighCard;
            case 2: return faceCount[1] == 1 ? PokerHandsRank.Pair : PokerHandsRank.TwoPair;
            case 3: return faceCount[1] == 1 ? PokerHandsRank.ThreeOfKind : PokerHandsRank.FullHouse;
            case 4: return PokerHandsRank.FourOfKind;
            default: throw new Exception("something went wrong here");
        }
    }

正如你所看到的,我已经使用linq来获得最多出现配对的列表,但是我不知道如何在我将它们分开后完成它以获得卡的面值.

这是我目前的比较方法

public int Compareto(Hand other)
    {
        if (HandRank == other.HandRank) //if the hand rank is equal,sort the cards by face value and compare the two biggest
        {
            sortHandbyFace(this); // sorts cards into order by face
            sortHandbyFace(other);
            for (int i = 4; 0 <= i; i--)
            {
                if (Cards[i].Face == other.Cards[i].Face)
                {
                    if (i == 0) return 0;
                    continue;
                }
                return Cards[i].Face > other.Cards[i].Face ? 1 : -1;
            }              
        }
        return HandRank > other.HandRank ? 1 : -1;

比较完美的比较高卡问题,但我需要添加一个检查,如果两个手牌等级,然后检查他们的价值是一对,两对,满屋或三种(然后找到最高的面值的一对)

如果您需要有关我的程序的更多信息,请随时查看https://codereview.stackexchange.com/questions/152857/beginnings-of-a-poker-hand-classifier-part-2?noredirect=1&lq=1后的codereview

解决方法

这可能不是您正在寻找的,因为您正在比较对象而不仅仅是整数,但这可以帮助您开始.基于这个问题: How to get frequency of elements stored in a list in C#.

using System.Linq;

List<int> ids = //
int maxFrequency = 0;
int IDOfMax = 0;

foreach(var grp in ids.GroupBy(i => i))
{
    if (grp.Count() > maxFrequency) 
    {
        maxFrequency = grp.Count();
        IDOfMax = grp.Key;
    }
}

// The object (int in this case) that appears most frequently 
// can be identified with grp.key

更新:在重新阅读问题之后,听起来您需要尝试使用查询中的计数和面值返回一个新对象.

你可以这样做:

public class FaceCountResult
{
    public int Count { get; set; }
    public Face FaceValue { get; set; }

    public FaceCountResult(int count,Face faceValue)
    {
        Count = count;
        FaceValue = faceValue;
    }
}

然后,faceCount应该看起来像这样:

var faceCount = (from card in hand.Cards
                 group card by card.Face
                 into g
                 let count = g.Count()
                 orderby count descending
                 select new FaceCountResult(count,card.Face);

我不确定Take(2)部分将如何考虑到这一点,因为我不太了解代码的这一部分.

然后,您可以在faceCount [0] .Count上切换并使用faceCount [0] .FaceValue来获取面值.

Java-如何计算字符串中char出现的次数?

Java-如何计算字符串中char出现的次数?

我有string

a.b.c.d

我想用惯用的方式计算“.”的出现次数,最好是一行。
之前我曾将这个约束表示为“没有循环”,以防你想知道为什么每个人都试图在不使用循环的情况下回答问题)。

答案1

小编典典

我对此的“惯用一语”是:

int count = StringUtils.countMatches("a.b.c.d", ".");

当它已经成为公共语言时,为什么还要自己编写呢?

Spring Framework的oneliner为此:

int occurance = StringUtils.countOccurrencesOf("a.b.c.d", ".");

Java如何计算列表中元素的出现次数

Java如何计算列表中元素的出现次数

我有一个ArrayListJavaCollection类,如下所示:

ArrayList<String> animals = new ArrayList<String>();animals.add("bat");animals.add("owl");animals.add("bat");animals.add("bat");

如你所见,animals ArrayList包含3个bat元素和一个owl元素。我想知道Collection框架中是否有任何API可以返回出现次数,bat或者是否有其他方法可以确定出现次数。

我发现Google的Collection Multiset确实有一个API,该API返回一个元素出现的总数。但这仅与JDK 1.5兼容。我们的产品当前在JDK 1.6中,因此我无法使用它。

答案1

小编典典

我很确定Collections中的静态频率方法会派上用场:

int occurrences = Collections.frequency(animals, "bat");

无论如何,这就是我要做的。我很确定这是jdk 1.6。

今天关于如何计算OCaml中任何元素类型的列表中连续出现的次数?的介绍到此结束,谢谢您的阅读,有关bash – 计算单词列表中每个单词出现在文件中的次数?、c# – 如何查找同一对象在列表中出现的次数,然后找到最常出现的对象的属性、Java-如何计算字符串中char出现的次数?、Java如何计算列表中元素的出现次数等更多相关知识的信息可以在本站进行查询。

本文标签: