我正在尝试创建一个接收双精度(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. C#:将数组拆分为n个部分
- 2. 将C数组拆分为n等分
- 3. Oracle PL/SQL将csv字符串拆分为n个部分
- 4. 将n个值拆分为m个块
- 5. 将mol2分子的数据库拆分为N个较小组
- 6. 如何将已排序的RDD拆分为n个部分并从每个部分获取第一个元素?
- 7. 将页面拆分为2个部分
- 8. 拆分为两个部分
- 9. 如何将字符串拆分为N部分?
- 10. 如何将一个数字拆分为n个数字的组
- 11. Asible将stdout_line拆分为数组元素
- 12. PHP:如何将数组拆分为2个部分?
- 13. 根据键模式将数组拆分为多个部分
- 14. 将100个号码拆分为N个相同长度的部分
- 15. 如何将一个Ruby数组拆分(块)为X元素的一部分?
- 16. 将数组拆分为两个数组
- 17. 使用拆分将字符串拆分为2个字符组?
- 18. 将列表拆分为大约相等长度的N个部分
- 19. IOS:如何将UIImage拆分为部分
- 20. 将字符串拆分为两部分
- 21. 将文本拆分为部分
- 22. 将矢量拆分为两部分
- 23. 将屏幕拆分为两部分
- 24. 将Spark数据帧拆分为部分
- 25. 将Android应用拆分为两部分
- 26. 将测试类拆分为部分类?
- 27. 将PDF拆分为两部分
- 28. 将NSString拆分为组件
- 29. 将JSON拆分为数组
- 30. 将字符串N拆分为N/X个字符串
为什么会有所作为?如果你有'[1,2]'和'3',那么你不能简单地使用'split'来获得3个元组... –
我假设两个double是下限/上限。然后有可能计算出'n'个相等的输出范围。但没有进一步的信息,人们只能假设实际的问题是什么。 – mschmidt
是的,比方说,我得到a,b和n = 4的范围,我希望最终能够产生包含每个区间 – JohnTeiMir