ठीक है, ऐसा लगता है कि यह आसान होना चाहिए, लेकिन मुझे बस यह नहीं मिल रहा है। यदि मेरे पास संख्याओं का अनुक्रम है, तो मैं चल रहे योगों से बना एक नया अनुक्रम कैसे उत्पन्न करूं? उदाहरण के लिए अनुक्रम [1; 2; 3; 4] के लिए, मैं इसे [1; 3; 6; 10] पर मैप करना चाहता हूं। एक उपयुक्त कार्यात्मक तरीके से।f # कुल रनिंग का अनुक्रम
5
A
उत्तर
14
5
> Seq.scan (fun acc n -> acc + n) 0 [1;2;3;4];;
val it : seq<int> = seq [0; 1; 3; 6; ...]
सूचियों के साथ
:
> [1;2;3;4] |> List.scan (fun acc n -> acc + n) 0 |> List.tail;;
val it : int list = [1; 3; 6; 10]
संपादित करें: दृश्यों के साथ एक और तरीका है:
let sum s = seq {
let x = ref 0
for i in s do
x := !x + i
yield !x
}
हाँ, वहाँ एक अस्थायी चर है, लेकिन मैं इसे और अधिक पठनीय लगता है (आप प्राप्त करना चाहते हैं, तो अग्रणी 0 से छुटकारा पाएं)।
+0
शांत, धन्यवाद। हालांकि यह प्रारंभिक 0 के साथ एक बड़ा अनुक्रम उत्पन्न करता प्रतीत होता है, क्या यह एक वास्तविक मानचित्र की तरह महसूस नहीं करता है। – Aidan
0
सुनिश्चित नहीं हैं कि इस सबसे अच्छा तरीका है, लेकिन यह चाल
let input = [1; 2; 3; 4]
let runningTotal =
(input, 0)
|> Seq.unfold (fun (list, total) ->
match list with
| [] ->
None
| h::t ->
let total = total + h
total, (t, total) |> Some)
|> List.ofSeq
13
एक और भिन्नता Seq.scan
का उपयोग कर क्या करना चाहिए (Seq.skip 1
अग्रणी से छुटकारा पाता है शून्य):
> {1..4} |> Seq.scan (+) 0 |> Seq.skip 1;;
val it : seq<int> = seq [1; 3; 6; 10]
संबंधित मुद्दे
- 1. प्राइम्स एल्गोरिदम कुल रनिंग समय!
- 2. LINQ कुल अनुक्रम कोई तत्व
- 3. F # अनुक्रम में एक तत्व जोड़ें
- 4. F #
- 5. F #
- 6. एस्केप अनुक्रम \ f - फॉर्म फ़ीड - यह वास्तव में क्या है?
- 7. Excel तालिका संरचित संदर्भों का उपयोग कर रनिंग कुल कैसे बनाएं?
- 8. अनुक्रम का स्वचालित गणना
- 9. Haskell से F # - F #
- 10. रनिंग प्रोफाइलर
- 11. रनिंग थ्रेड
- 12. रनिंग बयान
- 13. F #
- 14. f #
- 15. F #
- 16. F #
- 17. F #
- 18. F #
- 19. F #
- 20. रनिंग Powershell
- 21. F #
- 22. F #
- 23. F #
- 24. F #
- 25. F #
- 26. F #
- 27. F #
- 28. F #
- 29. F #
- 30. F #
यह बहुत अच्छा है, हालांकि मैं एक सूची के बजाय अनुक्रम के लिए ऐसा करने की उम्मीद कर रहा था। – Aidan
@ एडन: उचित Seq.scan कार्यान्वयन जोड़ने के लिए संपादित किया गया। – ildjarn
कूल, वह एक है। धन्यवाद। – Aidan