いろんな言語で宿題ス ..
440:デフォルトの名無しさん
09/07/12 04:14:13
スレリンク(tech板:929番)
# [1] 授業単元: C言語
# [2] 問題文(含コード&リンク):
# 主語、目的語、述部が入ったデータファイルを読み込み、それらをランダムに
# 組み合わせて生成した短文を20個ファイルに出力するプログラムの作成。
# 短文の構文は必ず、「(主語)は、(目的語)(述部)。」となるようにする。
#
# 出力例:俺は、カレーが大好きだ。
#
# データファイルは以下を使用すること。
# 主語: 俺 私 あなた 彼 彼女 先生 犬のポチ 猫のタマ ライオン
# その人 政治家 ネズミ の12個
# 目的語: カレー ご飯 肉 授業 男 女 すごいもの アレ アンパン
# お金 の10個
# 述部: が大好きだ が大嫌いだ を作った をなくした が欲しい
# に全力を尽くす を新しいものに交換した ?なにそれ美味いの?
# について深く考えた を捨てた に塩をふりかけた の11個
441:デフォルトの名無しさん
09/07/12 06:02:07
>>440
% Prolog (1/2)
t440 :-
get_lines('t440_1.txt',Lines),
構造定義(Lines),
findall(_文,文(_文,[]),_文集),
'20文を選択して表示'(_文集).
'20文を選択して表示'(_文集) :-
length(_文集,Len),
Div is Len // 20,
tell('t440_2.txt'),
for(1,N,20),
Nth is N * Div,
list_nth(Nth,_文集,_選択文),
write_formatted('%t%t%t%t%t\n',[_選択文]),
N = 20,
told.
442:デフォルトの名無しさん
09/07/12 06:03:56
>>440
% Prolog (2/2)
文(_文,R) :- 主語(_文,R1),後置部(R2,R3),目的語(R2,R3),述部(R3,R4),句点(R4,R).
後置部(L,R) :- 後置詞(L,R1),読点(R1,R).
後置詞(['は'|R],R).
読点(['、'|R],R).
句点(['。'|R],R).
構造定義(Lines) :-
member(_行,Lines),
split(_行,[':',':',' ',' '],[F|L2]),
append(L3,[_],L2),
要素定義(F,L3),
fail;
true.
要素定義(F,L) :-
member(A,L),
P =.. [F,[A|R],R],
assertz(P),
fail;
true.
443:440
09/07/12 06:11:44
>>440 訂正 write_formattedの表現に誤りがありました。
'20文を選択して表示'(_文集) :-
length(_文集,Len),
Div is Len // 20,
tell('t440_2.txt'),
for(1,N,20),
Nth is N * Div,
list_nth(Nth,_文集,_選択文),
concat_atom(_選択文,_選択文文字列),
write_formatted('%t\n',[_選択文文字列]),
N = 20,
told.
444:443
09/07/12 06:12:58
>>440 ではなくて >>442 の訂正でした。
445:デフォルトの名無しさん
09/07/12 06:20:53
>>440
% Prolog ここに書き直しました。
URLリンク(nojiriko.asia)
446:デフォルトの名無しさん
09/07/12 10:36:30
>>436
% Prolog
URLリンク(nojiriko.asia)
447:デフォルトの名無しさん
09/07/12 13:52:15
スレリンク(tech板:923番)
# [1] 授業単元:プログラミング
# [2] 問題文(含コード&リンク):下に示すように,最初に整数を読み込み,
# その後,その個数だけ整数を読み込んでいき,そ
# の合計と平均を表示するプログラムを作成せよ。
# 整数は何個ですか: 6
# No.1 : 65
# No.2 : 23
# No.3 : 47
# No.4 : 9
# No.5 : 153
# No.6 : 777
# 合計値: 1074
# 平均値: 179.00
448:デフォルトの名無しさん
09/07/12 14:06:09
>>447
% Prolog
t447 :-
write('整数は何個ですか: '),
get_line(Line),
atom_to_term(Line,N,_),
整数をn個読み込む(1,N,L),
sum(L,Sum),
avg(L,Avg),
write('合計値: %t\n平均値: %t\n',[Sum,Avg]).
整数をn個読み込む(M,N,[]) :- M > N,!.
整数をn個読み込む(M,N,[_整数|R]) :-
write_formatted('No.%t: ',[M]),
get_line(Line),
atom_to_term(Line,_整数,_),
M2 is M + 1,
整数をn個読み込む(M2,N,R).
sum([],0).
sum([A|R],X) :- sum(R,Y),X is A + Y.
avg(L,X) :- length(L,Len),Len > 0,sum(L,Sum),X is Sum / Len.
449:デフォルトの名無しさん
09/07/12 15:56:25
スレリンク(tech板:946番)
# 【質問テンプレ】
# [1] 授業単元 C言語
# [2] 問題文(含コード&リンク):
# 二つのバイナリファイルの中身を比較して等しいか、等しくないかを
# 比較して結果を返す関数を作る
450:デフォルトの名無しさん
09/07/12 15:58:28
>>449
% Prolog
二つのバイナリファイルの中身を比較(_ファイル1,_ファイル2,_診断) :-
open(ファイル1,read,_ストリーム1,[type(binary)]),
open(ファイル2,read,_ストリーム2,[type(binary)]),
get_byte(_ストリーム1,A),
get_byte(_ストリーム2,B),
二つのバイナリファイルの中身を比較(_ストリーム1,_ストリーム2,A,B,_診断),
close(_ストリーム1),
close(_ストリーム2).
二つのバイナリファイルの中身を比較(_,_,-1,-1,等しい) :- !.
二つのバイナリファイルの中身を比較(_,_,A,B,等しくない) :- not(A=B),!.
二つのバイナリファイルの中身を比較(_ストリーム1,_ストリーム2,A,A,_診断) :-
get_byte(_ストリーム1,C),
get_byte(_ストリーム2,D),
二つのバイナリファイルの中身を比較(_ストリーム1,_ストリーム2,C,D,_診断).
451:デフォルトの名無しさん
09/07/12 18:03:48
スレリンク(tech板:424番)
# URLリンク(kansai2channeler.hp.infoseek.co.jp)にある
# 50コのデータを利用して
# 最大値と最小値を取り出すプログラムを以下の1,2の関数を用いて2つ作れ
# 1 return文を用いたケース
# 2 グローバル変数を用いたケース
# URLリンク(kansai2channeler.hp.infoseek.co.jp)の
# ポインタは使用不可です
#ファイル名はseiseki.txtでお願いします
# 70 56 66 45 88
# 66 85 68 55 73
# 55 65 53 67 55
# 85 72 76 58 65
# 92 70 45 73 55
# 56 57 52 62 82
# 72 62 33 85 95
# 46 95 48 72 34
# 83 42 88 92 56
# 68 65 91 82 66
452:デフォルトの名無しさん
09/07/12 18:34:55
>>451
% Prolog
整数要素ファイルの最小値・最大値(_ファイル,_最小値,_最大値) :-
get_chars(_ファイル,Chars),
concat_atom(Chars,Atom),
split(Atom,['\n',' '],L),
ならびの中の最小値・最大値(L,A,A,_最小値,_最大値).
ならびの中の最小値・最大値([],X,Y,X,Y) :- !.
ならびの中の最小値・最大値([A|R],Min,Max,_最小値,_最大値) :-
A < Min,
ならびの中の最小値・最大値(R,A,Max,_最小値,_最大値).
ならびの中の最小値・最大値([A|R],Min,Max,_最小値,_最大値) :-
A > Max,
ならびの中の最小値・最大値(R,Min,A,_最小値,_最大値).
ならびの中の最小値・最大値([_|R],Min,Max,_最小値,_最大値) :-
ならびの中の最小値・最大値(R,Min,Max,_最小値,_最大値).
453:デフォルトの名無しさん
09/07/12 18:36:57
>>452 また間違い。
整数要素ファイルの最小値・最大値(_ファイル,_最小値,_最大値) :-
get_chars(_ファイル,Chars),
concat_atom(Chars,Atom),
split(Atom,['\n',' '],[A|L]),
ならびの中の最小値・最大値(L,A,A,_最小値,_最大値).
454:デフォルトの名無しさん
09/07/12 18:48:58
>>447
StateT の練習
-- Haskell
import Control.Monad.State
import Data.Function (on)
import System.IO (hFlush, stdout)
t447 :: Int -> IO (Int,Double)
t447 m = evalStateT (t447' m 1) []
where
t447' :: Int -> Int -> StateT [Int] IO (Int,Double)
t447' m i = do
ls <- get
liftIO $ (putStr $ "No." ++ show i ++ ": ") >> hFlush stdout
s <- liftIO $ getLine
modify (++[read s])
if i == m then get >>= return . sumAndAverage else t447' m (i+1)
sumAndAverage :: [Int] -> (Int,Double)
sumAndAverage = f . foldl (\(s,l) x -> (s+x,l+1)) (0,0)
where
f :: (Int,Int) -> (Int,Double)
f (s,l) = (s, on (/) fromIntegral s l)
main = t447 6 >>= putStrLn . toString
where
toString :: (Int,Double) -> String
toString (s,a) = "sum: "++show s++"\naverage: "++show a
455:デフォルトの名無しさん
09/07/12 21:08:36
スレリンク(tech板:950番)
# 【質問テンプレ】
# [1] 授業単元: C言語
# [2] 問題文(含コード&リンク):
# 下に示すように,要素数が7 でint 型の配列に読み込んだ全要素を逆順に
# 並べ替えるプログラムを作成せよ.
#
# vx[ 0] : 58
# vx[ 1] : 32
# vx[ 2] : 17
# vx[ 3] : 46
# vx[ 4] : 22
# vx[ 5] : 73
# vx[ 6] : 69
# vx[ 0] = 69
# vx[ 1] = 73
# vx[ 2] = 22
# vx[ 3] = 46
# vx[ 4] = 17
# vx[ 5] = 32
# vx[ 6] = 58
456:デフォルトの名無しさん
09/07/12 21:14:39
>>455
% Prolog
% ここでは定義された単位節の一引数だけソートして差し替えると問題としてみよう。
URLリンク(nojiriko.asia)
457:デフォルトの名無しさん
09/07/12 23:05:14
スレリンク(tech板:957番)
# [1] 授業単元: C言語
# [2] 問題文(含コード&リンク):
# 100個の乱数を発生させ最大値、最小値、平均を求める
# また最大値、最小値それぞれ何番目にあるか答えよ
458:デフォルトの名無しさん
09/07/12 23:31:59
>>457
% Prolog
URLリンク(nojiriko.asia)
459:デフォルトの名無しさん
09/07/12 23:52:08
>>457
-- Haskell
import System.Random (getStdRandom, random)
import Control.Monad (replicateM)
import Data.List (maximumBy, minimumBy)
import Data.Function (on)
main = do
rands <- replicateM 100 (getStdRandom random :: IO Int)
let i = zip [1..] rands
putStrLn $ "(index, maximum) = " ++ show (maximumBy (compare `on` snd) i)
putStrLn $ "(index, minimum) = " ++ show (minimumBy (compare `on` snd) i)
putStrLn $ "average = " ++ show (on (/) fromIntegral (sum rands) 100)
460:デフォルトの名無しさん
09/07/13 05:00:41
スレリンク(tech板:960番)
# [1] 授業単元: プログラミング演習
# [2] 問題文(含コード&リンク):
# 下に示すように,要素数が5 でint 型の配列に、5 人の学生の身長を読み込んで、その
平均
# 身長を求めるプログラムを作成せよ。
# 身長を入力してください
# 1 番: 178
# 2 番: 175
# 3 番: 165
# 4 番: 179
# 5 番: 172
# 平均身長: 173.8
461:デフォルトの名無しさん
09/07/13 05:16:24
>>460
% Prolog
% URLリンク(nojiriko.asia)
'5 人の学生の身長を読み込んで、その平均身長を求める' :-
'5 人の学生の身長を読み込んで、'(_身長ならび),
sum(_身長ならび,_合計),
_平均身長 is _合計 / 5,
write_formatted('平均身長: %t\n',[_平均身長]),
'5 人の学生の身長を読み込んで、'(_身長ならび) :-
findall(_身長,(for(1,N番目,5),身長を得る(N番目,_身長)),_身長ならび).
身長を得る(N番目,_身長) :-
write_formatted('%t 番: ',[N番目]),
数値を得る(_身長),
_身長 > 0.0,
_身長 < 220.0,!.
身長を得る(N番目,_身長) :-
write('身長が適切な数値ではありませんでした。再入力が必要です\n'),
身長を得る(N番目,_身長).
数値を得る(_数値) :-
get_line(_改行までの文字列),
atom_to_term(_改行までの文字列,_数値,_),
number(_数値).
462:デフォルトの名無しさん
09/07/13 05:38:06
>>461 入力検査の部分を修正。
'5 人の学生の身長を読み込んで、その平均身長を求める' :-
'5 人の学生の身長を読み込んで、'(_身長ならび),
sum(_身長ならび,_合計),
_平均身長 is _合計 / 5,
write_formatted('平均身長: %t\n',[_平均身長]),
'5 人の学生の身長を読み込んで、'(_身長ならび) :-
findall(_身長,(for(1,N番目,5),身長を得る(N番目,_身長)),_身長ならび).
身長を得る(N番目,_身長) :-
write_formatted('%t 番: ',[N番目]),
数値を得る(_身長),
身長として適切な数値であるか検査する(_身長),!.
身長を得る(N番目,_身長) :-
身長を得る(N番目,_身長).
身長として適切な数値であるか検査する(_身長) :- _身長 > 0.0,_身長 < 230.0,!.
身長として適切な数値であるか検査する(_身長) :-
write_formatted('%tは身長として適切な数値ではありませんでした。再入力が必要
です\n',[_身長]),fail.
数値を得る(_数値) :-
get_line(_改行までの文字列),
atom_to_term(_改行までの文字列,_数値,_),
number(_数値).
463:デフォルトの名無しさん
09/07/13 05:40:58
>>462 もう一度書き直し。すみません。
'5 人の学生の身長を読み込んで、その平均身長を求める' :-
'5 人の学生の身長を読み込んで、'(_身長ならび),
sum(_身長ならび,_合計),
_平均身長 is _合計 / 5,
write_formatted('平均身長: %t\n',[_平均身長]),
'5 人の学生の身長を読み込んで、'(_身長ならび) :-
findall(_身長,(for(1,N番目,5),身長を得る(N番目,_身長)),_身長ならび).
身長を得る(N番目,_身長) :-
write_formatted('%t 番: ',[N番目]),
数値を得る(_身長),
身長として適切な数値であるか検査する(_身長),!.
身長を得る(N番目,_身長) :-
身長を得る(N番目,_身長).
身長として適切な数値であるか検査する(_身長) :- _身長 > 0.0,_身長 < 230.0,!.
身長として適切な数値であるか検査する(_身長) :-
write_formatted('%tは身長として適切な数値ではありませんでした。再入力が必要
です\n',[_身長]),fail.
数値を得る(_数値) :-
get_line(_改行までの文字列),
atom_to_term(_改行までの文字列,_数値,_),
number(_数値).
464:デフォルトの名無しさん
09/07/13 05:43:49
>>463
コピペの際に誤って改行してしまいましたが、Prologでは
write_formatted('%tは身長として適切な数値ではありませんでした。再入力が必要
です\n',[_身長]),fail.
のように文字列のなかで改行すると構文エラーとなります。
465:デフォルトの名無しさん
09/07/13 09:32:01
スレリンク(tech板:949番)
# 【質問テンプレ】
# [1] 授業単元: C言語
# [2] 問題文(含コード&リンク):
# URLリンク(kansai2channeler.hp.infoseek.co.jp)
# 課題:
# ・キーボードから正整数を入力し、その逆数を正確に計算し、ディスプレイに
# 表示させる。(循環小数である場合には、循環部分が分かるように表示を工夫する。)
# 内容:
# n(nは任意の正整数)の逆数を正確に計算し、計算過程で出た商、余りを逐次
# 配列に入れていく。計算途中で同じ商、余りが出たら循環小数と判定でき、
# 0が出たら割り切れると判定できる。
466:デフォルトの名無しさん
09/07/13 09:59:38
>>465
(do ((x (read) (read)) (a nil))
((or (not (integerp x)) (<= x 0)))
(setf a (cons x a))
(if (= x 1)
(format t "~A ~S~%" x a)
(format t "1/~A ~S~%" x a)))
どうぞ
467:デフォルトの名無しさん
09/07/13 13:25:57
>>465
% Prolog
URLリンク(nojiriko.asia)
468:デフォルトの名無しさん
09/07/13 13:42:10
>>465
% Prolog
逆数を正確に計算(_最大桁,_正整数,_逆数表示) :-
逆数表示(_最大桁,_正整数,[[0,1]],_逆数表示),!.
逆数表示(N,_,Y,X) :- N < 0,逆数表示(Y,[],X),!.
逆数表示(N,_整数,[[D,0]|Y],X) :- 逆数表示([[D,0]|Y],[],X),!.
逆数表示(N,_整数,[[_商,_剰余]|Y],X) :-
_商2 is _剰余 // _整数,
_剰余2 is (_剰余 mod _整数) * 10,
append(L1,[[_商2,_剰余2]|L2],[[_商,_剰余]|Y]),
append([[']...',_]|L1],[[_商2,_剰余2],['[',_]|L2],Z),
逆数表示(Z,[],X),!.
逆数表示(N,_整数,[[_商,_剰余]|Y],X) :-
_整数 > _剰余,
_剰余2 is _剰余 * 10,
N2 is N - 1,
逆数表示(N2,_整数,[[0,_剰余2],[_商,_剰余]|Y],X),!.
逆数表示(N,_整数,[[_商,_剰余]|Y],X) :-
_整数 < _剰余,
_商2 is _剰余 // _整数,
_剰余2 is (_剰余 mod _整数) * 10,
N2 is N - 1,
逆数表示(N2,_整数,[[_商2,_剰余2],[_商,_剰余]|Y],X),!.
逆数表示([],[_|X],S) :- concat_atom(['0','.'|X],S),!.
逆数表示([[A|_]|R1],Y,S) :- 逆数表示(R1,[A|Y],S).
469:デフォルトの名無しさん
09/07/13 17:49:03
スレリンク(tech板:550番)
# [1] 授業単元: Ruby演習 [2] 問題文、URLリンク(kansai2channeler.hp.infoseek.co.jp)
c i-bin/joyful/img/9426.txt
# Rubyの問題がわかりません 助けてください
#
# (1)曜日を表す英語と日本語との対応を表すハッシュwdayを定義しなさい
#
# p wday["sunday"] #=> "日曜日"
# p wday["monday"] #=> "月曜日"
# p wday["saturday"] #=> "土曜日"
#
# (2)ハッシュのメソッドを使って(1)のハッシュwdayのペアの数を数えなさい
#
# (3)eachメソッドと(1)のハッシュwdayを使って以下の文字列を出力させてくださ
い。
# 「sunday」は日曜日のことです。
# 「monday」は月曜日のことです。
#
# (4)ハッシュには配列の%wのようなものがありません。そこで、空白とタブと改行(正
規表現で定義するなら「/\uff3cs+/」)で区切られた文字列をハッシュに変換するメソ
ッドstr2hashを定義してください。
#
# p str2hash("bule 青 white 白\uff3cnred赤");
# #=> {"bule"=>"青", "white"=>"白", "red"=>"赤"}
470:デフォルトの名無しさん
09/07/14 16:41:33
スレリンク(tech板:958番)
# 【 課題 】テキストファイルから文字列5行を読み込み、別のテキストへ縦書きで書き出す
# 【 形態 】1. Javaアプリケーション(main()で開始)
# 【 期限 】7/14 am6:00
# 【 Ver 】Eclipse Version: 3.4.2
# 【 補足 】
# あいう
# かきく
# さしす
# 上記のようなテキストファイルを読み込み、
# あかさ
# いきし
# うくす
# のように別のテキストファイルに書き出す感じです。
471:デフォルトの名無しさん
09/07/14 17:02:10
>>470
% Prolog
テキストファイルから文字列5行を読み込み、別のテキストへ縦書きで書き出す(InFile,OutFile) :-
open(InFile,read,Input),
open(OutFile,write,Output),
findall(Chars,(for(1,N,5),get_line(InFile,_行),atom_chars(_行,Chars)),LL),
max(Chars,Max),
空白文字を付加して行の文字数一致させる(Max,LL,LL2),
行列の転置(LL2,LL3),
出力ファイルに書き出す(Output,LL3).
出力ファイルに書き出す(Output,[]) :- close(Output),!.
出力ファイルに書き出す(Output,[L|R]) :-
concat_atom(L,S),
write_formatted(Output,'%t\n',[S]),
出力ファイルに書き出す(Output,R).
空白文字を付加して行の文字数を一致させる(Max,LL1,LL2) :-
findall(L,(member(L1,LL1),length(L,Max),append(L1,L2,L),all(L2,' ')),LL2).
all([],_).
all([V|R],V) :- all(R,V).
472:デフォルトの名無しさん
09/07/14 17:08:27
>>470 書き直し
% Prolog URLリンク(nojiriko.asia)
テキストファイルから文字列5行を読み込み、別のテキストへ縦書きで書き出す(InFile,OutFile) :-
open(InFile,read,Input),
open(OutFile,write,Output),
findall(Chars,(for(1,N,5),get_line(InFile,_行),atom_chars(_行,Chars)),LL),
max(Chars,Max),
空白文字を付加して行の文字数一致させる(Max,LL,LL2),
行列の転置(LL2,LL3),
出力ファイルに書き出す(Output,LL3).
出力ファイルに書き出す(Output,[]) :- close(Output),!.
出力ファイルに書き出す(Output,[L|R]) :-
concat_atom(L,S),
write_formatted(Output,'%t\n',[S]),
出力ファイルに書き出す(Output,R).
空白文字を付加して行の文字数を一致させる(Max,LL1,LL2) :-
findall(L,(member(L1,LL1),length(L,Max),append(L1,L2,L),all(L2,' ')),LL2).
all([],_).
all([V|R],V) :- all(R,V).
473:デフォルトの名無しさん
09/07/14 17:31:04
スレリンク(tech板:954番)
# pascal pcpad
# 1個の自然数nを適当決めて、nチームが参加する
# リーグ戦の全試合を表示するプログラムを書きなさい。
474:デフォルトの名無しさん
09/07/14 17:33:35
>>473
% Prolog URLリンク(nojiriko.asia)
リーグ戦の全試合を表示するプログラム(N) :-
findall(M,for(1,M,N),L),
組合せ(L,2,[A,B]),
write_formatted('%t-%t\n',[A,B]),
fail;
true.
組合せ(X,1,[A]) :-
member(A,X).
組合せ([A|Y],N,[A|X]) :-
N > 1,
M is N - 1,
組合せ(Y,M,X).
組合せ([_|Y],N,A) :-
N > 1,
組合せ(Y,N,A).
475:デフォルトの名無しさん
09/07/15 04:06:15
スレリンク(tech板:103番)
# 【質問テンプレ】
# [1] 授業単元: C言語演習
# [2] 問題文(含コード&リンク): URLリンク(kansai2channeler.hp.infoseek.co.jp)
in/joyful/img/9753.txt
# 2.入力された年月の1日が何曜日かを調べる。
# 曜日のチェックはZellerの公式を使用する。Zellerの公式は、
#
# 曜日を表す値=(y + [ y / 4 ] - [ y / 100 ] + [ y / 400 ] + [ (( 13 * m ) +
8 ) / 5 ] + d ) % 7
#
# ※ 上記の公式中の y は年、 m は月、 d は日を表し、
# []はその数を越えない最大の整数を表す。(例: [13.6]は13
になる)
#
# で、曜日を表す値は次のようになっている。
#
# 日曜日 = 0, 月曜日 = 1, 火曜日 = 2, 水曜日 = 3,
#
# 木曜日 = 4, 金曜日 = 5, 土曜日 = 6,
#
# ※但し、1月と2月は前年の13月14月として計算するものとする。
476:デフォルトの名無しさん
09/07/15 04:18:51
>>475
% Prolog
'Zellerの公式'(_年,1,_日,_曜日) :-
_前年 is _年 - 1,
'Zellerの公式'(_前年,13,_日,_曜日),!.
'Zellerの公式'(_年,2,_日,_曜日) :-
_前年 is _年 - 1,
'Zellerの公式'(_前年,14,_日,_曜日),!.
'Zellerの公式'(_年,_月,_日,_曜日) :-
_年=Y,_月=M,_日=D,
_曜日を表す値 is (Y + Y // 4 - Y // 100 + Y // 400 + ((( 13 * M ) + 8 ) // 5 ) + D ) mod 7,
曜日を表す値(_曜日を表す値,_曜日).
曜日を表す値(1,月曜).
曜日を表す値(2,火曜).
曜日を表す値(3,水曜).
曜日を表す値(4,木曜).
曜日を表す値(5,金曜).
曜日を表す値(6,土曜).
曜日を表す値(7,日曜).
477:デフォルトの名無しさん
09/07/15 07:09:47
>>476 まちがえた!
% Prolog URLリンク(nojiriko.asia)
曜日を表す値(0,日曜).
曜日を表す値(1,月曜).
曜日を表す値(2,火曜).
曜日を表す値(3,水曜).
曜日を表す値(4,木曜).
曜日を表す値(5,金曜).
曜日を表す値(6,土曜).
478:デフォルトの名無しさん
09/07/15 10:54:19
スレリンク(tech板:107番)
# [1] 授業単元: デジタル信号処理
# [2] 問題文(含コード&リンク): 2つのテキストファイル(double型)を読み込み、
# 畳み込み和を計算し、別のファイルに出力せよ。
479:デフォルトの名無しさん
09/07/15 11:02:01
>>478
% Prolog URLリンク(nojiriko.asia)
t478(N,Infile1,Infile2,Outfile) :-
get_lines(Infile1,L1),
get_lines(Infile2,L2),
findall(F1,(member(A1,L1),atom_to_term(A2,F1,_)),_フィルタならび),
findall(F2,(member(A2,L2),atom_to_term(A2,F2,_)),_サンプルならび),
畳み込み和(N,_フィルタならび,_サンプルならび,_畳み込み和),
畳み込み和出力(Outfile,_畳み込み和).
畳み込み和(N,_フィルタならび,_サンプルならび,_畳み込み和) :-
length(L,N),
append(L,_,_サンプルならび),
reverse(_サンプルならび,_逆順サンプルならび),
畳み込み和の二(_フィルタならび,_逆順サンプルならび,_畳み込み和).
畳み込み和の二([],_,0.0) :- !.
畳み込み和の二([A|R1],[B|R2],X) :-
畳み込み和の二(R,R2,Y),
X is A * B + Y.
畳み込み和出力(Outfile,_畳み込み和) :-
open(Outfile,write,Output),
write_formatted(Output,'%t\n',[_畳み込み和]),
close(Output).
480:デフォルトの名無しさん
09/07/15 18:41:51
OSでSoundBlaster16のリセットをしたいのだが、どうもなかなかリセットが上手くいかない。
できればアセンブラのサンプルコード欲しいのだが誰か頼む
・SB16の詳細
URLリンク(faculty.petra.ac.id)
・ここにもサンプルコードがあるけど、どうも何をやっているのか良く分からない・・
URLリンク(www.nondot.org)
481:デフォルトの名無しさん
09/07/16 11:50:34
>>473
(defun comb (lim)
(do ((n1 1 (1+ n1)) (c 0))
((> n1 lim))
(do ((n2 (1+ n1) (1+ n2)))
((> n2 lim))
(setf c (1+ c))
(format t "no.~5A ~A - ~A~%" c n1 n2))))
;20チームだと↓
(comb 20)
482:デフォルトの名無しさん
09/07/16 17:02:20
>>473
-- Haskell
comb :: Int -> [(Int,Int)]
comb n = comb' [1..n]
where
comb' :: [Int] -> [(Int,Int)]
comb' [] = []
comb' (x:xs) = map ((,) x) xs ++ comb' xs
main = print $ comb 3
483:デフォルトの名無しさん
09/07/16 17:29:23
>>469
% Prolog これは遊びです。フラットな単位節でなくこのような形式で定義する積極的な理由は見つかりません。
URLリンク(prolog.asia)
484:483
09/07/16 17:31:06
>>483 間違えました。
URLリンク(nojiriko.asia)
でした。
485:デフォルトの名無しさん
09/07/16 17:39:20
>>475
% Prolog (1)-(4) まで全て定義おわりました。
URLリンク(nojiriko.asia)
486:デフォルトの名無しさん
09/07/17 00:10:16
| ?- search(hanoi,S,G,P,A).
:- [search].
/* 初期状態と目標状態 これは、2枚のハノイ */
initial_state(hanoi, [[1,2,3],[],[]]).
goal_state(hanoi, [[],[],[1,2,3]]).
%------------------ ハノイの塔
operator(hanoi, left_to_right(Disk), [[Disk|RestA], B, C], [RestA, B, [Disk|C]]) :-
con2(Disk, C).
operator(hanoi, left_to_center(Disk), [[Disk|RestA], B, C], [RestA, [Disk|B], C]) :-
con2(Disk, B). % 移動先で制約2を満たしていることをチェック
operator(hanoi,center_to_left(Disk), [A, [Disk|RestB], C], [[Disk|A], RestB, C]) :-
con2(Disk, A).
operator(hanoi, center_to_right(Disk), [A, [Disk|RestB], C], [A, RestB, [Disk|C]]) :-
con2(Disk, C).
%-- 制約2
% 一番上にあるディスクよりも、小さいことを検査
/* ?- con2(2, [1,3]).
?- con2(1, [2,3]). */
コレを完成させるにはどうすればいいのでしょうか?
487:デフォルトの名無しさん
09/07/17 02:52:13
スレリンク(tech板:157番)
# [1] 授業単元: C++
# [2] 問題文(含コード&リンク):
# URLリンク(kansai2channeler.hp.infoseek.co.jp)
#
# 正数による正方行列のうち、全ての行、列、斜め列の合計が同じであり、
# かつ2回以上使用される数字が存在しないものを魔方陣という。
# 下図に示すa,bに数値を設定したときに、1〜9の整数によって構成される魔方陣を
# 出力するプログラムを作成せよ。
# 但し、魔方陣が作成不可能な(a,b)の組み合わせが設定された場合は、「Impossible」
# と出力するとする。
#
# la_lb_l__l
# l__l__l__l
# l__l__l__l
#
488:デフォルトの名無しさん
09/07/17 02:53:14
スレリンク(tech板:160番)
# [1]プログラミング
# [2] 課題
# 言語: C もしくは C++ 言語
#
# (1)以下のプログラムを作成しなさい(数当てゲーム)
#
# *画面上に「好きな数字を入力してください」と表示して、キーボードからの入力を
# 待つ。
# 変数aを定義して、10までの乱数を発生させて変数aに代入する。
# キーボードからの入力があれば、先に発生させた乱数と一致しているならば
# 「あたり!!」と表示する。
# 一致していなければ「残念乱数はxxです」と表示する(xxには変数aの中身を
# 表示する)
489:デフォルトの名無しさん
09/07/17 03:28:41
>>488
% Prolog
数当てゲーム :-
repeat,
_a is ramdom mod 10 + 1,
write('好きな数字を入力してください '),
get_line(Line),
atom_to_term(Line,N,_),
数当てゲーム診断(_a,N),
Line = end_of_file.
数当てゲーム診断(A,A) :-
write('あたり!!\n').
数当てゲーム診断(_,B) :-
not(integer(B)),
write('入力されたのは整数ではありません\n').
数当てゲーム診断(A,N) :-
not(A == N),
write_formatted('残念乱数は%tです\n',[A]).
490:デフォルトの名無しさん
09/07/17 07:27:53
>>487
% Prolog
URLリンク(nojiriko.asia)
491:デフォルトの名無しさん
09/07/17 10:30:13
>>486
ハノイの塔の課題をその仕様通り自然に定義していったらどうなるか?
興味がありますが、私が何か書き込めるまでにはもう少し時間が必要なので、
最小サンプルで確認することによって、ディスクの大小順序問題を
スキップしてしまっている最もよく知られたアルゴリズムによる
プログラム例を URLリンク(nojiriko.asia) に示します。
問題を直感的に理解するには
「Prologプログラミング入門」安部憲広著 共立出版刊 の29頁 図3.3
がよいと思います。
492:デフォルトの名無しさん
09/07/17 12:40:40
スレリンク(tech板:970番)
# 配列に関する基本問題
# フィールド int型の配列numberのみ
# コンストラクタ 引数で与えられたScannerから整数を順次読み取る、
# 最初に読み取った整数を配列サイズとみなし、int型の配列を生成し
# numberで参照する
# その後整数を読み取ってnumber[0],number[1]、・・・・と順に代入していき、
# 配列サイズ分だけ読み取る
# number中の全要素,最大値、最小値を表示
493:デフォルトの名無しさん
09/07/17 12:46:04
>>492
% Prolog こういう手続き的なのも可能。
t492 :-
get_integer(N),
length(L,N),
for(1,M,N),
get_integer(I),
list_nth(M,L,I),
M = N,
max(L,Max),
min(L,Min),
write_formatted('全要素 = %t\n最大値 = %t\n最小値 = %t\n',[L,Max,Min]).
get_integer(N) :-
repeat,
get_line(Line),
atom_to_term(Line,N,_),
integer(N).
494:デフォルトの名無しさん
09/07/17 14:33:32
スレリンク(tech板:900番)
# 3つの自然数の合計が10になるような組み合わせを
# すべて列挙するプログラムを書け
# 1+1+8と1+8+1のように並び順が異なるだけのものは
# 同一と考え、重複して出力しないようにすることが望ましい
495:デフォルトの名無しさん
09/07/17 14:37:18
>>494
% Prolog
t494 :-
重複組合せ([1,2,3,4,5,6,7,8,9],3,[A,B,C]),
10 is A + B + C,
write_formatted('%t + %t + %t\n',[A,B,C]),
fail.
t494.
重複組合せ(X,1,[A]) :-
member(A,X).
重複組合せ([A|Y],N,[A|X]) :-
N > 1,
M is N - 1,
重複組合せ([A|Y],M,X).
重複組合せ([_|Y],N,A) :-
N > 1,
重複組合せ(Y,N,A).
496:デフォルトの名無しさん
09/07/17 14:59:38
スレリンク(tech板:902番)
# 個数Nが与えられたとき
# N個の自然数の合計が10になるような組み合わせをすべて列挙する
# プログラムを書け
497:デフォルトの名無しさん
09/07/17 15:05:56
>>496
% Prolog
t496(N) :-
重複組合せ([1,2,3,4,5,6,7,8,9,10],N,L),
sum(L,10),
concat_atom(L,' + ',S),
write_formatted('%t\n',[S]),
fail.
t496(_).
sum([],0) :- !.
sum([A|R],X) :- sum(R,Y),X is A + Y.
498:デフォルトの名無しさん
09/07/17 15:07:10
>>496 書き直し。
% Prolog
t496(N) :-
重複組合せ([1,2,3,4,5,6,7,8,9,10],N,L),
sum(L,10),
concat_atom(L,' + ',S),
write_formatted('%t\n',[S]),
fail.
t496(_).
sum([],0) :- !.
sum([A|R],X) :- sum(R,Y),X is A + Y.
499:デフォルトの名無しさん
09/07/17 21:28:54
>>488
import System.Random (getStdRandom, randomR)
import qualified System.IO.UTF8 as U
main = do
a <- getStdRandom $ randomR (0,10) :: IO Int
c <- getLine
U.putStrLn $ if (read c) == a then "あたり!!" else "残念乱数は" ++ show a ++ "です"
500:デフォルトの名無しさん
09/07/17 22:02:58
>>487
import Control.Monad (guard)
import Data.List (permutations)
t487 :: Int -> Int -> [[Int]]
t487 a b = do
xs@[c,d,e,f,g,h,i] <- permutations $ filter (\x -> and [x /= a, x /= b]) [1..9]
let n = a+b+c
guard $ and [d+e+f == n, g+h+i == n, a+d+g == n, b+e+h == n, c+f+i == n, a+e+i == n, c+e+g == n]
return (a:b:xs)
main = let a = t487 8 1 in if null a then putStrLn "Impossible" else mapM_ printer a
where
printer :: [Int] -> IO ()
printer [] = return ()
printer (a:b:c:xs) = print [a,b,c] >> printer xs
501:デフォルトの名無しさん
09/07/17 22:26:05
>>492
import Control.Monad (foldM)
t492 :: Int -> IO (Int,Int)
t492 n = foldM f (maxBound :: Int,minBound :: Int) [1..n]
where
f (a,b) _ = do
s <- getLine
let n = read s
return (min a n, max b n)
main = getLine >>= t492 . read >>= print
502:デフォルトの名無しさん
09/07/17 22:53:38
スレリンク(tech板:175番)
# [1] 授業単元:プログラミング
# [2] 問題文(含コード&リンク):
#
# 下に示すように,キーボードから二つの文字列を読み込み,どちらの文字列が
# 何文字長いか
# を表示するプログラムを作成せよ.なお,二つの文字列が同じ長さならば,
# 「二つの文字列は同じ長さです.」と表示させること.
#
# 文字列A : Good
# 文字列B : Morning
# 文字列B の方が3 文字長いです.
503:デフォルトの名無しさん
09/07/17 22:55:55
>>502
% Prolog URLリンク(nojiriko.asia)
入力文字列長の比較 :-
write('文字列A ? '),
get_line(A),
write('文字列B ? '),
get_line(B),
名前付き文字列長さの診断(文字列A,A,文字列B,B,_診断),
write_formatted('%t\n',[_診断).
名前付き文字列長の診断(_名前1,_文字列1,_名前2,_文字列2,_診断) :-
atom_chars(_文字列1,L1),
atom_chars(_文字列2,L2),
length(L1,_長さ1),
length(L2,_長さ2),
_長さの差 is _長さ1 - _長さ2
名前付き文字列長の診断の二(_名前1,_名前2,_長さの差,_診断),!.
名前付き文字列長の診断の二(_,_,0,'二つの文字列は同じです。') :- !.
名前付き文字列長の診断の二(_名前1,_名前2,_長さの差,_診断) :-
_長さの差 > 0,
concat_atom([_名前1,の方が,_長さの差,文字長いです。],_診断),!.
名前付き文字列長の診断の二(_名前1,_名前2,_長さの差,_診断) :-
_長さの差 < 0,
_長さの差1 is abs(_長さの差),
concat_atom([_名前2,の方が,_長さの差1,文字長いです。],_診断).
504:503
09/07/17 23:01:55
>>503 訂正
名前付き文字列長さの診断(文字列A,A,文字列B,B,_診断),
->
名前付き文字列長の診断(文字列A,A,文字列B,B,_診断),
505:503
09/07/17 23:32:27
スレリンク(tech板:973番)
# 課題 URLリンク(uploaders.ddo.jp)
#
# 【 形態 】1. Javaアプリケーション(main()で開始)
# 【 GUI 】制限なし
# 【 期限 】7月21日
# 【 Ver 】1.6.0_11
#
# zipフォルダに詳細ファイルを入れました
506:デフォルトの名無しさん
09/07/17 23:35:14
>>505
% Prolog URLリンク(nojiriko.asia)
rev_str(X,Y) :- reverse_atom(X,Y).
reverse_atom(X,Y) :-
atom_chars(X,L),
reverse(L,L2),
atom_chars(Y,L2).
507:デフォルトの名無しさん
09/07/17 23:49:23
>>494
>>496
import Data.List (sort)
h :: (Ord a) => Int -> [a] -> [[a]]
h 1 xs = map (\ls -> [ls]) xs
h n xs = concat $ map (\x -> map (\ys -> x:ys) (h (n-1) (filter (>= x) xs))) xs
t496 :: Int -> [[Int]]
t496 n = filter ((==10) . sum) $ h n [1..9]
main = print $ t496 3
508:デフォルトの名無しさん
09/07/18 00:05:10
>>502
import System.IO (hFlush, stdout)
import qualified System.IO.UTF8 as U
main = do
U.putStr "文字列A: " >> hFlush stdout
a <- getLine
U.putStr "文字列B: " >> hFlush stdout
b <- getLine
let n = length a
let m = length b
U.putStrLn $ case compare n m of
GT -> "文字列Aの方が" ++ show (n-m) ++ "文字長いです"
LT -> "文字列Bの方が" ++ show (m-n) ++ "文字長いです"
EQ -> "二つの文字列は同じ長さです"
509:デフォルトの名無しさん
09/07/18 00:21:54
スレリンク(tech板:904番)
# [課題]
# ・23本のマッチ棒からなる山があり,2人のプレーヤが山から交互にマッチ棒を
# 取り除く
# ・一度に取ることのできるマッチ棒は1から3本
# ・山を空にしたプレーヤが勝ち
# 人間2人でこのゲームを行なうプログラムを作成せよ.
#
# プログラムでは各プレーヤの手がルールに反していないかどうかのチェックと,
# 勝負がついたかどうかのチェックを行なうこと。
# また,最初に山にある本数と,各回に取ることができる最大の本数をプログラムの
# 最初に変数にセットしておき,そこを変えるだけで本数の変化に対応できるような
# プログラムにすること。
510:デフォルトの名無しさん
09/07/18 00:24:37
>>509
% Prolog
URLリンク(nojiriko.asia)
511:デフォルトの名無しさん
09/07/18 00:42:42
>>491さん
暇になったらお願いします
512:493
09/07/18 05:40:06
>>493 大間違い! これではリストに整数が貯まらない。再帰はしかたない。
t492 :-
get_integer(N),
length(L,N),
t492(L),
max(L,Max),
min(L,Min),
write_formatted('全要素 = %t\n最大値 = %t\n最小値 = %t\n',[L,Max,Min]).
t492([]) :- !.
t492([I|R]) :-
get_integer(I),
t492(R).
get_integer(N) :-
repeat,
get_line(Line),
atom_to_term(Line,N,_),
integer(N).
% バックトラックすると値の束縛は解かれてしまうから。
513:デフォルトの名無しさん
09/07/18 17:34:59
これまでの Prolog による回答の索引を作りました。
URLリンク(nojiriko.asia)
514:デフォルトの名無しさん
09/07/18 18:08:40
Prologで盛り上がっているのは、あんた一人だけだよ
515:デフォルトの名無しさん
09/07/18 18:11:20
prolog恐ろしす・・・
516:デフォルトの名無しさん
09/07/18 19:08:20
スレリンク(tech板:196番)
# [1] 授業単元:プログラミング論
# [2] 問題文:入力ストリームから読み込んだ文字列を、データベースに格納する前に
# スタックに一時的に格納するプログラムを作成する
# このときデータをまとめたデータ文字列を一つずつスタックへプッシュしたり
# ポップしたりする過程が分かるプログラムを作成する。
# なおスタックを実現するライブラリはスタックのための別のヘッダにまとめる
#
# [プログラムの例]
# 入力ストリームから読み込んだデータ文字列をスタックへプッシュしたり
# ポップしたりするたびにデータベースに格納された全データを表示する。
517:デフォルトの名無しさん
09/07/19 05:02:52
>>516
% Prolog URLリンク(nojiriko.asia)
t516(Instream,Stack1,Stack2) :-
get_code(Instream,Code),
t516(Instream,Code,Stack1,Stack2).
t516(Instream,-1,Stack1,Stack2) :-
t516_popall(Stack1,Stack3,[],L),
atom_codes(Atom,L),
assertz(database(Atom)),!.
t516(Instream,10,Stack1,Stack2) :-
t516_popall(Stack1,Stack3,[],Codes),
atom_codes(Atom,Codes),
assertz(database(Atom)),
get_code(Instream,Code),
t516(Instream,Code,Stack3),!.
t516(Insteam,A,Stack1,Stack2) :-
push(A,stack1,Stack3),
get_code(Instream,B),
t516(Instream,B,Stack3,Stack2).
t516_popall(Stack,Stack,X,X) :- empty(Stack),!.
t516_popall(Stack1,Stack2,Y,X) :-
pop(A,Stack1,Stack3),
t516_popall(Stack3,Stack2,[A|Y],X).
empty([]) :- write('stack empty :: []\n\n').
push(A,Stack,[A|Stack]) :- write_formatted('push:%t :: %t --> %t\n',[A,Stack,[A|Stack]]).
pop(A,[A|Stack],Stack) :- write_formatted('pop:Pop :: %t --> %t Pop=%t\n',[[A|Stack],Stack,A]).
518:デフォルトの名無しさん
09/07/19 06:25:56
>>514
チュートリアルの題材を求めるのが狙いなので、他の言語の人の
書き込みを待たずに進めてしまってちょっと申し訳けない。
Prologの場合は、低水準のコードにサイト上でなかなか出会えないと
いうことがあって、そこが初心者にとって辛いところです。
そこらあたりの欠落を些かでも埋められればと書き込んでいます。
繰り返し、いろんな表記法で、できれば螺旋状に発展していければ
おもしろいと思うのですが、間違いの訂正に数レスとられることが
多くて、1000スレまでの間では貧弱なものにしかなりそうもない。
それにしても、「C/C++の宿題片付けます 12*代目」の方々には感謝です。
519:デフォルトの名無しさん
09/07/19 13:34:31
スレリンク(tech板:213番)
# [1] 授業単元:プログラミング
# [2] 問題文(含コード&リンク):
# 下に示すように,キーボードから文字列を読み込み,その文字列が
# 回文(前から読んでも後ろから読んでも同じ)かどうかを判定するプログラムを
# 作成せよ.なお,入力する文字列は半角の英数字および記号のみと仮定してよい.
#
# 文字列を入力してください: abcba
# 回文です.
520:デフォルトの名無しさん
09/07/19 13:41:43
>>519
% Prolog
回文読み込み :-
get_char(C),
回文読み込み(C,[],X,X),
write('回文です\n').
回文読み込み('\n',X,X,[]).
回文読み込み(C,Y,X,[C|R]) :-
get_char(C2),
回文読み込み(C2,[C|Y],X,R).
521:デフォルトの名無しさん
09/07/21 03:00:05
連休見なかったらC/C++の宿題片付けますスレが60も進んでしまった トホホ
522:デフォルトの名無しさん
09/07/21 09:30:44
(labels ((str-input nil
(format t "文字列を入力してください: ")
(read-line)))
(do ((l (str-input) (str-input)))
((= (length l) 0))
(if (equal l (reverse l))
(format t "回文です~%")
(format t "回文ではありません~%"))))
こんな感じです
523:デフォルトの名無しさん
09/07/21 12:23:09
スレリンク(tech板:292番)
# [1] 授業単元:プログラミングI
# [2] 問題文(含コード&リンク):
# typedef struct node *Tree;
# typedef struct node{
# int data;
# Tree left_subtree;
# Tree right_subtree;
# }Node;
#
# 2分木の大きさ(節点の個数)を調べて返す関数
# int size(Tree t)を定義せよ
524:デフォルトの名無しさん
09/07/21 12:26:07
スレリンク(tech板:291番)
# [1] 授業単元:コンピュータリテラシー
# [2] 問題文(含コード&リンク):問題文と参考は以下です
# URLリンク(kansai2channeler.hp.infoseek.co.jp)
# ・試験の過程を記録
# 1,番号、得点を入力したあと平均点を計算
# 2,番号順と得点順に並べ替え(ifを使いどちらか選択できるようにする)
# 3,番号、得点、平均との差を出力
# 以上のプログラムを作成
525:デフォルトの名無しさん
09/07/21 12:32:04
>>523
(define (nodenum t)
(cond ((not (pair? t)) 0)
((or (not (pair? (cdr t))) (not (pair? (cddr t)))) "error:not a binary tree")
(else (+ 1 (nodenum (cadr t)) (nodenum (caddr t))))))
(nodenum '(1 leaf leaf)) ;1
(nodenum '(1 'leaf)) ;error
(nodenum '(1 (2 leaf leaf) (3 leaf (4 leaf leaf)))) ;4
526:デフォルトの名無しさん
09/07/21 12:44:29
>>524
(define bt '((1 60) (3 75) (4 100) (2 80)))
(define (average bt) (exact->inexact (/ (fold + 0 (map cadr bt)) (length bt))))
(define (sorter kind bt)
(cond ((eq? kind 'bangou) (sort bt (lambda (x y) (< (car x) (car y)))))
((eq? kind 'tokuten) (sort bt (lambda (x y) (> (cadr x) (cadr y)))))
(else "designate sort kind")))
(define (output bt)
((lambda (ave)
(map (lambda (x)
(print "bangou:" (car x))
(print "tokuten:" (cadr x))
(print "heikin_diff:" (- (cadr x) ave))
(newline)) bt))
(average bt)))
(average bt)
(sorter 'bangou bt)
(sorter 'tokuten bt)
(output bt)
527:デフォルトの名無しさん
09/07/21 12:57:44
スレリンク(tech板:256番)
# [1] 授業単元:プログラミング
# [2] 問題文(含コード&リンク):
# ファイルの1行目に2行目以降の各行に含まれる文字列の数が記述され,
# 2行目以降はその数の不定長文字列が空白で区切られているような入力
# ファイルを読み込み,各行を以下に示す構造体の単方向連結リストに
# 保存するプログラムを作成せよ.ここでは,attributes が1行分のデータ
# を保持する.
# struct t_list {
# char **attributes;
# struct t_list *next;
# };
# またにはソースファイルには,生成した単方向連結リストの内容を
# 標準出力に出力する関数 print_tlist を含むものとしprint_tlist により各行
# に含まれる文字列を出力するものとする.動作確認には,以下のテキストを用いよ.
# なお,入力ファイル名はコマンドライン
# 引数で指定するものとし,入力ファイルがオープンできなかった場合の処理も
# 含めること.また,プログラム自身を除く引数の数が0個,
# もしくは2個以上の場合は,何もせず適切なメッセージを出力して終了するものとする
# 入力ファイル:URLリンク(www.uploda.tv)
528:デフォルトの名無しさん
09/07/21 14:47:09
>>523
% Prolog
二分木の総節数([],0).
二分木の総節数(_節,_節の大きさ) :-
節(_節,_左枝,_右枝),
二分木の総節数(_左枝,_左枝の大きさ),
二分木の総節数(_右枝,_右枝の大きさ),
_節の大きさ is _左枝の大きさ + _右枝の大きさ + 1.
529:デフォルトの名無しさん
09/07/21 15:36:10
>>524
% Prolog
URLリンク(nojiriko.asia)
次ページ最新レス表示スレッドの検索類似スレ一覧話題のニュースおまかせリスト▼オプションを表示暇つぶし2ch
4630日前に更新/314 KB
担当:undef