このディレクトリの索引

# 出典 :: ★★ Java の宿題ここで答えます Part 68 ★★ #434 # 【 課題 】http://ime.nu/www1.axfc.net/uploader/Sc/so/49653 # レストランのメニューを表示するクラス # レベル1: 6点満点メニューを表示するだけ。ただし、各フィールドやメソッドに # 適切なコメントを記述すること。 # レベル2:7点満点キーボード入力でデザートを切り替える機能を追加。 # レベル3: 8点満点キーボード入力された値が無効な場合と有効な場合で実行結果を切り替える機能を追加。 # レベル4: 9点満点RestaurantMenu2.java という名前で、RtaurantMenu.javaの # コピーを作る。RestaurantMenu2.javaでは、mainDish, dessertという配列を # 廃止し、2次元配列menuでそれらと同等の文字列を管理する。その上で各メソッドを # 改造し、レベル3と同じ機能を持つようにする。実行結果もレベル3と同じ。 # レベル5: 10点満点メインディッシュとデザートの組み合わせからなる # セットメニューを表示するためのメソッド、showSetMenu を追加し、 # それを用いて下記の実行結果を得る。プログラム内のデザート番号入力及び # メニュー表示部分は消さずにコメントアウトしておく。 'レストラン「ピエモンテ」のメニュー表示' :- メニュー表紙表示, メニュー分類(_分類), 分類項目の表示(_分類), fail. 'レストラン「ピエモンテ」のメニュー表示'. メニュー表紙表示. 分類項目の表示(_分類) :- functor(Q,メニュー分類,1), findall(_料理名,(call(Q),arg(1,Q,_料理名)),_料理名ならび), \+(_料理名ならび=[]), length(_料理名ならび,_分類項目の料理数), _切る回数 is random mod 10, トランプを切るようにならびを切る(_切る回数,_分類項目の料理数,_料理名ならび,_切られた料理名ならび), write_formatted('\n\n\n       %t\n\n',[_分類]), 最大品数(_分類,_最大品数), メニュー明細の表示(_料理名ならび,_切られた料理名ならび,_最大品数),!. 分類項目の表示(_). メニュー明細の表示(_料理名ならび,_切られた料理名ならび,_最大品数) :- メニューに載せる料理名(_料理名ならび,_切られた料理名ならび,_最大品数,_メニューに載せる料理名), メニュー価格(_メニューに載せる料理名,_価格), write_formatted(' %-32s .... %7d 円\n',[_メニューに載せる料理名,_価格]), fail. メニュー明細の表示(_,_,_). メニューに載せる料理名(_料理名ならび,_切られた料理名ならび,_最大品数,_メニューに載せる料理名) :- member(_メニューに載せる料理名,_料理名ならび), append(L,[_メニューに載せる料理名|_],_切られた料理名ならび), length(L,Len), Len < _最大品数. メニュー価格('チーズ・トースト・ピエモンテ風',250). メニュー価格('フォンデュ・ピエモンテ風',2800). メニュー価格('チーズ入りポレンタがゆのプディング',1200). メニュー価格('ニョッキ・ピエモンテ風',600). メニュー価格('チーズ入りじゃがいものニョッキ',600). メニュー価格('アニォロッティまたはラヴィオリ・ピエモンテ風',800). メニュー価格('トリュフ入りリゾット',1400). % メニュー価格('グリーン・ソース・ピエモンテ風',_). % メニュー価格('ソース・ピエモンテーゼ',). % メニュー価格('ニンニクとアンチョビー入りソース・ピエモンテ風'). メニュー価格('チキン・コンソメのチキン・ロワイヤル入り',650). メニュー価格('野菜スープ・アスティ風',750). メニュー価格('仔牛の胃のスープ',900). メニュー価格('パンとチーズのスープ',550). メニュー価格('牛の背肉のバローロ・ワイン煮',2300). メニュー価格('仔牛肉のマレンゴ風',2200). メニュー価格('トゥルネード・フィナンシエール風',2500). メニュー価格('牛の尾肉煮込み・カヴェール風',2000). メニュー価格('カエルの足のシチュー',1600). メニュー価格('鶏肉のムース',1000). メニュー価格('鶏肉のトマトと白ブドウ酒煮',1300). メニュー価格('七面鳥の胸肉・マルサラソース',1300). メニュー価格('野うさぎ・ピエモンテ風',1400). メニュー価格('野うさぎの煮込み・マレンゴ風',1700). メニュー価格('雌雉子・シャンピニョン添え',1600). メニュー価格('雉子のトリュフ詰め',2000). メニュー価格('鳩のカブール風',1400). メニュー価格('うずらの蒸し焼き・白トリュフ添え',2000). メニュー価格('ますのピエモンテ風',1800). メニュー価格('セージ入りすずきのフライ',1800). メニュー価格('こいのマリネード',1400). メニュー価格('すずきの白ブドウ酒入り蒸し焼き',2000). メニュー価格('トリュフ入りレタスとセロリのサラダ',750). メニュー価格('トリュフ入りセロリのサラダ',700). メニュー価格('ピーマンとフンティーナ・チーズのサラダ',450). メニュー価格('バーニャ・カウダ・ソース入りピーマン',450). メニュー価格('小玉ねぎのイヴレア風',450). メニュー価格('アスパラガスのタルタル・ソースかけ',550). メニュー価格('ほうれんそうのピエモンテ風',400). メニュー価格('くりのシチュー',500). メニュー価格('クレープ・ピエモンテ風',550). メニュー価格('オムレツの白トリュフ入り、ピエモンテ風',850). メニュー価格('フォンティーナ・チーズのフライ・エッグのせ',650). メニュー価格('卵・トリノ風',450). メニュー価格('トリュフのピエモンテ風',750). メニュー価格('サクランボのバローロ・ワイン煮',400). メニュー価格('冷やしたプディング・ジアンダ風',400). メニュー価格('ベルヴェデーレ・クリーム',400). メニュー価格('ももの詰めもの・ピエモンテ風',550). % メニュー価格('サバイオーネ'). メニュー価格('コロンビアメデリンスプレモの浅炒り',450). メニュー価格('コロンビアメデリンスプレモの中炒り',450). メニュー価格('やぎのミルクを加えたカプチーノ',450). メニュー価格(' Vietti Barbera d'Asti Tre Vigne 2006',4500). メニュー価格('Gattinara 2004 Antoniolo',4500). メニュー価格('Ghemme 2003 / Antichi Vigneti di Cantalup',3800). メニュー価格('Barbaresco',3500). メニュー価格('Dekcetto d''Alba',3500). メニュー価格('Delcetto delle Langhe',2800). メニュー価格(_,100). メニュー分類(オードブル). メニュー分類(スープ). メニュー分類(パスタ). メニュー分類(ピザ). メニュー分類(サラダ). メニュー分類(米料理). メニュー分類(魚料理). メニュー分類(肉料理). メニュー分類(デザート). メニュー分類(ワイン). メニュー分類(コーヒー). 最大品数(オードブル,6). 最大品数(パスタ,8). 最大品数(サラダ,3). 最大品数(米料理,3). 最大品数(魚料理,6). 最大品数(肉料理,8). 最大品数(デザート,4). 最大品数(飲み物,6). 最大品数(コーヒー,2). 最大品数(ワイン,8). % お出しできる料理・・メニューに加える料理は一旦この述語節として定義し、後に分類する(同時に複数に分類されることもある) お出しできる料理('チーズ・トースト・ピエモンテ風'). お出しできる料理('フォンデュ・ピエモンテ風'). お出しできる料理('チーズ入りポレンタがゆのプディング'). お出しできる料理('ニョッキ・ピエモンテ風'). お出しできる料理('チーズ入りじゃがいものニョッキ'). お出しできる料理('アニォロッティまたはラヴィオリ・ピエモンテ風'). お出しできる料理('トリュフ入りリゾット'). お出しできる料理('グリーン・ソース・ピエモンテ風'). お出しできる料理('ソース・ピエモンテーゼ'). お出しできる料理('ニンニクとアンチョビー入りソース・ピエモンテ風'). お出しできる料理('チキン・コンソメのチキン・ロワイヤル入り'). お出しできる料理('野菜スープ・アスティ風'). お出しできる料理('仔牛の胃のスープ'). お出しできる料理('パンとチーズのスープ'). お出しできる料理('牛の背肉のバローロ・ワイン煮'). お出しできる料理('仔牛肉のマレンゴ風'). お出しできる料理('トゥルネード・フィナンシエール風'). お出しできる料理('牛の尾肉煮込み・カヴェール風'). お出しできる料理('カエルの足のシチュー'). お出しできる料理('鶏肉のムース'). お出しできる料理('鶏肉のトマトと白ブドウ酒煮'). お出しできる料理('七面鳥の胸肉・マルサラソース'). お出しできる料理('野うさぎ・ピエモンテ風'). お出しできる料理('野うさぎの煮込み・マレンゴ風'). お出しできる料理('雌雉子・シャンピニョン添え'). お出しできる料理('雉子のトリュフ詰め'). お出しできる料理('鳩のカブール風'). お出しできる料理('うずらの蒸し焼き・白トリュフ添え'). お出しできる料理('ますのピエモンテ風'). お出しできる料理('セージ入りすずきのフライ'). お出しできる料理('こいのマリネード'). お出しできる料理('すずきの白ブドウ酒入り蒸し焼き'). お出しできる料理('トリュフ入りレタスとセロリのサラダ'). お出しできる料理('トリュフ入りセロリのサラダ'). お出しできる料理('ピーマンとフンティーナ・チーズのサラダ'). お出しできる料理('バーニャ・カウダ・ソース入りピーマン'). お出しできる料理('小玉ねぎのイヴレア風'). お出しできる料理('アスパラガスのタルタル・ソースかけ'). お出しできる料理('ほうれんそうのピエモンテ風'). お出しできる料理('くりのシチュー'). お出しできる料理('クレープ・ピエモンテ風'). お出しできる料理('オムレツの白トリュフ入り、ピエモンテ風'). お出しできる料理('フォンティーナ・チーズのフライ・エッグのせ'). お出しできる料理('卵・トリノ風'). お出しできる料理('トリュフのピエモンテ風'). お出しできる料理('サクランボのバローロ・ワイン煮'). お出しできる料理('冷やしたプディング・ジアンダ風'). お出しできる料理('ベルヴェデーレ・クリーム'). お出しできる料理('ももの詰めもの・ピエモンテ風'). お出しできる料理('サバイオーネ'). オードブル('チーズ・トースト・ピエモンテ風'). オードブル('フォンデュ・ピエモンテ風'). オードブル('チーズ入りポレンタがゆのプディング'). オードブル('ニョッキ・ピエモンテ風'). オードブル('チーズ入りじゃがいものニョッキ'). オードブル('アニォロッティまたはラヴィオリ・ピエモンテ風'). サラダ('トリュフ入りレタスとセロリのサラダ'). サラダ('トリュフ入りセロリのサラダ'). サラダ('ピーマンとフンティーナ・チーズのサラダ'). スープ('チキン・コンソメのチキン・ロワイヤル入り'). スープ('野菜スープ・アスティ風'). スープ('仔牛の胃のスープ'). スープ('パンとチーズのスープ'). 米料理('トリュフ入りリゾット'). 肉料理('牛の背肉のバローロ・ワイン煮'). 肉料理('仔牛肉のマレンゴ風'). 肉料理('トゥルネード・フィナンシエール風'). 肉料理('牛の尾肉煮込み・カヴェール風'). 肉料理('カエルの足のシチュー'). 肉料理('鶏肉のムース'). 肉料理('鶏肉のトマトと白ブドウ酒煮'). 肉料理('七面鳥の胸肉・マルサラソース'). 肉料理('野うさぎ・ピエモンテ風'). 肉料理('野うさぎの煮込み・マレンゴ風'). 肉料理('雌雉子・シャンピニョン添え'). 肉料理('雉子のトリュフ詰め'). 肉料理('鳩のカブール風'). 肉料理('うずらの蒸し焼き・白トリュフ添え'). 魚料理('ますのピエモンテ風'). 魚料理('セージ入りすずきのフライ'). 魚料理('こいのマリネード'). 魚料理('すずきの白ブドウ酒入り蒸し焼き'). 野菜料理('バーニャ・カウダ・ソース入りピーマン'). 野菜料理('小玉ねぎのイヴレア風'). 野菜料理('アスパラガスのタルタル・ソースかけ'). 野菜料理('ほうれんそうのピエモンテ風'). 野菜料理('くりのシチュー'). デザート('サクランボのバローロ・ワイン煮'). デザート('冷やしたプディング・ジアンダ風'). デザート('ベルヴェデーレ・クリーム'). デザート('ももの詰めもの・ピエモンテ風'). コーヒー('コロンビアメデリンスプレモの浅炒り'). コーヒー('コロンビアメデリンスプレモの中炒り'). コーヒー('やぎのミルクを加えたカプチーノ'). コーヒー('エスプレッソ'). ワイン(' Vietti Barbera d'Asti Tre Vigne 2006'). ワイン('Gattinara 2004 Antoniolo'). ワイン('Ghemme 2003 / Antichi Vigneti di Cantalup'). ワイン('Barbaresco'). ワイン('Dekcetto d''Alba'). ワイン('Delcetto delle Langhe'). /* ワイン('Lessone'). ワイン('Mottalciata'). ワイン('Barbaresco'). ワイン('Delcetto delle Langhe'). ワイン('Freisa'). ワイン('Coretese'). ワイン('Muscatel'). */ ソースの味('ますのピエモンテ風',白ブドウ酒煮込み). ソースの味('すずきの白ブドウ酒入り蒸し焼き',白ブドウ酒煮込み). ソースの味('野うさぎ・ピエモンテ風',白ブドウ酒煮込み). ソースの味('牛の尾肉煮込み・カヴェール風',トマト). ソースの味('鶏肉のトマトと白ブドウ酒煮',トマト). % セットメニューに選択時に指定料理がある場合は引数に直接指定する(その料理だけは固定できる,他はあくまで候補) セットメニュー分類項目の表示(_オードブル,_スープ,_サラダ,_肉料理,_魚料理,_飲み物,_デザート) :- セットメニュー候補(_オードブル,_スープ,_サラダ,_肉料理,_魚料理,_飲み物,_デザート), write(' ピエモンテシェフとっておきのコース料理 ... 5500円\n\n'), writef('オードブル ... %t\n',[_オードブル]), writef('スープ ... %t\n',[_スープ]), writef('サラダ ... %t\n',[_サラダ]), writef('肉料理 ... %t\n',[_肉料理]), writef('魚料理 ... %t\n',[_魚料理]), writef('飲み物 ... %t\n',[_コーヒー]), writef('デザート ... %t\n',[_デザート]). セットメニュー候補(_オードブル,_スープ,_サラダ,_肉料理,_魚料理,_飲み物,_デザート) :- 肉・魚料理の選択(_肉料理,_魚料理), オードブル(_オードブル), スープ(_スープ), サラダ(_サラダ), _飲み物 = エスプレッソ, デザート(_デザート). 肉・魚料理の選択(_肉料理,_魚料理) :- 肉料理(_肉料理), 魚料理(_魚料理), ソースの味が異なる(_肉料理,_魚料理), メニュー価格(_肉料理,_肉料理の価格), メニュー価格(_魚料理,_魚料理の価格), \+(_肉料理の価格 + _魚料理の価格 >= 4000). ソースの味が異なる(_肉料理,_魚料理) :- ソースの味(_肉料理,_肉料理のソースの味), ソースの味(_魚料理,_魚料理のソースの味), \+(var(_肉料理のソースの味)), \+(var(_魚料理のソースの味)), !, \+(_肉料理のソースの味=_魚料理のソースの味). ソースの味が異なる(_,_). %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% トランプを切るようにならびを切る(0,_要素数,L,L) :- !. トランプを切るようにならびを切る(N,_要素数,L,X) :- M1 is random(_要素数), M2 is random(_要素数), swap_nth(M1,M2,L,L1), N2 is N - 1, トランプを切るようにならびを切る(N2,_要素数,L1,X). swap_nth(M,N,L1,L2) :- nth0(M,L1,A), nth0(N,L1,B), swap(A,B,L1,L2). swap(A,B,L,LX) :- append(L1,[A|L2],[B|L3],L), append(L1,[B|L2],[A|L3],LX),!. swap(A,B,L,LX) :- append(L1,[B|L2],[A|L3],L), append(L1,[A|L2],[B|L3],LX),!. append([],L2,L3,L4) :- append(L2,L3,L4). append([U|L1],L2,L3,[U|L4]) :- append(L1,L2,L3,L4). %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% :- op(250,xf,g). :- op(250,xf,kg). :- op(250,xf,cc). :- op(250,xf,羽). :- op(250,xf,個). :- op(250,xf,個分). :- op(250,xf,本分). :- op(250,xf,尾). :- op(250,xf,枚). :- op(250,xf,リットル). :- op(250,xf,串). :- op(250,xf,欠片). :- op(250,xf,切れ). :- op(250,xf,瓶). :- op(250,xf,カップ). :- op(300,fx,大匙). :- op(300,fx,小匙). :- op(250,xf,杯). :- op(250,xf,人前). レシピ(すずきの白ブドウ酒入り蒸し焼き,'海すずき(1.1kg)',6 人前,1 尾). レシピ(すずきの白ブドウ酒入り蒸し焼き,塩,6 人前,少量). レシピ(すずきの白ブドウ酒入り蒸し焼き,辛口白ブドウ酒,6 人前,400 cc). レシピ(すずきの白ブドウ酒入り蒸し焼き,バター,6 人前,25 g). レシピ(トゥルネード・フィナンシエール風,仔牛の胸腺肉,6 人前,225 g). レシピ(トゥルネード・フィナンシエール風,'塩・コショウ',6 人前,少々). レシピ(トゥルネード・フィナンシエール風,仔牛の骨の髄,6 人前,75 g). レシピ(トゥルネード・フィナンシエール風,ワインビネガー,6 人前,15 cc). レシピ(トゥルネード・フィナンシエール風,'玉ねぎのみじん切り(小)',6 人前,1 個分). レシピ(トゥルネード・フィナンシエール風,'にんじんのみじん切り',6 人前,1 本分). レシピ(トゥルネード・フィナンシエール風,'セロリのみじん切り',6 人前,1 本分). レシピ(トゥルネード・フィナンシエール風,'バター',6 人前,140 g). レシピ(トゥルネード・フィナンシエール風,'マデラ酒',6 人前,100 cc). レシピ(トゥルネード・フィナンシエール風,'酢漬けシャンピニョンの角切り',6 人前,110 g). レシピ(トゥルネード・フィナンシエール風,'キュウリのピクルスの角切り',6 人前,55 g). レシピ(トゥルネード・フィナンシエール風,'仔牛の脚から切り取った角切り',6 人前,6 切れ). レシピ(トゥルネード・フィナンシエール風,'小麦粉',6 人前,8 g). 作り方(すずきの白ブドウ酒入り蒸し焼き,1,'皮に傷をつけないように下ごしらえする。魚はきざみ目をつけて内側に塩をする。'). 作り方(すずきの白ブドウ酒入り蒸し焼き,2,'鍋にブドウ酒、バター、塩少量を入れて魚を入れ、蓋をして中火のオープンで約20分間魚がやわらかくなるまで蒸し焼きにする。'). 作り方(すずきの白ブドウ酒入り蒸し焼き,3,'魚を皿に盛り魚の背中に2~3つの切り目をつけ、上から濾した煮汁をかけてすぐ供する。').