投稿する

大原本  問38 [5408]

 まきさん(No.1) 
度々申し訳ございません。
(1)と(2)はいつのタイミングでトレースされるのでしょうか?

magic_square(整数型の二次元配列:a,整数型:n)
整数型:i,j,k

n=3としてトレースします


i←n
3   3
j←n/2+1
2   3

a[i,j]←1
  3,2
k←2
while(k<=n*n)
      2   9
i←i+1
4   3
j←j+1
3   2
if(((i>n)and(j>n))or(a[i,j]≠0))
     4 3     3 3       4,3       不成立
i←i-2(1)
j←j-1 (2)
else
if(i>n)
   4  3
i←1
endif
if(j>n)
   3 3
j←1
endif
a[i,j]←k
  1,3   2
k←k+1
2  1

while(k<=n*n)
      2   9
i←i+1
2  1
j←j+1
4  3
if(((i>n)and(j>n))or(a[i,j]≠0))
     2 3     4 3       2,4       不成立
i←i-2
j←j-1
else
if(i>n)
   2 3
i←1
endif
if(j>n)
   3 3
j←1
endif
a[i,j]←k
  1,1   3
k←k+1
2  1
2024.04.19 20:28
jjon-comさん(No.2) 
FE ゴールドマイスター
応用情報 平成28年 秋期 午後 問3
魔方陣(magic square)に関する問題

に対しておこなわれた次のQ&A
応用情報技術者試験ドットコム 掲示板 [4487]
の No.4 の(a)(b)に答えることはできますか?

> どちらも回答に必要なのは問題文と図だけで、擬似言語のトレースは不要です。
2024.04.20 00:56
 まきさん(No.3) 
〉jjon-comさん
>応用情報技術者試験ドットコム 掲示板 [4487]
の No.4 の(a)(b)に答えることはできますか?

出来ません。申し訳ございません。
2024.04.20 21:04
jjon-comさん(No.4) 
FE ゴールドマイスター
> 出来ません。
であるならば、この問題は解けないです。No.2 が No.1 の答えなので。

基本情報 科目B のアルゴリズムの問題を解ける人は、次のことをおこなっていると私は考えます。
----
(1) 問題文を理解する。
(2) 問題文の内容をプログラミングした場合、処理はこう流れるだろう、変数はこう変化するだろう、とイメージする。
(3) (2)で予想した処理イメージが、擬似言語ではどうコーディングされているか確認する。予想が合っていたならコーディングの空欄を穴埋めする。
(4) 予想したコーディングではなかった場合は、擬似言語をトレースして、出題者がおこなっただろう処理イメージを突き止める。その後(2)に戻る。
----
(1)(2)をなおざりにして、先に擬似言語のトレースにとりかかろうとする人は、効率の悪い勉強(もしくは勉強っぽい行為?)をしていることに気づいていないと私は考えます。

----------------
基本情報技術者[科目B]アルゴリズムとプログラミング トレーニング問題集 第2版 大原出版
のAmazonレビューに目を通してみました。

(1)(2)のアルゴリズム理解力がある人はこの問題集に高評価を与えているように思われる反面、
(1)(2)のアルゴリズム理解力がまだ乏しい人からは次のような評価も寄せられています。私もこの本を入手したのですが、適切な評価だと思います。

> 問題の量は多くて良いのだが、とにかく解説が詳しくなさすぎます。

> 解答の説明がある程度分かっている人向けなので、
> 科目Bの勉強の最初に手を出すのは微妙な感じがしました。

> 解説もわからない部分を説明してほしいのに省略&端的にしか
> 書いてないので勉強にならない。問題の難易度は良いと思う。
2024.04.21 00:32
まきさん(No.5) 
いつもご回答ありがとうございます。

問題文を何回読んでも分からないのは適性がないのでしょうか。それを言われると本当に気がおかしくなりそうです。問題文を何回読んでもイメージが出来なくて辛いです。言い方が悪いですが‥やればやるほどドツボにはまる。みんな受かっているのに悔しい。
(2)を養うためには問題をどんなことを意識すれば宜しいですか?

実感が出来ないですよね‥すみません。

トレースを真っ先にやろうとはしてないですが‥アドバイスありがとうございます。

経験値が足らないのか‥
2024.04.21 12:57
まきさん(No.6) 
勉強していてもなんだか虚しさが‥すみません。
2024.04.21 13:10
jjon-comさん(No.7) 
FE ゴールドマイスター
> (2)を養うためには問題をどんなことを意識すれば宜しいですか?

私には分からないです。

私に言えるのは、この問題が解ける人は、問題文を読んで次の処理イメージができる人、または、魔方陣はこの手順で作れるということを知っていた人だろうということです。(ちなみに私は後者です。子どものころ、クイズかパズルの本で読みました)

(1)最下段の中央に1を格納し、ここを開始点とする。
+ー+ー+ー+
|  |  |  |
+ー+ー+ー+
|  |  |  |
+ー+ー+ー+
|  |1|  |
+ー+ー+ー+

(2)開始点から順次右下に移動し、2,3,…を格納していく。
①下にはみ出した場合には、その列の一番上に移動して値を格納し、
+ー+ー+ー+
|  |  |2|
+ー+ー+ー+
|  |  |  |
+ー+ー+ー+
|  |1|  |
+ー+ー↘ー+

そこから右下に続ける。
②右にはみ出した場合には、その列の左端に移動して値を格納し、
+ー+ー+ー+
|  |  |2|
+ー+ー+ー↘
|3|  |  |
+ー+ー+ー+
|  |1|  |
+ー+ー+ー+

そこから右下に続ける。
(3)…または既に値が格納されている場所に移動した場合には、最後に値を格納した位置の上に移動して値を格納後、
+ー+ー+ー+
|4|  |2|
+ー+ー+ー+
|3|  |  |
+ー↘ー+ー+
|  |1|  |
+ー+ー+ー+

そこから右下に続ける。
+ー+ー+ー+
|4|  |2|
+ー↘ー+ー+
|3|5|  |
+ー+ー+ー+
|  |1|  |
+ー+ー+ー+

そこから右下に続ける。
+ー+ー+ー+
|4|  |2|
+ー+ー+ー+
|3|5|  |
+ー+ー↘ー+
|  |1|6|
+ー+ー+ー+

そこから右下に続ける。
(3)右下隅から…に移動した場合には、最後に値を格納した位置の上に移動して値を格納後、
+ー+ー+ー+
|4|  |2|
+ー+ー+ー+
|3|5|7|
+ー+ー+ー+
|  |1|6|
+ー+ー+ー↘

そこから右下に続ける。
②右にはみ出した場合には、その列の左端に移動して値を格納し、
+ー+ー+ー+
|4|  |2|
+ー+ー+ー+
|3|5|7|
+ー+ー+ー↘
|8|1|6|
+ー+ー+ー+

そこから右下に続ける。
①下にはみ出した場合には、その列の一番上に移動して値を格納し、
+ー+ー+ー+
|4|9|2|
+ー+ー+ー+
|3|5|7|
+ー+ー+ー+
|8|1|6|
+ー↘ー+ー+
2024.04.21 20:05
 まきさん(No.8) 
>jjon-comさん
再度問題文を読みこういったことなんだと分かりました。
腹落ちしない部分もありますがこういった問題なんだと割り切りました
解説ありがとうございました。
2024.04.21 20:44
返信投稿用フォームスパム防止のためにスレッド作成日から30日経過したスレッドへの投稿はできません。
© 2010- 基本情報技術者試験ドットコム All Rights Reserved.

Pagetop