コンピュータプログラミングの概念・技法・モデル
(IT Architect' Archive
クラシックモダン・コンピューティング6)
(IT Architects’Archive CLASSIC MODER)
(翔泳社)
セイフ・ハリディ (著), ピーター・ヴァン・ロイ (著)
Peter Van-Roy (著), Seif Haridi (著), 羽永 洋
原書: Concepts, Techniques,
and Models of Computer Programming
開発環境
- OS X Yosemite - Apple (OS)
- Emacs (Text Editor)
- Oz (プログラミング言語)
- Mozartプログラミングシステム(Mozart 2) (実装)
コンピュータプログラミングの概念・技法・モデル(IT Architect' Archiveクラシックモダン・コンピューティング6) (IT Architects’Archive CLASSIC MODER)(セイフ・ハリディ (著)、ピーター・ヴァン・ロイ (著)、Peter Van-Roy (著)、 Seif Haridi (著)、羽永 洋 (翻訳) 、翔泳社、原書: Concepts, Techniques, and Models of Computer Programming(CTM))の第部(一般的計算モデル)、第3章(宣言的プログラミング技法)、3.10(練習問題)、12.(リストの平坦化の計算量)を解いてみる。
12.(リストの平坦化の計算量)
1つ目。
{Flatten [[a b] [[c] [d]] nil [e [f]]]}
{Append {Flatten [a b]}
{Flatten [[[c] [d]] nil [e [f]]]}}
{Append a|{Flatten [b]}
{Append {Flatten [[c] [d]]}
{Flatten [nil [e [f]]]}}}
{Append a|b|{Flatten nil}
{Append {Append {Flatten [c]}
{Flatten [[d]]}}
{Append {Flatten nil}
{Flatten [[e [f]]]}}}}
{Append [a b]
{Append {Append c|{Flatten nil}
{Append {Flatten [d]}
{Flatten nil}}}
{Append nil
{Append {Flatten [e [f]]}
{Flatten nil}}}}}
{Append [a b]
{Append {Append [c]
{Append d|{Flatten nil}
nil}}
{Append nil
{Append e|{Flatten [f]}
nil}}}}
{Append [a b]
{Append {Append [c]
[d]}
{Append nil
{Append e|f|{Flatten nil}
nil}}}}
{Append [a b]
{Append {Append [c]
[d]}
{Append nil
{Append e|f|nil}
nil}}}}
{Append [a b]
{Append [c d]
{Append nil
{Append [e f]
nil}}}}
{Append [a b]
{Append [c d]
{Append nil
[e f]}}}
{Append [a b]
{Append [c d]
[e f]}}
{Append [a b]
[c d e f]}
[a b c d e f]
2つ目。
{Flatten [[a b] [[c] [d]] nil [e [f]]]}
{FlattenD [[a b] [[c] [d]] nil [e [f]]]
nil}
{FlattenD [a b]
{FlattenD [[[c] [d]] nil [e [f]]]
nil}}
{FlattenD [a b]
{FlattenD [[c] [d]]
{Flatten [nil [e [f]]]
nil}}}
{FlattenD [a b]
{FlattenD [[c] [d]]
{FlattenD nil
{FlattenD [[e [f]]]
nil}}}}
{FlattenD [a b]
{FlattenD [[c] [d]]
{FlattenD nil
{FlattenD [e [f]]
{FlattenD nil
nil}}}}}
{FlattenD [a b]
{FlattenD [[c] [d]]
{FlattenD nil
{FlattenD [e [f]]
nil}}}}
{FlattenD [a b]
{FlattenD [[c] [d]]
{FlattenD nil
e|{FlattenD [[f]]
nil}}}}
{FlattenD [a b]
{FlattenD [[c] [d]]
{FlattenD nil
e|{FlattenD [f]
{FlattenD nil nil}}}}}
{FlattenD [a b]
{FlattenD [[c] [d]]
{FlattenD nil
e|{FlattenD [f]
nil}}}}
{FlattenD [a b]
{FlattenD [[c] [d]]
{FlattenD nil
e|f|{Flatten nil nil}}}}
{FlattenD [a b]
{FlattenD [[c] [d]]
{FlattenD nil
e|f|nil}}}
{FlattenD [a b]
{FlattenD [[c] [d]]
[e f]}}
{FlattenD [a b]
{FlattenD [c]
{FlattenD [[d]]
[e f]}}}
{FlattenD [a b]
{FlattenD [c]
{FlattenD [d]
{Flatten nil
[e f]}}}}
{FlattenD [a b]
{FlattenD [c]
{FlattenD [d]
[e f]}}}
{FlattenD [a b]
{FlattenD [c]
d|{Flatten nil [e f]}}}
{FlattenD [a b]
{FlattenD [c]
d|[e f]}}
{FlattenD [a b]
{FlattenD [c]
[d e f]}}
{FlattenD [a b]
c|{FlattenD nil [d e f]}}
{FlattenD [a b]
c|[d e f]}
{FlattenD [a b]
[c d e f]}
a|{Flatten [b]
[c d e f]}
a|b|{Flatten nil
[c d e f]}
a|b|[c d e f]
[a b c d e f]
0 コメント:
コメントを投稿