山崎豊子の本に没頭したのは、2011年から2012年にかけて。かねてより本書には興味を持っていましたが、未完のままになっているとのことで読むことに躊躇いがあったのですが、読んでみて本当によかったと思います。
この物語を通して何を訴えたかったのか、また物語の内容もさることながら、80歳を超えてなお新しいことに挑戦し続けるその姿勢に感銘を受けました。
- 作者: 山崎豊子
- 出版社/メーカー: 新潮社
- 発売日: 2014/02/20
- メディア: 単行本
- この商品を含むブログ (7件) を見る
平成22年度秋季 基本情報技術者試験(FE)の午後問題12(アセンブラ言語CASL)は、
に関する問題でした。
ポイントは、SRL命令を実行したとき、
ということでしょうか。
作成したプログラムを「CASLシミュレータ(CASL II 対応)」で実行してみました。#0005番地に格納されている値(#B3D1)が実行後は#8BCDになっています。
LOOP1は、n語の並びを逆順にする処理(第1語と第n語の入れ替え、第2語と第n-1語の入れ替え、…)、LOOP2は各語それぞれについて設問1のREVRSを使ってビットの並びを逆転させていますね。
#0007番地から「#B3D1,#8000,#0001」を設定して実行してみました。
プログラムの中に適切なコメントが記載されているので、GR1,GR2,GR3に具体的な値を設定して紙上でビット遊びをすることが大切なんだろうなと思います。ビット列が右に左に移動して、ANDしたりORするうちに望みのビット列が得られる様子は面白いですね。
解くためには,
ということを知っていればよいのではないでしょうか。
#B3D1に対して、真ん中の8ビットが逆順になるように、pを4、qを8で実行してみました。
コンパイラの仕組みについては学生時代に学んだ記憶はあるのですが、当時は難易度が高く思えて、今となっては字句解析して構文解析してという程度しか理解できていません。これまで何度も学び直しをしようと思ったもののハードルが高くて何度も跳ね返されてきました。
ひょんなことで、「低レイヤを知りたい人のためのCコンパイラ作成入門」を知ったのですが、読み始めるととても分かりやすくて、面白くて、また学んでみようかなと思えてきました。読みながら、実際に手を動かして作っているのですが、このオンラインブックは執筆中ということもあり、そのままでは動かない部分がありましたので、自分なりに動くように作成してみました。
以下は、「ステップ4:四則演算のできる言語の作成」までの内容です。おかしな記述などがあれば遠慮なくご指摘いただければと思います。
$ make cc 9cc.c -o 9cc $ make test ./test.sh OK
先ごろ実施された「平成30年度秋季基本情報午後問8 - Mae向きなブログ」にも四則演算を行う問題が出題されていました。今回の方法と実行結果が同じになっています。当たり前といえば当たり前なのですが、うれしいですね。
$ ./9cc 2*(34-(5+67)/8) > tmp.s $ gcc -o tmp tmp.s $ ./tmp $ echo $? 50
平成30年度秋季 応用情報技術者試験(AP)の午後問題3は、ウェーブレット木に関する問題でした。
年齢だけは重ねているので、基本情報や応用情報技術者試試験で出題される、いろいろなアルゴリズムについて詳細は知らなくても、名前だけは聞いたことがあるものが今までは出題されていたのですが、ウェーブレット木というのは初耳のような気がします。
理解を深めるために問題を解いて、プログラムを作成してみました。
問題文中で取り上げられている、文字列Pについて、
を実行してみました。図1と同じようなウェーブレット木が構築でき、文字数も数えられているようです。
$ ruby h30a_ap_pm3.rb #<struct Node key=342, left=#<struct Node key=24, left=nil, right=nil>, right=#<struct Node key=17, left=nil, right=nil>> A : 3 C : 2 G : 3 T : 2
以前のプログラムでは、文字の種類の個数が4ではないとき、不具合がありましたので以下のページを参考に修正しました。(2019/03/31)
平成30年度秋季 基本情報技術者試験(FE)の午後問題12(アセンブラ言語CASL)は、
でした。
作成したプログラムを「CASLシミュレータ(CASL II 対応)」で実行してみました。1970年1月1日から本日(2018年10月28日)までの日数は、GR0の値から17832日のようです。
あっているかRubyのスクリプトと比較してみたところ、無事、同じ結果となりました。
$ ruby -rdate -e "puts (Date.today - Date.new(1970,1,1)).to_i" 17832
平成30年度秋季 基本情報技術者試験(FE)の午後問題9は列車の運行をシミュレーションするプログラムでした。
「図1 鉄道模型の路線構成及び列車位置」から4回処理を進める様子を眺められるようにしてみました。
$ 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向きなブログ』に電車関連の題材を扱った問題があったと思います。いつか自分でも作ってみたいと思いながら、まだ取り組めずにいます。いつかと言っているうちは取り組めないんでしょうけど、いつか取り組んでみたいですね。