我正在嘗試創建一個接收雙精度(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