ラベル CTM の投稿を表示しています。 すべての投稿を表示
ラベル CTM の投稿を表示しています。 すべての投稿を表示

2016年4月11日月曜日

開発環境

コンピュータプログラミングの概念・技法・モデル(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(練習問題)、8.(明示的状態と関数)を取り組んでみる。

8.(明示的状態と関数)

コード(Emacs)

declare
Acc={NewCell 0}
fun {Accumulate N}
   Acc:=@Acc+N
   @Acc
end

{Browse {Accumulate 5}}
{Browse {Accumulate 100}}
{Browse {Accumulate 45}}

2016年4月5日火曜日

開発環境

コンピュータプログラミングの概念・技法・モデル(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(練習問題)、2-(a)、(b).(組み合わせの計算)を取り組んでみる。

2-(a)、(b).(組み合わせの計算)

コード(Emacs)

declare
fun {Fact N}
   if N==0 then
      1
   else
      N*{Fact N-1}
   end
end

fun {F N C}
   if C==1 then
      N
   else
      N*{F N-1 C-1}
   end
end

fun {Comb N K}
   if K==0 then
      1
   else
      {F N K} div {Fact K}
   end
end

fun {CombFast N K}
   if K==0 then
      1
   else
      if K > N div 2 then
         {Comb N N-K}
      else
         {Comb N K}
      end
   end
end

{Browse {Comb 10 0}}
{Browse {Comb 10 2}}
{Browse {Comb 10 8}}

{Browse {CombFast 10 2}}
{Browse {CombFast 10 8}}

{Browse {CombFast 100 90}}

2016年4月4日月曜日

開発環境

コンピュータプログラミングの概念・技法・モデル(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(練習問題)、1-a, b.(計算器)を取り組んでみる。

1-a, b.(計算器)

コード(Emacs)

declare
A=2*2
B=A*A
C=B*B
D=C*C
E=D*D
F=E*E
G=B*E*F
{Browse G}

{Browse 100*99*98*97*96*95*94*93*92*91*90*89*88*87*86*85*84*83*82*81*80*79*78*77*76*75*74*73*72*71*70*69*68*67*66*65*64*63*62*61*60*59*58*57*56*55*54*53*52*51*50*49*48*47*46*45*44*43*42*41*40*39*38*37*36*35*34*33*32*31*30*29*28*27*26*25*24*23*22*21*20*19*18*17*16*15*14*13*12*11*10*9*8*7*6*5*4*3*2*1}