![]()
平成18年 春期 基本情報技術者 午後 問12
問12 Java次の Java プログラムの説明及びプログラムを読んで,設問に答えよ。 〔プログラムの説明〕 トランプを用いた一人遊びのゲームを実行するプログラムである。 ゲームのルールは,次のとおりである。 (1) トランプは,スペード,ハート,ダイヤ及びクラブの 4 種類のスートがあり, 各スートは A(エース),2 〜 10,J(ジャック),Q(クイーン)及び K(キング)の 1 〜 13 の位(ランク)を表す 13 枚のカードからなる。 このゲームでは合計 52 枚 のカードを使用し,スートは区別しない。 (2) 52 枚のカードを,1 枚ずつ表を向けて横に並べていく。 4 枚並べたら,その下の列に移り,再び左端から横に並べる。 カードを並べていくところを場と呼び,横の並びを列と呼ぶ。 (3) 図に示すとおり,(2) で 1 枚並べるごとに,縦,横,
斜めに隣り合ったカードが同じ位であるかどうかを調べ,
同じ位のカードの組み(ペア)ができた場合は,
そのペア(図中の (4) (3) の操作を隣り合うカードの位が全部異なるようになるまで繰り返す。
(5) (2) 〜 (4) の操作を手持ちのカードがなくなるまで繰り返す。 (6) 手持ちのカードがなくなったときに,すべてのカードが場から取り除かれると上がりである。 クラス Card は,トランプのカードを表す。 クラスの初期化のとき,A(エース)〜 K(キング)の位に相当する Card のインスタンスを 4 種類のスート分生成して。 Card の配列 cards に格納する。 Card のインスタンスは不変であり,1 枚のカードに必ず同一のインスタンスが対応する。 例えば,ハートのエースを表す Card のインスタンスは一つしか存在しない。 クラスメソッド newDeck は,cards をランダムな順番に並べ替えた Card の配列を トランプの一山として返す。 クラス Game は,ゲームを実行するプログラムである。List のインスタンス list がトランプを並べていく場を表し,トランプの山を表す deck から 1 枚ずつ list に追加し,その都度メソッド checkAndRemove を呼び出して同じ位の 隣り合うカードのペアを取り除く。 クラス java.util.Random は,乱数を生成するためのクラスである。メソッド nextInt(int n) は,範囲 0 〜 n−1 の乱数を int 型で返す。 インタフェース java.util.List は,リスト構造を表し,各要素はインデックス で指定される。リストの最初の要素は,インデックスの値 0 で指定される。メソッド add(Object obj) は,リストの最後にオブジェクト obj を追加する。メソッド get(int index) は,index で指定された要素のオブジェクトを返す。メソッド remove(int index) は,index で指定された要素のオブジェクトを削除し, index + 1 以降にオブジェクトがあれば,それらをシフトして空きを詰める。 メソッド size() は,リストにあるオブジェクトの個数を int 型で返す。 クラス java.util.ArrayList は,配列を用いてインタフェース List を実装する。
〔プログラム1〕 import java.util.Random; public class Card { public static final int SPADES = 0; public static final int HEARTS = 1; public static final int DIAMONDS = 2; public static final int CLUBS = 3; private static final Random rand = new Random(); private static final Card[] cards = new Card[13 * 4]; private final int suit; private final int rank; 設問 プログラム中の
a に関する解答群 ア private Card() { イ private static void init() { ウ private void init() { エ static { オ synchronized { カ { b に関する解答群 ア i * 13 + j イ i * 13 + j - 1 ウ i * 4 + j - 1 エ j * 13 + i オ j * 13 + i - 1 カ j * 4 + i - 1 c に関する解答群 ア currentIndex * diffList[i] イ currentIndex + diffList[i] ウ currentIndex - diffList[i] エ i * diffList[currentIndex] オ i + diffList[currentIndex] カ i - diffList[currentIndex] d に関する解答群 ア adjacentIndex != list.size() イ adjacentIndex < list.size() ウ adjacentIndex <= list.size() エ adjacentIndex == list.size() オ adjacentIndex > list.size() カ adjacentIndex >= list.size() e に関する解答群 ア 0 イ adjacentIndex ウ adjacentIndex - 1 エ currentIndex オ currentIndex - 1 カ list.size() - 1
[←前の問題] [次の問題→] [問題一覧表] [分野別] [基本情報技術者試験TOP ]
©2004-2024 情報処理試験.jp
|
プライバシーポリシー・著作権・リンク
|
お問合わせ
|