草庐IT

c# - 需要数学库来操作序列/范围

coder 2024-06-11 原文

这个问题不太可能对 future 的访客有帮助;它只与一个小的地理区域、一个特定的时刻或一个非常狭窄的情况相关,通常不适用于互联网的全局受众。如需帮助使这个问题更广泛地适用,visit the help center .




9年前关闭。




我有三种数值范围,它们在某个区间内定义,例如:
1. 计数范围(指定区间内的任意值)
2. 周期序列(指定序列开始、步数和步数)
3. 一组精确值(如 1、3、7 等)

我需要联合/相交它们(从 2 到 N 不同类型)并获得优化的结果。显然,上述交集将返回上述类型之一的结果,将它们合并将导致上述类型的 1 到 M 范围。
示例 1:
第一个范围定义为从 5 到 11 的连续范围,第二个是从 2 到 18 的周期性序列,步骤 2(因此,8 个步骤)。
Intersection 将通过步骤 2 返回从 6 到 10 的周期性序列。
Union 将返回三个结果:从 2 到 4 的周期序列和步骤 2,从 5 到 11 的连续范围和从 12 到 18 的周期序列和步骤 2。
示例 2:
第一个范围定义为具有步骤 2 的周期序列 0 到 10,第二个范围定义为具有步骤 2 的周期序列从 1 到 7(因此,3 个步骤)。
Intersection 将返回 null,因为它们不相交。
Union 将返回两个结果:从 1 到 8 的周期序列,步骤 1(注意:优化结果)和精确值 10。
希望我没有犯错:)
好吧,对这类序列的这些操作不应该太复杂,我希望有一个像这里这样的库。请建议任何(将在 C#.NET 中使用)。
谢谢!

更新
回答“我认为我如何使用图书馆”。以上三种类型都可以在编程语言中轻松定义为:
1.连续:{十进制开始;十进制结束;其中 Start 是范围的开始,End 是结束
2. 期刊:{十进制开始;十进制步长;整数计数;其中 Start 是序列的开始,Step 是增量,Count 是步数
3. 一组精确的数字:{decimal[] Values;其中 Values 是一些小数的数组。

当我对上面列出的任何类型的任何两个范围进行交集时,我肯定会得到其中一种类型的结果,例如“连续”和“定期”范围的交叉将导致“定期”、“连续”。和“精确集”将导致精确集“续”。并且“精确”也将返回精确值。相同类型的交集将返回输入类型的结果。
2 个范围的并集有点复杂,但无论如何都会返回上述类型中定义的 2 到 3 个范围。
有了交集/联合函数,我将始终能够在 2 到 N 范围内运行它,并会在输入类型项中获得结果。

最佳答案

首先,遵循之前的其他答案:我不相信有一个标准库:它看起来非常像一个特例。

其次,问题/要求没有充分说明。我将按照问题介绍将 3 种不同类型称为“集合”、“定期”、“连续”。

考虑两个集合 {1,4,5,6} 和 {4,5,6,8}。它们的交点是 {4,5,6}。我们是否必须将其标记为“周期性”是因为该描述适合这种情况,还是因为它是集合的交集而被标记为“集合”?

由此,更一般地说,我们是否需要将“set”-label 的内容更改为“periodic”?毕竟,“周期”是“集合”的特例。

同样,考虑“周期”{4,6,8} 和集合{10,15,16} 的并集。我们是否必须将结果定义为周期 {4,6,8,10} 加上周期{15,16} 或者更确切地说是一个包含所有值的集合,还是另一种类型?

退化情况如何:{3} 是“集合”、“周期性”还是“连续”? “连续”{1-4} 和“集合”{4,7,8} 的交集是什么类型?和连续{1-4}和连续{4-7}的交集?

依此类推:必须清楚如何标记/描述来自联合和/或交集的任何结果,例如 - 两个离散类型(非连续)的交集或并集是否总是一种类型(通常是一个集合,可能是一个周期),或者更确切地说总是一系列周期,或者......

第三,假设上述问题已经解决,我相信你可以按照以下指导方针来实现:

  • 只考虑两种“类型”,即“连续”和“集合”。 “周期”只是“集合”的一种特殊形式,我们可以随时将“集合”标记为“周期”。
  • 定义一个公共(public)基类,并使用适当的派生(重载)方法进行并集、交集和任何您可能需要的方法,以生成 - 例如 - 列表(baseType)作为结果。

  • 逐案实现基本上非常简单 - 假设我的介绍性问题已得到解答。无论最初的问题在何处显得有些“困难”,那只是因为问题和规范还没有很好地定义。

    关于c# - 需要数学库来操作序列/范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12727143/

    有关c# - 需要数学库来操作序列/范围的更多相关文章

    1. ruby - 我需要将 Bundler 本身添加到 Gemfile 中吗? - 2

      当我使用Bundler时,是否需要在我的Gemfile中将其列为依赖项?毕竟,我的代码中有些地方需要它。例如,当我进行Bundler设置时:require"bundler/setup" 最佳答案 没有。您可以尝试,但首先您必须用鞋带将自己抬离地面。 关于ruby-我需要将Bundler本身添加到Gemfile中吗?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/4758609/

    2. ruby - rspec 需要 .rspec 文件中的 spec_helper - 2

      我注意到像bundler这样的项目在每个specfile中执行requirespec_helper我还注意到rspec使用选项--require,它允许您在引导rspec时要求一个文件。您还可以将其添加到.rspec文件中,因此只要您运行不带参数的rspec就会添加它。使用上述方法有什么缺点可以解释为什么像bundler这样的项目选择在每个规范文件中都需要spec_helper吗? 最佳答案 我不在Bundler上工作,所以我不能直接谈论他们的做法。并非所有项目都checkin.rspec文件。原因是这个文件,通常按照当前的惯例,只

    3. ruby - 如何在 Lion 上安装 Xcode 4.6,需要用 RVM 升级 ruby - 2

      我实际上是在尝试使用RVM在我的OSX10.7.5上更新ruby,并在输入以下命令后:rvminstallruby我得到了以下回复:Searchingforbinaryrubies,thismighttakesometime.Checkingrequirementsforosx.Installingrequirementsforosx.Updatingsystem.......Errorrunning'requirements_osx_brew_update_systemruby-2.0.0-p247',pleaseread/Users/username/.rvm/log/138121

    4. ruby - 触发器 ruby​​ 中 3 点范围运算符和 2 点范围运算符的区别 - 2

      请帮助我理解范围运算符...和..之间的区别,作为Ruby中使用的“触发器”。这是PragmaticProgrammersguidetoRuby中的一个示例:a=(11..20).collect{|i|(i%4==0)..(i%3==0)?i:nil}返回:[nil,12,nil,nil,nil,16,17,18,nil,20]还有:a=(11..20).collect{|i|(i%4==0)...(i%3==0)?i:nil}返回:[nil,12,13,14,15,16,17,18,nil,20] 最佳答案 触发器(又名f/f)是

    5. ruby-on-rails - 相关表上的范围为 "WHERE ... LIKE" - 2

      我正在尝试从Postgresql表(table1)中获取数据,该表由另一个相关表(property)的字段(table2)过滤。在纯SQL中,我会这样编写查询:SELECT*FROMtable1JOINtable2USING(table2_id)WHEREtable2.propertyLIKE'query%'这工作正常:scope:my_scope,->(query){includes(:table2).where("table2.property":query)}但我真正需要的是使用LIKE运算符进行过滤,而不是严格相等。然而,这是行不通的:scope:my_scope,->(que

    6. ruby - 当使用::指定模块时,为什么 Ruby 不在更高范围内查找类? - 2

      我刚刚被困在这个问题上一段时间了。以这个基地为例:moduleTopclassTestendmoduleFooendend稍后,我可以通过这样做在Foo中定义扩展Test的类:moduleTopmoduleFooclassSomeTest但是,如果我尝试通过使用::指定模块来最小化缩进:moduleTop::FooclassFailure这失败了:NameError:uninitializedconstantTop::Foo::Test这是一个错误,还是仅仅是Ruby解析变量名的方式的逻辑结果? 最佳答案 Isthisabug,or

    7. c# - 如何在 ruby​​ 中调用 C# dll? - 2

      如何在ruby​​中调用C#dll? 最佳答案 我能想到几种可能性:为您的DLL编写(或找人编写)一个COM包装器,如果它还没有,则使用Ruby的WIN32OLE库来调用它;看看RubyCLR,其中一位作者是JohnLam,他继续在Microsoft从事IronRuby方面的工作。(估计不会再维护了,可能不支持.Net2.0以上的版本);正如其他地方已经提到的,看看使用IronRuby,如果这是您的技术选择。有一个主题是here.请注意,最后一篇文章实际上来自JohnLam(看起来像是2009年3月),他似乎很自在地断言RubyCL

    8. Ruby 从大范围中获取第 n 个项目 - 2

      假设我有这个范围:("aaaaa".."zzzzz")如何在不事先/每次生成整个项目的情况下从范围中获取第N个项目? 最佳答案 一种快速简便的方法:("aaaaa".."zzzzz").first(42).last#==>"aaabp"如果出于某种原因你不得不一遍又一遍地这样做,或者如果你需要避免为前N个元素构建中间数组,你可以这样写:moduleEnumerabledefskip(n)returnto_enum:skip,nunlessblock_given?each_with_indexdo|item,index|yieldit

    9. C# 到 Ruby sha1 base64 编码 - 2

      我正在尝试在Ruby中复制Convert.ToBase64String()行为。这是我的C#代码:varsha1=newSHA1CryptoServiceProvider();varpasswordBytes=Encoding.UTF8.GetBytes("password");varpasswordHash=sha1.ComputeHash(passwordBytes);returnConvert.ToBase64String(passwordHash);//returns"W6ph5Mm5Pz8GgiULbPgzG37mj9g="当我在Ruby中尝试同样的事情时,我得到了相同sha

    10. ruby - 是否有用于序列化和反序列化各种格式的对象层次结构的模式? - 2

      给定一个复杂的对象层次结构,幸运的是它不包含循环引用,我如何实现支持各种格式的序列化?我不是来讨论实际实现的。相反,我正在寻找可能会派上用场的设计模式提示。更准确地说:我正在使用Ruby,我想解析XML和JSON数据以构建复杂的对象层次结构。此外,应该可以将该层次结构序列化为JSON、XML和可能的HTML。我可以为此使用Builder模式吗?在任何提到的情况下,我都有某种结构化数据-无论是在内存中还是文本中-我想用它来构建其他东西。我认为将序列化逻辑与实际业务逻辑分开会很好,这样我以后就可以轻松支持多种XML格式。 最佳答案 我最

    随机推荐