2014年12月26日金曜日

開発環境

コンピュータプログラミングの概念・技法・モデル(IT Architect' Archiveクラシックモダン・コンピューティング6) (IT Architects’Archive CLASSIC MODER)(セイフ・ハリディ (著)、ピーター・ヴァン・ロイ (著)、Peter Van-Roy (著)、 Seif Haridi (著)、羽永 洋 (翻訳) 、翔泳社、原書: Concepts, Techniques, and Models of Computer Programming(CTM))の第1章(プログラミング概念入門)、1.18(練習問題)、9-a, b.(記憶域(memory store))を解いてみる。

9-a, b.(記憶域(memory store))

コード(Emacs)

declare
fun {AddList L1 L2}
   case L1 of H1|T1 then
      case L2 of H2|T2 then
         H1+H2|{AddList T1 T2}
      end
   else nil end
end

fun {ShiftLeft L}
   case L of H|T then
      H|{ShiftLeft T}
   else [0] end
end

fun {ShiftRight L} 0|L end

S={NewStore}
{Put S 1 [1]}
fun {FastPascal N}
   M in   
   M={Size S}
   if N > M then
      {Put S N {AddList {ShiftLeft {FastPascal N-1}}
                {ShiftRight {FastPascal N-1}}}}
      {Get S N}
   else
      {Get S N}
   end
end

for I in 1..20 do {Browse {FastPascal I}} end

{Browse {FastPascal 100}}

0 コメント:

コメントを投稿