いろんな言語で宿題スレat TECH
いろんな言語で宿題スレ - 暇つぶし2ch607:デフォルトの名無しさん
09/08/03 07:20:42
>>606 [2]
% Prolog 見かけ再帰を含みませんが、実はfor/3やconcat_atom/3は再帰なしには書けない・・・

t606_2(N,R,X) :-
  findall(N1,for(N,N1,R+1),L1),
  findall(N2,for(R,N2,1),L2),
  concat_atom(L1,'*',S1),
  concat_atom(L2,'*',S2),
  atom_to_term(S1,Term1,_),
  atom_to_term(S2,Term2,_),
  X is Term1 / Term2.


608:607
09/08/03 08:05:18
>>606 >>607 また違っていたようです。

t606_2(N,R,X) :-
  Y is N-R+1,
  findall(N1,for(N,N1,Y),L1),
  findall(N2,for(R,N2,1),L2),
  concat_atom(L1,'*',S1),
  concat_atom(L2,'*',S2),
  atom_to_term(S1,Term1,_),
  atom_to_term(S2,Term2,_),
  X is Term1 // Term2.


609:デフォルトの名無しさん
09/08/03 18:40:06
スレリンク(tech板:786番)
# [1] 授業単元: プログラミング実習
# [2] 問題文(含コード&リンク):台形公式により関数y=x^2とx軸によって
# 挟まれる部分のx=0~x=8までの範囲の面積を求めよ。
# 分割は4で計算せよ。

610:デフォルトの名無しさん
09/08/03 18:47:56
>>609
% Prolog
URLリンク(nojiriko.asia)

611:デフォルトの名無しさん
09/08/03 20:56:19
>>602
-- Haskell で.総当たり
import Data.List (permutations)

t602 = [xs | xs@[e,f,g,h,i,n,o,t,w,y] <- permutations [0..9],
o /= 0, n /= 0, t /= 0, f /= 0, e /= 0,
a [o,n,e] + a [n,i,n,e] + a [t,w,e,n,t,y] + a [f,i,f,t,y] == a [e,i,g,h,t,y]]
where
a xs = foldl (\s i -> 10*s + i) 0 xs

main = print $ head $ t602

612:デフォルトの名無しさん
09/08/03 21:18:14
>>606
-- Haskell で.foldl1 は末尾再帰だから許して

comb n r | r == 0 = 1
| n == r = 1
| otherwise = comb (n-1) r + comb (n-1) (r-1)

fact n = foldl1 (*) [1..n]
comb' n r = fact n `div` (fact r * fact (n-r))

main = print $ comb' 4 2

613:デフォルトの名無しさん
09/08/04 08:59:20
スレリンク(tech板:794番)
# 【質問テンプレ】
# [1] 授業単元:アルゴリズムとデータ構造
# [2] 問題文(含コード&リンク):ハッシュ(チェイン法)を使ってkeyを検索し、
# 該当するものがあればそのdataを表示する。
# (実際には検索してkeyとdataを返すまでです)
# 詳しくはこちらで URLリンク(ime.nu)
# URLリンク(kansai2channeler.hp.infoseek.co.jp)


614:デフォルトの名無しさん
09/08/04 09:02:27
>>613
% Prolog でハッシュといえば述語のこと。

t613(Key,Data) :- 'KeyAndData'(Key,Data).

615:デフォルトの名無しさん
09/08/05 12:35:12
スレリンク(tech板:812番)
# 続けて申し訳ありません
# [1] 授業単元:プログラミング演習
# [2] 問題文(含コード&リンク):
#
# 引数に度(degree)をとるsin_degree関数を作成しなさい。
# math.hで宣言されているsin関数を使用せずに自作すること。

616:デフォルトの名無しさん
09/08/05 12:52:14
>>615
% Prolog

sin_degree(_角度,X) :-
  R is (_角度 / 180) * 3.14159,
  sin_degree(1,20,R,1.0,0.0,X).

sin_degree(M,N,_,_,X,X) :- M > N,!.
sin_degree(M,N,R,K,Y,X) :-
  sin_degree(M,R,1,U),
  Y2 is Y + U * K,
  K2 is K * (-1),
  M2 is M + 2,
  sin_degree(M2,N,R,K2,Y2,X).

sin_degree(0,R,X,X) :- !.
sin_degree(N,R,Y,X) :-
  Y2 is (Y * R) / N,
  N2 is N - 1,
  sin_degree(N2,R,Y2,X).


最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch