Ok, điều này có vẻ như nó phải dễ dàng, nhưng tôi chỉ không nhận được nó. Nếu tôi có một chuỗi các số, làm cách nào để tạo một chuỗi mới được tạo thành từ các tổng số đang chạy? ví dụ cho một chuỗi [1; 2; 3; 4], tôi muốn ánh xạ nó tới [1; 3; 6; 10]. Trong một cách phù hợp chức năng.f # chuỗi tổng số đang chạy
5
A
Trả lời
14
5
> Seq.scan (fun acc n -> acc + n) 0 [1;2;3;4];;
val it : seq<int> = seq [0; 1; 3; 6; ...]
Với danh sách:
> [1;2;3;4] |> List.scan (fun acc n -> acc + n) 0 |> List.tail;;
val it : int list = [1; 3; 6; 10]
Edit: Một cách khác với trình tự:
let sum s = seq {
let x = ref 0
for i in s do
x := !x + i
yield !x
}
Vâng, có một biến có thể thay đổi, nhưng tôi thấy nó dễ đọc hơn (nếu bạn muốn nhận được thoát khỏi hàng đầu 0).
+0
tuyệt, cảm ơn. Tuy nhiên nó dường như tạo ra một chuỗi lớn hơn, với 0 ban đầu, làm nó không cảm thấy giống như một bản đồ thực sự. – Aidan
0
Không chắc đây là cách tốt nhất nhưng nó phải làm các trick
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
biến thể khác sử dụng Seq.scan
(Seq.skip 1
loại bỏ hàng đầu số không):
> {1..4} |> Seq.scan (+) 0 |> Seq.skip 1;;
val it : seq<int> = seq [1; 3; 6; 10]
Các vấn đề liên quan
- 1. Tổng số chạy SQL BigQuery
- 2. Tổng số lần chạy hoặc Tổng số lần chạy của Oracle theo tháng
- 3. Báo cáo tinh thể - Tóm tắt so với tổng số trường đang chạy
- 4. LINQ to SQL và tổng số đang chạy trên các kết quả đã đặt hàng
- 5. Chức năng Windows Server 2012 Windowing để tính tổng số đang chạy
- 6. Xuất tổng số ký tự chuỗi
- 7. tổng có điều kiện trong F #
- 8. F # tổng quát và hiệu suất tự động
- 9. Chạy tổng số trong gấu trúc (không có vòng lặp)
- 10. Bạn đang sử dụng mã f # nào?
- 11. F # printf chuỗi
- 12. Làm cách nào để kiểm tra số lượng các chuỗi đang chạy trong Java?
- 13. Thêm tổng số chuỗi vào chú thích trong Highcharts
- 14. SQLite: Nhận Tổng số/Tổng của Cột
- 15. Kiểm tra xem chuỗi Win32 có đang chạy hay đang ở trạng thái tạm dừng
- 16. Python: Tổng chiều dài chuỗi
- 17. Thông số GC nào là JVM đang chạy?
- 18. Chuyển đối số cho quy trình đang chạy trong C#
- 19. Số phiên bản CLR và GC đang chạy trên máy?
- 20. Phát hiện số quá trình đang chạy với cùng tên
- 21. Tổng số bài đăng?
- 22. Đang tải XAML khi đang chạy?
- 23. Giữ node.js đang chạy
- 24. Trình khởi chạy nào đang chạy?
- 25. Tạo một dãy số tổng cho một số đã cho
- 26. Dừng phương thức Reduce() ở giữa. Cách chức năng thực hiện một phần chạy tổng số
- 27. Tôi có thể chạy một chuỗi đang chạy trong Slime (Swank Emacs)
- 28. Nhận tổng số mục enum
- 29. Khớp mẫu trên đầu chuỗi trong f #
- 30. Tính tổng cộng chạy trong MySQL
Điều này rất tuyệt, tuy nhiên tôi đã hy vọng làm điều này cho một chuỗi hơn là một danh sách. – Aidan
@Aidan: Đã chỉnh sửa để thêm thực thi Seq.scan phù hợp. – ildjarn
Tuyệt, đó là một. Cảm ơn bạn. – Aidan