HOME»基本情報技術者試験掲示板»平成31年春期午後問11
投稿する
平成31年春期午後問11 [4446]
Mobさん(No.1)
設問1のbに関して、解説によるとwidthを使ってmazeDateを加工する必要があると書いてありますが、mazeData を width で割った商の整数部がy座標、mazeData を width で割った余りをx座標とする、という部分について理解が得られないので、どなたか解説していただけないでしょうか。
2022.09.23 16:43
jjon-comさん(No.2)
★FE ゴールドマイスター
String mazeData の内容は長さ49文字の文字列。
"********..*..**S**.***.....******.**G....********"
StringクラスのindexOf()メソッドは,引数で渡された文字が文字列中に最初に現れた位置を返す。長さ49文字の文字列の中にその文字が含まれていたなら,返される値は0~48のいずれか。
int index = mazeData.indexOf('S');
Locationクラスは 2つの整数xとyを内部に持つ。
〔プログラム4〕
public class Location {
public final int x, y;
public Location(int x, int y) {
this.x = x;
this.y = y;
}
}
次の行は,indexの値0~48から「図1 本問で扱う迷路」のxとyを求めて,Locationクラスの引数として渡している。xが index [ b ] width で,yが index / width。
return new Location(index [ b ] width, index / width);
indexが 0, 1, 2, 3, 4, 5, 6のとき
"* * * * * * *"
xは 0, 1, 2, 3, 4, 5, 6 にしたい。
indexが 7, 8, 9,10,11,12,13のとき
"* . . * . . *"
xは 0, 1, 2, 3, 4, 5, 6 にしたい。
indexが14,15,16,17,18,19,20のとき
"* S * * . * *"
xは 0, 1, 2, 3, 4, 5, 6 にしたい。
(以下省略)
上記のxを求める計算式は「indexをwidth=7で割った余り」これが[空欄b]。
"********..*..**S**.***.....******.**G....********"
StringクラスのindexOf()メソッドは,引数で渡された文字が文字列中に最初に現れた位置を返す。長さ49文字の文字列の中にその文字が含まれていたなら,返される値は0~48のいずれか。
int index = mazeData.indexOf('S');
Locationクラスは 2つの整数xとyを内部に持つ。
〔プログラム4〕
public class Location {
public final int x, y;
public Location(int x, int y) {
this.x = x;
this.y = y;
}
}
次の行は,indexの値0~48から「図1 本問で扱う迷路」のxとyを求めて,Locationクラスの引数として渡している。xが index [ b ] width で,yが index / width。
return new Location(index [ b ] width, index / width);
indexが 0, 1, 2, 3, 4, 5, 6のとき
"* * * * * * *"
xは 0, 1, 2, 3, 4, 5, 6 にしたい。
indexが 7, 8, 9,10,11,12,13のとき
"* . . * . . *"
xは 0, 1, 2, 3, 4, 5, 6 にしたい。
indexが14,15,16,17,18,19,20のとき
"* S * * . * *"
xは 0, 1, 2, 3, 4, 5, 6 にしたい。
(以下省略)
上記のxを求める計算式は「indexをwidth=7で割った余り」これが[空欄b]。
2022.09.24 01:02
Mobさん(No.3)
解説ありがとうございました。
2022.09.24 14:37