Mae向きなブログ

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

平成30年度秋季基本情報午後問12

平成30年度秋季 基本情報技術者試験(FE)の午後問題12(アセンブラ言語CASL)は、

  • 1970年1月1日から、指定された日付までの日数を求める問題

でした。

プログラム(h30a_fe_pm12.casl)

  • 05行目:本日の日付(2018年10月28日)をセット
  • 13行目:(空欄a)GR4に10月までの経過日数が格納されているメモリアドレスをセットする
  • 14行目:9月までの合計日数をGR1に加算する(10月まで加算してはダメ)。
  • 22行目:(空欄b)すでに2018年(今年)分の日数は足しているので、処理している年(GR2)と等しくなったら22〜26行目の加算処理はしない
  • 36行目:GR0を0で初期化(0は平年、1はうるう年)
  • 39行目:(空欄c)38行目で3とAND演算をしている。結果が0の場合は4の倍数である。
  • 42行目:(空欄d)41行目の実行結果で、GR0に100で割り切れた場合は1が、割り切れなかった場合は0が格納されている。100で割り切れなかった場合は、うるう年なのでビット反転する操作が必要になる。
  • 49行目:DIVISIBLは繰り返し引き算を行って割り切れるかどうかを判定している。

実行結果

作成したプログラムを「CASLシミュレータ(CASL II 対応)」で実行してみました。1970年1月1日から本日(2018年10月28日)までの日数は、GR0の値から17832日のようです。

f:id:rahaema:20181028140414p:plain

あっているかRubyスクリプトと比較してみたところ、無事、同じ結果となりました。

$ ruby -rdate -e "puts (Date.today - Date.new(1970,1,1)).to_i"
17832

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

平成30年度秋季 基本情報技術者試験(FE)の午後問題9は列車の運行をシミュレーションするプログラムでした。

h30a_fe_pm9.c

実行結果

「図1 鉄道模型の路線構成及び列車位置」から4回処理を進める様子を眺められるようにしてみました。

f:id:rahaema:20181027120348p:plain

$ gcc h30a_fe_pm9.c && ./a.out
----- 初期状態 -----
区間0 : 赤 : 列車4
区間1 : 赤 : 列車3
区間2 : 緑 :   -
区間3 : 赤 : 列車2
区間4 : 赤 : 列車1
区間5 : 緑 :   -
区間6 : 緑 :   -
区間7 : 緑 :   -
区間8 : 赤 : 列車0
----- 進行1回目 -----
区間0 : 赤 : 列車4
区間1 : 緑 :   -
区間2 : 赤 : 列車3
区間3 : 赤 : 列車2
区間4 : 緑 :   -
区間5 : 赤 : 列車1
区間6 : 緑 :   -
区間7 : 緑 :   -
区間8 : 緑 :   -
----- 進行2回目 -----
区間0 : 赤 : 列車4
区間1 : 緑 :   -
区間2 : 赤 : 列車3
区間3 : 緑 :   -
区間4 : 赤 : 列車2
区間5 : 緑 :   -
区間6 : 緑 :   -
区間7 : 緑 :   -
区間8 : 緑 :   -
----- 進行3回目 -----
区間0 : 赤 : 列車4
区間1 : 緑 :   -
区間2 : 緑 :   -
区間3 : 赤 : 列車3
区間4 : 緑 :   -
区間5 : 緑 :   -
区間6 : 赤 : 列車2
区間7 : 緑 :   -
区間8 : 緑 :   -
----- 進行4回目 -----
区間0 : 緑 :   -
区間1 : 緑 :   -
区間2 : 赤 : 列車4
区間3 : 緑 :   -
区間4 : 赤 : 列車3
区間5 : 緑 :   -
区間6 : 緑 :   -
区間7 : 緑 :   -
区間8 : 緑 :   -

感想

電車好きな方が作問されたんでしょうね。電車と言えば、以前読んだ『プログラミングの基礎 - Mae向きなブログ』に電車関連の題材を扱った問題があったと思います。いつか自分でも作ってみたいと思いながら、まだ取り組めずにいます。いつかと言っているうちは取り組めないんでしょうけど、いつか取り組んでみたいですね。

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

平成30年度秋季 基本情報技術者試験(FE)の午後問題8は整数式を受け取って、その値を返すプログラムに関する問題でした。

逆ポーランド記法に関する問題は、以前にも出題され、

で取り組んでいますが、中置記法から計算結果を求めるパターンの問題はひょっとしたら初めての出題だったのかもしれません。

疑似言語で書かれた問題をC言語にして実行してみました。

h30a_fe_pm8.c

実行結果

$ gcc h30a_fe_pm8.c && ./a.out
2*(34-(5+67)/8)
50

数学ガールの秘密ノート/行列が描くもの

「代数・幾何」という数学の科目がある時代に高校生活をおくっていたので、行列については習った世代*1なのですが、現在は、高校で行列を扱わなくなったようですね。数学の専門家ではないので、行列を習う・習わない、どちらが良いのかなどは全く分からないのですが、本書を読むことで行列に触れ、そしてその行列が他の分野とも繋がりを持っているということを体験することはとても有意義なことだと思います。

数学ガールの秘密ノート」と「数学ガール」の両シリーズは、学校で習っていなくても、自分のペースで読み進めることで楽しみながら数学の世界を旅することができますね。

本書を読み終える頃には、高校の数学の授業では習っていないけど、いろんな分野との関わりが見えて、読んで良かったなと思えるのではないでしょうか。

フィボナッチ数列のように行列とは全く関係なさそうに見えるものが、以下のように行列を使って表現できるのは不思議ですがなんとも言えないような面白さを感じますね。

関係なさそうと言えば、『数学ガール/乱択アルゴリズム (数学ガールシリーズ 4)』の第7章以降にも行列が登場します。遠い昔の高校時代、単に問題を解くだけで精一杯で、固有値固有ベクトルなども深く知ろうともしなかったのですが、読み進めながら感動したことをふと思い出しました。もう一度読んでみたいですね。

f:id:rahaema:20181018164552j:plain

*1:身についたかどうかは別

マンガでわかる! 人工知能 AIは人間に何をもたらすのか

「マンガでわかる!」という文言に惹かれて読んでみました。難しい数式なども出てこないので、あっという間に読み終えることができます。まずはAIの概要について知りたいという方にはいいかもなと思いました。

フリーター、家を買う。

ドラマの再放送を見たのをきっかけに本を読んでみました。読んでいて楽しめる本でしたが、働くことや心の病などについてなど、考えさせられることも多い本だと思います。

フリーター、家を買う。

フリーター、家を買う。

下町ロケット ゴースト

読み始めたら、あっという間の300ページ、いつものごとく山あり谷ありの連続でした。読み進めるうちに、残りページがどんどん少なくなるものの、これで最後まで行き着くのだろうかと思っていましたが、最後のページに『下町ロケット ヤタガラス』が2018年秋発売予定とのこと。早く続編が読みたいものです…。

下町ロケット ゴースト

下町ロケット ゴースト