Mae向きなブログ

Mae向きな情報発信を続けていきたいと思います。

平成28年度秋季基本情報午後問9

平成28年度秋季 基本情報技術者試験(FE)の午後問題9は、

  • 遅延日数をできるだけ少なくするような開発作業順序を求めること

に関する問題でした。

f:id:rahaema:20190316175726p:plain

プログラム例(h28a_fe_pm9.c)

実行結果

以下の実行順序でサブシステムの開発作業を実施した場合、遅延日数の合計は96日となります。図1に示す順番で進めていくと、遅延日数の合計は110になりますので、14日、遅延日数を減らせたことになりますね。

$ gcc h28a_fe_pm9.c && ./a.out
  1   APL12339          0          0
  2   MSO16101         16         16
  3   GGL08001         44         60
  4   ORA14031          0         60
  5   CAN03022         36         96

平成29年度秋季基本情報午後問8

平成29年度秋季 基本情報技術者試験(FE)の午後問題8は、

  • 検査文字列を利用した文字列の誤り検出

に関する問題でした。

f:id:rahaema:20190313212202p:plain

プログラム例(h29a_fe_pm8.c)

実行結果

設問2を実際に確かめてみた結果を以下に示します。ケース2とケース4においては、たしかに誤りがないと表示されています*1

$ gcc h29a_fe_pm8.c && ./a.out
ipa  f
ipa  f: 1
ケース1: 0
ケース2: 1
ケース3: 0
ケース4: 1

*1:1がtrueです。

平成28年度秋季応用情報午後問3

平成28年度秋季 応用情報技術者試験(AP)の午後問題3は、

  • 魔法陣

でした。

プログラム例

実行

関連

平成28年度春季基本情報午後問9

平成28年度春季 基本情報技術者試験(FE)の午後問題9は、

に関する問題でした。

f:id:rahaema:20190303112027p:plain

プログラム例(h28h_fe_pm9.c)

関数exists_atの動き

関数exists_atは、exists_at内から自分自身を呼び出す再帰構造になっています。階乗を計算するなど簡単なものは、再帰呼び出しをトレースしていくのも容易なのですが、少し複雑になると中々難しいですね。

今回の空欄b〜dも素直に読めば、

  • 空欄b: 深さ0のときは*を描画する必要があるので1を返す。
  • 空欄c: 深さがd-1のexists_at呼び出しから0が返ってきたときは0を返す。
  • 空欄d: 配列patに応じた値を返す。

でいいと思うのですが、しっかりと理解するために以下の例でトレースしてみたいと思います。

print_funcからexists_at(7, 3, 3)と呼び出した場合

(1) exists_at(7/2=3, 3/2=1, 2)
(2)  exists_at(3/2=1, 1/2=0, 1)
(3)   exists_at(1/2=0, 0/2=0, 0)

と呼び出され、(3)から(2)に1が返されます。(2)において、exists_at(1, 0, 1) == 0が偽となり、pat[3%2=1][1%2=1]の値0が(2)から(1)に返されると、(1)においては、exists_at(3 ,1, 2) == 0が真となり、exists_at(7, 3, 3)は0となります。

exists_at(7, 3, 3)は計算結果が0になるときの例でしたが、exists_at(4, 3, 3)など結果が1になる場合もトレースしてみると、より理解が深まると思います。

実行結果

$ gcc h28h_fe_pm9.c && ./a.out
0
*
$ ./a.out
1
**
*
$ ./a.out
2
****
* *
**
*
$ ./a.out
3
********
* * * *
**  **
*   *
****
* *
**
*

関連

平成28年度春季基本情報午後問8

平成28年度春季 基本情報技術者試験(FE)の午後問題8は、

  • 携帯端末上で稼働する簡易メモ帳の機能のうち、メモの編集処理(メモの追加・削除・変更・移動)を行うプログラム

に関する問題でした。

f:id:rahaema:20190302130311p:plain

プログラム例(h28h_fe_pm8.c)

実行結果

$ gcc h28h_fe_pm8.c && ./a.out
MemoCnt: 0
DataLen: 0
Memo[] :
Data[] :

MemoCnt: 4
DataLen: 19
Memo[] : 0 5 10 14
Data[] : 4Aoki4Imai3Uno4Endo

MemoCnt: 3
DataLen: 19
Memo[] : 5 10 14
Data[] : 4Aoki4Imai3Uno4Endo

MemoCnt: 3
DataLen: 23
Memo[] : 5 10 19
Data[] : 4Aoki4Imai3Uno4Endo3Abe

MemoCnt: 3
DataLen: 23
Memo[] : 19 5 10
Data[] : 4Aoki4Imai3Uno4Endo3Abe

MemoCnt: 3
DataLen: 13
Memo[] : 0 4 9
Data[] : 3Abe4Imai3Uno

FACTFULNESS(ファクトフルネス)

イントロダクションで出題される13の質問にほとんど答えられず、なんと物事を知らないことかと残念な思いで本書を読み始めたのですが、識者と言われているような人も含めて大半の人がチンパンジーの正解率にかなわないとのこと。

本書を通して「事実に基づいて世界を見る力」をじっくり養いたいと思います。

FACTFULNESS(ファクトフルネス)10の思い込みを乗り越え、データを基に世界を正しく見る習慣

FACTFULNESS(ファクトフルネス)10の思い込みを乗り越え、データを基に世界を正しく見る習慣

参考

平成28年度春季応用情報午後問3

平成28年度春季 応用情報技術者試験(AP)の午後問題3は、

でした。

f:id:rahaema:20190224114221p:plain

プログラム例

実行(↓)

参考

以前の取り組み