このディレクトリの索引

% 以下のサイトは # 出典 :: C言語の宿題片付けます 160代目 #400 # [1] 授業単元:C言語 # [2] 問題文(含コード&リンク): http://ime.nu/codepad.org/QdOnaWYm # # /* # ビンゴゲームを作る # # 仕様 # ・5×5のビンゴカードをint型の2次元配列として宣言する # ・ビンゴカードの数字は重複しない1〜100の乱数を作り、それから先頭の25個をビンゴカードに適用 # ・最初にビンゴカード作成に使うための重複しない100個の乱数を見やすい形で表示 # ・値を交換する処理は関数化する # ・実際のビンゴゲームのようにガラガラで1つずつ数字が出てくる # ・ガラガラは1〜100までの重複しない乱数を作る機械であり、ビンゴカード作成に用いた乱数列とガラガラで使う乱数列は別物である # ・ビンゴカード作成用の乱数とガラガラ用の乱数はヒープ領域に確保した配列に格納 # ・カードの縦、横、斜めのいずれかがそろったらゲーム終了 # */ # :- dynamic(賞品/1). ビンゴ参加者(ケイスケ). ビンゴ参加者(ユウヤ). ビンゴ参加者(タダシ). ビンゴ参加者(マッチ). ビンゴ参加者(トオル). 賞品('フェラーリ(模型)'). 賞品('コルト45(模型)'). 賞品(ティー野球セット). 賞品(武豊の使っていた鞭). 賞品(ビンゴセット). ビンゴゲーム :- findall(_ビンゴ参加者,ビンゴ参加者(_ビンゴ参加者),_ビンゴ参加者ならび), ビンゴゲーム(_ビンゴ参加者ならび). ビンゴゲーム(_ビンゴ参加者ならび) :- ゲーム参加者のビンゴカード(_ビンゴ参加者ならび,_ビンゴカードならび), 'ガラガラは1〜100までの重複しない乱数を作る機械であり、ビンゴカード作成に用いた乱数列とガラガラで使う乱数列は別物である'(_ガラガラで使う乱数列), 参加者全員がビンゴとなるまでガラガラを繰り返す(_ビンゴカードならび,_ガラガラで使う乱数列). 参加者全員がビンゴとなるまでガラガラを繰り返す([],_) :- write('ビンゴ終了\nご苦労さまでした\n'),!. 参加者全員がビンゴとなるまでガラガラを繰り返す(_参加者ビンゴカードならび,L2) :- ガラガラ(L1,_数,L2), ビンゴになったカードを探し賞品を渡してそのカードを削除(_数,_参加者ビンゴカードならび,_ビンゴになった人を削除した参加者ビンゴカードならび), 参加者全員がビンゴとなるまでガラガラを繰り返す(_ビンゴになった人を削除した参加者ビンゴカードならび,L2). '5×5のビンゴカードをint型の2次元配列として宣言する'(_ビンゴカード) :- length(_ビンゴカード,5), findall(L,( member(L,_ビンゴカード), length(L,5)), _ビンゴカード). ゲーム参加者のビンゴカード(_ビンゴ参加者ならび,_ビンゴカードならび) :- findall([_ビンゴ参加者,_ビンゴカード],( member(_ビンゴ参加者,_ビンゴ参加者ならび), 'ビンゴカードの数字は重複しない1〜100の乱数を作り、それから先頭の25個をビンゴカードに適用'(_ビンゴカード)), _ビンゴカードならび). 'ビンゴカードの数字は重複しない1〜100の乱数を作り、それから先頭の25個をビンゴカードに適用'(_ビンゴカード) :- 'ビンゴカードの数字は重複しない1〜100の乱数を作り'(L), それから先頭の25個をビンゴカードに適用(L,_ビンゴカード). 'ビンゴカードの数字は重複しない1〜100の乱数を作り'(L) :- findall(N,between(1,100,N),L1), 'ビンゴカードの数字は重複しない1〜100の乱数を作り'(100,L1,L). 'ビンゴカードの数字は重複しない1〜100の乱数を作り'(0,_,[]) :- !. 'ビンゴカードの数字は重複しない1〜100の乱数を作り'(Nth,L1,[N|R2]) :- '重複しない1〜100の乱数'(Nth,L1,N,L2), Nth_1 is Nth - 1, 'ビンゴカードの数字は重複しない1〜100の乱数を作り'(Nth_1,L2,R2). '重複しない1〜100の乱数'(Nth,L1,N,L2) :- Nth0 is random(Nth), length(L0,Nth0), append(L0,[N|R1],L1), append(L0,R1,L2),!. それから先頭の25個をビンゴカードに適用(L,_ビンゴカード) :- ビンゴカード(_重複しない100個の乱数ならび,_ビンゴカード). ビンゴカード(_重複しない100個の乱数ならび,_ビンゴカード) :- _ビンゴカード=[[_,_,_,_,_],[_,_,_,_,_],[_,_,_,_,_],[_,_,_,_,_],[_,_,_,_,_]], flatten(_ビンゴカード,_重複しない100個の乱数ならび). 'ガラガラは1〜100までの重複しない乱数を作る機械であり、ビンゴカード作成に用いた乱数列とガラガラで使う乱数列は別物である'(_ガラガラで使う乱数列) :- 'ビンゴカードの数字は重複しない1〜100の乱数を作り'(_ガラガラで使う乱数列),!. ビンゴになったカードを探し商品を渡してそのカードを削除(_,[],[]). ビンゴになったカードを探し商品を渡してそのカードを削除(_数字,[[_ビンゴ参加者,_ビンゴカード_1]|R1],R2) :- 一致した数字があったら穴をあける(_数字,_ビンゴ参加者,_ビンゴカード_1,_ビンゴカード_2), ビンゴだったら賞品を渡してその人は上がり(_ビンゴカード_2,_ビンゴ参加者,R1,R2), ビンゴになったカードを探し賞品を渡してそのカードを削除(_数字,R1,R2),!. ビンゴだったら賞品を渡してその人は上がり(_ビンゴカード,_ビンゴ参加者,R,R) :- ビンゴ(_ビンゴカード), 賞品を渡す(_ビンゴ参加者),!. ビンゴだったら賞品を渡してその人は上がり(_ビンゴカード,_ビンゴ参加者,R,[[_ビンゴ参加者,_ビンゴカード]|R]) :- \+(ビンゴ(_ビンゴカード)). 一致した数字があったら穴をあける(_数字,_ビンゴカード_1,_ビンゴカード_2) :- findall(L2,( member(L,_ビンゴカード_1), 一致した場合だけ穴を開ける(_数字,L,L2)), _ビンゴカード_2). 一致した場合だけ穴を開ける(_数字,L,L2) :- append(L0,[_数字|R],L), append(L0,[穴|R],L2),!. 一致した場合だけ穴を開ける(_,L,L). ビンゴ([穴,_,_,_,_],[_,穴,_,_,_,_],[_,_,穴,_,_],[_,_,_,穴,_],[_,_,_,_,穴]) :- !. ビンゴ([_,_,_,_,穴],[_,_,_,穴,_],[_,_,穴,_,_],[_,穴,_,_,_,_],[穴,_,_,_,_]) :- !. ビンゴ(_ビンゴカード) :- member(L,_ビンゴカード), all(L,穴),!. ビンゴ(_ビンゴカード) :- 転置(_ビンゴカード,_ビンゴカード_2), member(L,_ビンゴカード_2), all(L,穴),!. 賞品を渡す(_参加者) :- retract(賞品(_賞品)), writef('%t君はビンゴになりました。賞品は %t です!\n',[_参加者,_賞品]),!. all([],_). all([A|R],A) :- all(R,A). % 以下のサイトは # [1] 授業単元:情報処理概論 # [2] 問題文(含コード&リンク):0から99の乱数を使って6×6ビンゴの表を作成しなさい。 # [3] 環境 #  [3.1] OS: WindowsXP #  [3.2] コンパイラ名とバージョン:BorlandC++ #  [3.3] 言語:C++ # [4] 期限: 10月30日まで # [5] その他の制限: # よろしくお願いします '0から99の乱数を使って6×6ビンゴの表を作成しなさい。'(_ビンゴの表) :- findall(L,( between(1,6,_), length(L,6)), _ビンゴの表), flatten(_ビンゴの表,_重複のないならび), '0から99の乱数を使って重複のないならびを作る'([],_重複のないならび). '0から99の乱数を使って重複のないならびを作る'(_重複のないならび,_重複のないならび) :- !. '0から99の乱数を使って重複のないならびを作る'(L,_重複のないならび) :- _乱数 is random(100), \+(member(_乱数,L)), '0から99の乱数を使って重複のないならびを作る'([_乱数|L],_重複のないならび). '0から99の乱数を使って重複のないならびを作る'(L,_重複のないならび) :- '0から99の乱数を使って重複のないならびを作る'(L,_重複のないならび). % 以下のサイトは # [1] 授業単元:情報処理概論 # [2] 問題文(含コード&リンク):0から99の乱数を使って6×6ビンゴの表を作成しなさい。 # [3] 環境 #  [3.1] OS: WindowsXP #  [3.2] コンパイラ名とバージョン:BorlandC++ #  [3.3] 言語:C++ # [4] 期限: 10月30日まで # [5] その他の制限: # よろしくお願いします '0から99の乱数を使って6×6ビンゴの表を作成しなさい。'(_ビンゴの表) :- findall(L,( between(1,6,_), length(L,6)), _ビンゴの表), flatten(_ビンゴの表,_重複のないリスト), '0から99の乱数を使って値を埋める'([],_重複のないリスト). '0から99の乱数を使って値を埋める'(_重複のないリスト,_重複のないリスト) :- !. '0から99の乱数を使って値を埋める'(L,_重複のないリスト) :- _乱数 is random(100), \+(member(_乱数,L)), '0から99の乱数を使って値を埋める'([_乱数|L],_重複のないリスト). '0から99の乱数を使って値を埋める'(L,_重複のないリスト) :- '0から99の乱数を使って値を埋める'(L,_重複のないリスト). % 以下のサイトは # # 値の決まらない6×6ビンゴの表を作成する # %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% '値の決まらない6×6ビンゴの表を作成する'(_ビンゴの表) :- findall(_6要素の変数リスト,( between(1,6,_), length(_6要素の変数リスト,6)), _ビンゴの表). %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% '値の決まらない6×6ビンゴの表を作成する'(_ビンゴの表) :- length(_ビンゴの表,6), '値の決まらない6×6ビンゴの表'(_ビンゴの表). '値の決まらない6×6ビンゴの表'([]). '値の決まらない6×6ビンゴの表'([_6要素の変数リスト|R]) :- length(_6要素の変数リスト,6), '値の決まらない6×6ビンゴの表'(R). %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% '値の決まらない6×6ビンゴの表を作成する'(_ビンゴの表) :- '値の決まらない6×6ビンゴの表を作成する'(6,_ビンゴの表). '値の決まらない6×6ビンゴの表を作成する'(0,[]) :- !. '値の決まらない6×6ビンゴの表を作成する'(N,[_6要素の変数リスト|R]) :- length(_6要素の変数リスト,6), N_1 is N - 1, '値の決まらない6×6ビンゴの表を作成する'(N_1,R). %%%%%%%%%%%%%%%% length/2 を使用しないと %%%%%%%%%%%%%%%%%%%%% '値の決まらない6×6ビンゴの表を作成する'(_ビンゴの表) :- '値の決まらない6×6ビンゴの表を作成する'(6,_ビンゴの表). '値の決まらない6×6ビンゴの表を作成する'(0,[]) :- !. '値の決まらない6×6ビンゴの表を作成する'(N,[_6要素の変数リスト|R]) :- '6要素の変数リストを生成する'(6,_6要素の変数リスト), N_1 is N - 1, '値の決まらない6×6ビンゴの表を作成する'(N_1,R). '6要素の変数リストを生成する'(0,[]). '6要素の変数リストを生成する'(N,[_|R]) :- N_1 is N - 1, '6要素の変数リストを生成する'(N_1,[_|R]). %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % 以下のサイトは # # 値の決まらない6×6ビンゴの表を作成する # %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% '値の決まらない6×6ビンゴの表を作成する'(_ビンゴの表) :- findall(_6要素の変数リスト,( between(1,6,_), length(_6要素の変数リスト,6)), _ビンゴの表). %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% '値の決まらない6×6ビンゴの表を作成する'(_ビンゴの表) :- length(_ビンゴの表,6), '値の決まらない6×6ビンゴの表'(_ビンゴの表). '値の決まらない6×6ビンゴの表'([]). '値の決まらない6×6ビンゴの表'([_6要素の変数リスト|R]) :- length(_6要素の変数リスト,6), '値の決まらない6×6ビンゴの表'(R). %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% '値の決まらない6×6ビンゴの表を作成する'(_ビンゴの表) :- '値の決まらない6×6ビンゴの表を作成する'(6,_ビンゴの表). '値の決まらない6×6ビンゴの表を作成する'(0,[]) :- !. '値の決まらない6×6ビンゴの表を作成する'(N,[_6要素の変数リスト|R]) :- length(_6要素の変数リスト,6), N_1 is N - 1, '値の決まらない6×6ビンゴの表を作成する'(N_1,R). %%%%%%%%%%%%%%%% length/2 を使用しないと %%%%%%%%%%%%%%%%%%%%% '値の決まらない6×6ビンゴの表を作成する'(_ビンゴの表) :- '値の決まらない6×6ビンゴの表を作成する'(6,_ビンゴの表). '値の決まらない6×6ビンゴの表を作成する'(0,[]) :- !. '値の決まらない6×6ビンゴの表を作成する'(N,[_6要素の変数リスト|R]) :- '6要素の変数リストを生成する'(6,_6要素の変数リスト), N_1 is N - 1, '値の決まらない6×6ビンゴの表を作成する'(N_1,R). '6要素の変数リストを生成する'(0,[]). '6要素の変数リストを生成する'(N,[_|R]) :- N_1 is N - 1, '6要素の変数リストを生成する'(N_1,[_|R]). %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%