我正在尝试创建一个接收双精度(Double,Double)和n(Int)范围的函数,其中将该间隔分成n个相等部分。我知道如果它是一个列表,我在列表中做了Split,但是在元组中并获得了双精度,我不知道该怎么做。 感谢您的帮助将元组拆分为n个部分
回答
这类似于@ mschmidt的答案,但我认为一个列表的理解可能是清晰的:
intervals :: Int -> (Double,Double) -> [(Double,Double)]
intervals n (a,b) =
let n' = fromIntegral n
d = (b - a)/n'
in [(a + i*d, a + (i+1)*d) | i <- [0..n'-1]]
捐赠:
> intervals 4 (1,10)
[(1.0,3.25),(3.25,5.5),(5.5,7.75),(7.75,10.0)]
>
如果重复计算的终点冒犯了你,你可以这样写:
intervals' :: Int -> (Double,Double) -> [(Double,Double)]
intervals' n (a,b) =
let n' = fromIntegral n
d = (b - a)/n'
x = [a + i*d | i <- [0..n']]
in zip x (tail x)
注意zip x (tail x)
是一个非常标准的方式来获得连续对列表的元组:
> let x = [1,2,3,4] in zip x (tail x)
[(1,2),(2,3),(3,4)]
>
谢谢!只是一个问题,而不是给予:Int - >(Double,Double) - > [(Double,Double)],(Double,Double) - > Int - >(Double,Double)? – JohnTeiMir
我不知道这个替代签名(只返回一个元组)应该做什么功能。你能举出一个如何调用它以及它应该返回的例子吗? –
让我们说:intervls ::(Double,double) - > Int - > [(Double,Double)] – JohnTeiMir
草图,可能不是最优雅的解决方案:
- 取两个输入双打(我称他们为
l
和u
),并计算输入范围/区间的宽度。 - 您想计算
n
等宽度的输出范围w
。通过将输入宽度除以n
来计算此w
。 - 构建长度包含值
l+0*w
,l+1*w
,l+2*w
n
的列表,... - 通过在列表中的前两项组合成一个元组生成输出元组的列表。删除列表中的一个元素。继续,直到只剩下一个元素。
- 试图抓住所有可能的错误
的4元组谢谢!就像你说的:构建一个包含值l + 0 * w,l + 1 * w,l + 2 * w的长度为n的列表,我如何在这种情况下停止条件? – JohnTeiMir
编写一个递归函数,该函数具有以'n'开头的整数参数,并在每个递归步骤中递减。如果0达到停止,否则做你的工作,并继续递归。 – mschmidt
- 1. Oracle PL/SQL将csv字符串拆分为n个部分
- 2. 将mol2分子的数据库拆分为N个较小组
- 3. 如何将已排序的RDD拆分为n个部分并从每个部分获取第一个元素?
- 4. 将页面拆分为2个部分
- 5. 拆分为两个部分
- 6. 如何将字符串拆分为N部分?
- 7. 将N个sql命令拆分为一个数组?
- 8. PHP:如何将数组拆分为2个部分?
- 9. 根据键模式将数组拆分为多个部分
- 10. 将100个号码拆分为N个相同长度的部分
- 11. 如何将一个Ruby数组拆分(块)为X元素的一部分?
- 12. 将列表拆分为大约相等长度的N个部分
- 13. IOS:如何将UIImage拆分为部分
- 14. 将屏幕拆分为两部分
- 15. 将矢量拆分为两部分
- 16. 将字符串拆分为两部分
- 17. 将文本拆分为部分
- 18. 将Spark数据帧拆分为部分
- 19. 将Android应用拆分为两部分
- 20. 将NSString拆分为组件
- 21. 将字符串N拆分为N/X个字符串
- 22. 如何将句子拆分为由空格组成的部分?
- 23. 将URL拆分为其组成部分的正则表达式
- 24. Sharepoint XSL - 将字符串拆分为组成部分
- 25. 如何在批量中将URL拆分为其组成部分?
- 26. php函数将数组拆分为3部分,但不包含剩余部分
- 27. 将Ms Msql 2005拆分为两个或多个部分
- 28. 将数组分为n部分的算法
- 29. R组合将N拆分为子代码
- 30. Perl中的拆分/映射函数将元素拆分为单独的数组
为什么会有所作为?如果你有'[1,2]'和'3',那么你不能简单地使用'split'来获得3个元组... –
我假设两个double是下限/上限。然后有可能计算出'n'个相等的输出范围。但没有进一步的信息,人们只能假设实际的问题是什么。 – mschmidt
是的,比方说,我得到a,b和n = 4的范围,我希望最终能够产生包含每个区间 – JohnTeiMir