Hướng dẫn pascals triangle ocaml - pascals tam giác ocaml

Permalink

Không thể lấy lại những người đóng góp tại thời điểm này

Tệp này chứa văn bản unicode hai chiều có thể được giải thích hoặc biên dịch khác với những gì xuất hiện dưới đây. Để xem xét, hãy mở tệp trong một trình soạn thảo cho thấy các ký tự Unicode ẩn. Tìm hiểu thêm về các ký tự unicode hai chiều

( * Tạo hàng tiếp theo từ hàng hiện tại *)
Đặt hàng NEXT_ROW hàng =
List.map2 (+) ([0] @ hàng) (hàng @ [0])
( * Trả về n hàng đầu tiên *)
Hãy để pascal n =
Đặt vòng lặp rec i row =
Nếu i = n thì []
Hàng khác :: Loop (i+1) (hàng tiếp theo_row)
trong vòng 0 [1]

Permalink

Không thể lấy lại những người đóng góp tại thời điểm này

Tệp này chứa văn bản unicode hai chiều có thể được giải thích hoặc biên dịch khác với những gì xuất hiện dưới đây. Để xem xét, hãy mở tệp trong một trình soạn thảo cho thấy các ký tự Unicode ẩn. Tìm hiểu thêm về các ký tự unicode hai chiều

modulePascal= Pascal =
cấu trúc
OpenStream Stream
OpenSeries Series
(* -------------------------------------------------------- ------- *) ------------------------------------------------------- *)
. Computing partial sums lazily over a stream of nats *)
LetRec psumss = (*nâng lên để làm*) rec psums s = (*raise TODO*)
letRec buffered_psumssbuff = rec buffered_psums s buff =
{hd = s.hd + buff;= s.hd + buff;
TL = Susp (Fun () -> (Buffered_psums (Force S.Tl) (S.HD + Buff)))= Susp(fun () -> (buffered_psums (force s.tl) (s.hd + buff)))
}
in
buffered_psums s 0 ;;0;;
(*-------------------------------------------------------- ----------------------------*))----------------------------------------------------------------------------*)
(* Tam giác của Pascal Pascal's triangle
Chúng tôi muốn tạo ra một luồng bao gồm các luồng.
Phần tử đầu tiên của luồng là (1 1 1 1 ...), tức là luồng của các trong số.
Phần tử thứ i của luồng thu được bằng cách tính tổng số một phần
trên phần tử (I-1) của luồng.
(1 1 1 1 ...);
(1 2 3 4 ...);
(1 3 6 10 ...);
(1 4 10 20 35;
...
Phần tử đầu tiên tương ứng với đường chéo đầu tiên trong tam giác của Pascal;
Phần tử thứ hai cho đường chéo thứ hai, v.v.
*)
letrec pascal = (*nâng todo*) rec pascal = (*raise TODO*)
letRec buffered_pascalbuff = rec buffered_pascal buff =
{hd = buff;= buff;
TL = Susp (Fun () -> Buffered_Pascal (PSUMS Buff))= Susp(fun () -> buffered_pascal (psums buff))
}
in
buffered_psums s 0 ;;Series.ones (*Should replace ones by Stream.ones*)
(* Tam giác của Pascal rec getNth n s = (*raise TODO*)
Chúng tôi muốn tạo ra một luồng bao gồm các luồng. n with
Phần tử đầu tiên của luồng là (1 1 1 1 ...), tức là luồng của các trong số. 0 -> s.hd
Phần tử thứ i của luồng thu được bằng cách tính tổng số một phần n -> getNth (n - 1) (force s.tl)
trên phần tử (I-1) của luồng. rec row k (s: (int str) str) = (*raise TODO*)
(1 1 1 1 ...); rec row' k2 s2 buff =
(1 2 3 4 ...); k2 with
(1 3 6 10 ...); 0 -> (s2.hd.hd)::buff
(1 4 10 20 35; _ -> row (k-1) (force s.tl) @ [getNth k s.hd]
in
...[]
Phần tử đầu tiên tương ứng với đường chéo đầu tiên trong tam giác của Pascal; rec triangle (s : (int str) str) = (*raise TODO*)
Phần tử thứ hai cho đường chéo thứ hai, v.v. rec buffered_triangle buff s =
*)= row buff;
letrec pascal = (*nâng todo*)= Susp(fun () -> (buffered_triangle (buff + 1) s))
}
in
buffered_psums s 0 ;;0 s
(*-------------------------------------------------------- ----------------------------*))----------------------------------------------------------------------------*)
(* Tam giác của Pascal To illustrate the result ... *)
Chúng tôi muốn tạo ra một luồng bao gồm các luồng. rec map_tolist n f s = if n = 0 then []
Phần tử đầu tiên của luồng là (1 1 1 1 ...), tức là luồng của các trong số. (f s.hd) :: map_tolist (n-1) f (force s.tl)
(*-------------------------------------------------------- ----------------------------*))----------------------------------------------------------------------------*)
chấm dứt;;;;