Mae向きなブログ

Mae向きな日記のブログ版。ようやくこちらに移行してきました。

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

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

  • C言語によるセキュリティ管理

に関する問題でした。

f:id:rahaema:20190214220241p:plain

プログラム例(h26a_fe_pm9.c)

実行結果

$ gcc h26a_fe_pm9.c && ./a.out

AE002    UserE2       特権S 付加   特権O 解除
AE003    UserE3       特権O 解除
AP004    UserP4       利用者ID 削除  特権O 解除
AP006    UserP6       利用者ID 追加  特権O 付加

使用したファイル

NewFile

AE001 UserE1 41 20140419
AE002 UserE2 48 20141014
AE003 UserE3 48 20140716
AP005 UserP5 46 20141015
AP006 UserP6 44 00000000

OldFile

AE001 UserE1 40 20140419
AE002 UserE2 44 20140712
AE003 UserE3 4C 20140716
AP004 UserP4 45 20140715
AP005 UserP5 44 20140713

情報処理技術者試験の過去問を実際に動かしてみよう!

最近、情報処理技術者試験(応用情報・基本情報)の午後問題で出題されるアルゴリズムやプログラミングに関する問題を実際に動かしてみるという試みを続けているのですが、はてなブログに書くだけでは、今までにどんな分野が出題されてきたのかなど、全体を俯瞰しにくいという問題があるように思います。

そこで、今まで解いてみた問題を各回ごとに整理し、どんな内容だったのかをリストアップしたページを作成してみました。合格を目指して、勉強されている方の参考に少しでもなればいいなと思います。

f:id:rahaema:20190212215041p:plain

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

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

  • 2つの文字列間の編集距離(レーベンシュタイン距離)

に関する問題でした。

f:id:rahaema:20190209220923p:plain

プログラム例(h26a_fe_pm8.c)

実行結果

$ gcc h26a_fe_pm8.c && ./a.out
abcabba
cbabac
5
$ ./a.out
kitten
sitting
5
$ ./a.out
peace
people
5

関連

こちらでは、文字列kittenとsittingの編集距離の値が3となっていますが、置換を許しているためです。

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

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

  • 印字したときに単語が行末で切れないようにテキストを編集してファイルに出力するプログラムに関する

問題でした。

f:id:rahaema:20190203164100p:plain

プログラム例(h26h_fe_pm9.c)

設問1のプログラムを以下に示します。

実行結果

in.txt

The    Infomation   Technology   Engineers
   Examination   was  first  administered  in 1969. In 1970,
 it became a national examination.
       Since its commencement, the examination has played
    an important role   in the development of IT    engineers.

実行

$ gcc h26h_fe_pm9.c && ./a.out in.txt out.txt
$ cat out.txt
The    Infomation   Technology   Engineers
   Examination   was  first  administered  in
1969. In 1970,
 it became a national examination.
       Since its commencement, the examination has
 played
    an important role   in the development of IT
  engineers.

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

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

  • 文字列の圧縮と圧縮された文字列を復元するプログラムに関する

問題でした。

f:id:rahaema:20190202102312p:plain

プログラム例(h25a_fe_pm8.c)

実行結果

図1の文字列を入力

ABCDEFABCDABCDEF
Compressed String   : ABCDEF$FD$JF
Compression Ratio = 75.0(%)
Decompressed String : ABCDEFABCDABCDEF

設問2の文字列を入力

ABCDEFGABCDEABCDFEFGABCD
Compressed String   : ABCDEFG$GE$EDF$MG
Compression Ratio = 70.8(%)
Decompressed String : ABCDEFGABCDEABCDFEFGABCD

平成24年度秋季応用情報午後問2

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

  • Nクイーン問題

でした。

プログラム例(eight_queen.html)

実行結果

色付きのセルは、一度でもクイーンを置いたところです。すなわちバックトラックが発生したセルを表しています。

f:id:rahaema:20190122215517p:plain

今後の課題

学生時代から何度も出会っている題材なので、CやRubyで作成するよりもJavaScriptで書いて、バックトラックする様子を分かりやすくアニメーションしたかったのですが、中々、難しいですね。どなたかアドバイスをいただければありがたいです。

以前、魔法陣も数字を埋めていく様子が分かるようにアニメーションしたいと思ったのですが、このときも解決できずでした。

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

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

  • Warshall-Floyd法(ワーシャルフロイド法)を用いて鉄道駅間の最短距離を求める

問題でした。

鉄道の路線から最短距離を求めるという身近な題材であり、これが発展したものがYahoo!などが提供している「乗換案内」アプリにつながっているのかもしれないと思うと、中々楽しい題材だなと思います。

問題を解くだけではもったいないので、問題文中に示されている図3、図4に値を追加(赤字赤い文字)してシミュレーションしてみました。

f:id:rahaema:20190119110721p:plain

プログラム例(h24a_fe_pm8.c)

実行結果

f:id:rahaema:20190119110721p:plain

駅1から駅3への最短距離

駅2を経由していく路線が最短のようです。

区間を指定 => 1 3
最短距離 = 35

駅6から駅4への最短距離

「駅6 → 駅3 → 駅2 → 駅10 → 駅4」と辿るのが最短のようです。

区間を指定 => 6 4
最短距離 = 50

駅5から駅4への最短距離

「駅5 → 駅1 → 駅2 → 駅10 → 駅4」と辿るのが最短のようです。 駅6へ向かったら遠回りになるようですね。

区間を指定 => 5 4
最短距離 = 50

関連(電車繋がりということで)