Mae向きなブログ

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

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

平成27年度春季 応用情報技術者試験(AP)の午後問題3はデータ圧縮の前処理として用いられるBlock-sorting(ブロックソート)に関する問題でした。学生時代(20年以上前)、データ圧縮について少し勉強したことがあるのですが、Block-sortingというアルゴリズムに接するのは今回が初めてです。Wikipedeiaで調べてみると、1994に開発されているようです。ちょうど自分が学生時代、データ圧縮について勉強しているときに開発されてたんですね。

h27h_ap_pm3.rb

実行結果

$ ruby h27h_ap_pm3.rb
入力文字列: papaya
変換結果 : yppaaa, 3
復元処理後: papaya

入力文字列: kiseki
変換結果 : skkeii, 4
復元処理後: kiseki

思うこと

「図4 関数decodeのプログラム」ではが空欄になっていますが、をwhileループの外に出したということは、は、「n != line」と答えさせようという意図があるのではないでしょうか。模範解答のを想定するのであれば、は不要で以下で良いのではと思います。ひょっとしたら勘違いをしているかもしれませんが。

  outputString = []
  n = line
  while outputString.length < blockSortString.length
    outputString << decodeArray[0][n]
    n = decodeArray[1][n]
  end

参考

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

平成27年度秋季 応用情報技術者試験(AP)の午後問題3は2分探索木に関する問題でした。

データを8個挿入後の2分探索木とデータを2個削除した後の2分探索木を図示するようにしています。Gvizを使いましたが、左の子は左気味に右の子は右気味に描く方法が分からなかったので少し見にくくなってしまいました。

2分探索木は、

  • データの探索
  • データの挿入

は簡単ですが、

  • データの削除

特に子どもが2つあるノードの削除が理屈では分かっていても実際に作るとなると難しいですね。

h27a_ap_pm3.rb

実行結果

before.png

f:id:rahaema:20170514174107p:plain

after.png

f:id:rahaema:20170514174121p:plain

追記(2017/05/17)

2分探索木が最悪になるケースを追加しました。

q = nil
1.upto(5) {|i|
  q = addNode(i, q)
}
outputGraph(q, 'badcase')

f:id:rahaema:20170515055547p:plain

【2017年】イオンモール 総賃貸面積(大きさ・広さ)でランキング

maehrm.hatenablog.com

地元の新聞に以下のような記事が載っていました。増床後の総賃貸面積は九州内のモールで2番目の広さになるようです。そう書かれると、九州内で一番広いところや日本で一番広いところが知りたくなります。

ということで、調べてみました。

イオンモール 総賃貸面積(大きさ・広さ)でランキング

No. 店舗名 総賃貸面積(m²)
1 イオンモール幕張新都心 128000
2 イオンモール武漢経開 105000
3 mozo wondercity※(モゾ ワンダーシティ) 101000
4 イオンレイクタウンmori 99000
5 イオンモール広島府中 98000
6 イオンモール岡山 92000
7 イオンモール福岡 90000
8 ならファミリー※ 86000
9 神戸ハーバーランドumie※ 85000
10 イオンモール木更津 84000
11 イオンモール倉敷 83000
12 イオンモール常滑 82800
13 イオンモール岡崎
イオンモール橿原
イオンモール筑紫野
80000
14 イオンモール千葉ニュータウン 79000
15 イオンモール水戸内原
イオンモールむさし村山
イオンモール草津
イオンモール沖縄ライカ
78000
16 イオンモール各務原
イオンモール京都桂川
イオンモール天津津南
イオンモールBSD CITY
77000
17 イオンモールりんくう泉南 76000
18 イオンモール羽生
イオンモール名古屋茶屋
イオンモール四條畷
イオンモール蘇州呉中
75000
19 イオンモール蘇州園区湖東 74900
20 イオンモール蘇州新区
イオンモール武漢金銀潭
74000
21 イオンモール熊本 73000
22 イオンモール北花田
イオンモール ロンビエン
72000
23 イオンモール宮崎
イオンモール北燕
70000
24 イオンモール和歌山 69000
25 イオンモール名取
イオンモール大和郡山
イオンモール新居浜
67000
26 イオンモール川口前川
イオンモール木曽川
イオンモール杭州良渚新城
イオンモール プノンペン
66000
27 イオンモール成田
イオンモール浜松志都呂
イオンモール大高
65000
28 イオンモール広州番禺広場 64500
29 イオンモールつくば
イオンモール日の出
64000
30 イオンモール新小松
イオンモール浜松市
イオンモール宇城
イオンモール天津梅江
63000
31 イオンモール太田
イオンモール浦和美園
イオンモール高岡
イオンモール天津中北
62000
32 イオンレイクタウンkaze
イオンモール福津
61000
33 イオンモールかほく
イオンモール ビンタン
60000
34 イオンモール下田
イオンモール高崎
イオンモール長久手
59000
35 イオンモール秋田
イオンモール土浦
イオンモール東員
イオン明石ショッピングセンター
イオンモール直方
イオンモール北京豊台
58000
36 イオンモール伊丹
イオンモール綾川
イオンモール高知
イオンモール大牟田
57000
37 イオンモール春日部
イオンモール鉄砲町
イオンモール大日
56000
38 イオンモール東浦
イオンモール神戸北
イオンモール天津TEDA
55000
39 イオンモール鶴見緑地
イオンモール今治新都市
54000
40 イオンモール北京国際商城 53000
41 イオンモール盛岡 52000
42 イオンモール新潟南
イオンモールKYOTO
51000
43 イオンモール広島祇園
イオンモール徳島
50000
44 イオンモール ビンズオンキャナリー 49000
45 イオンモール大曲
イオンモールナゴヤドーム前
イオンモール伊丹昆陽
イオンモール鳥取
48000
46 イオンモール天童
イオンモール熱田
イオンモール日吉津
イオンモール高松
イオンモール タンフーセラドン
47000
47 イオンモール茨木 46000
48 イオンモール甲府昭和 45000
49 イオンモール北戸田
イオンモール名古屋みなと
イオンモール高の原
44000
50 イオンモール大垣 43000
51 イオンモール盛岡南
イオンモール八千代緑が丘
イオンモール四日市
42000
52 イオンモール与野
イオンモール八幡東
41000
53 イオンモールつがる柏
イオンモール石巻
イオンモール三川
イオンモール富士宮
イオンモール三光
40000
54 イオンモール新瑞橋
イオンモール桑名
38000
55 イオンモール下妻
イオンモール船橋
イオンモール京都五条
イオンモール姫路リバーシティ
36000
56 イオン板橋ショッピングセンター
イオンモール大和
イオン近江八幡ショッピングセンター
35000
57 イオンモール川口
イオンモール扶桑
イオンモール明和
イオン津ショッピングセンター
イオンモール大阪ドームシティ
イオンモール姫路大津
34000
58 イオンモール利府
イオンモール新発田
イオンモールとなみ
イオン御経塚ショッピングセンター
イオン春日井ショッピングセンター
イオンモール加西北条
33000
59 イオンモール佐野新都市
イオン海老名ショッピングセンター
イオンモール出雲
イオン松江ショッピングセンター
32000
60 イオンモール銚子
イオンモール東久留米
イオンモール奈良登美ヶ丘
31000
61 イオンモール小山
イオンモール
イオンモール津山
30000
62 イオンモール久御山
イオンモール日根野
イオンモール猪名川
29000
63 イオンモール旭川駅 28800
64 イオンモール富谷
イオンモール富津
ゆみーる鎌取ショッピングセンター
イオン秦野ショッピングセンター
イオンモール都城駅
28000
65 イオンモール津田沼
イオン相模原ショッピングセンター
27000
66 イオンモール山形南
イオン洛南ショッピングセンター
26000
67 イオンモール佐久平 25000
68 イオンモール多摩平の森
広島段原ショッピングセンター
24000
69 イオンレイクタウンアウトレット 23000
70 三宮オーパ2 17600
71 カテプリ 13200
72 水戸オーパ 12500
73 イオンマリンピア専門館 11000
74 ショッピングセンター ソヨカ ふじみ野※ 9400
75 イオンSENRITO専門館 9100

集計に使用したスクリプト(aeonmall_rank.rb)

参考サイト

Zellerの公式

[改訂第3版]を購入して以来、かなり久しぶりに『[改訂第7版]LaTeX2ε美文書作成入門』を購入してみました。第3版のときには、第4章「パッケージと自前の命令」のところは斜め読みでしたが、今回は丁寧に読み進めてみました。p75にZellerの公式を使って日付の曜日を求めるマクロが紹介されています。一見単純そうに見える計算で本当に計算できているのかRubyを使って試してみました。

変数名など、できるだけ忠実に書き換えたつもりです。

それにしても、これ(↓)懐かしいです。学生時代、\LaTeXに悪戦苦闘した当時のことを思い出します。

LATEX美文書作成入門―パソコンによる文書レイアウト

LATEX美文書作成入門―パソコンによる文書レイアウト

zeller.rb

実行例

$ ruby zeller.rb
土

[改訂第7版]LaTeX2ε美文書作成入門

[改訂第7版]LaTeX2ε美文書作成入門

授業時間 100%活用 スポーツ脳はこう鍛えろ!

勉強することは大切だと思っていますが、自分がスポーツ選手であるわけでもなく、またスポーツ選手を育てる立場に身を置くわけでもないので、今までスポーツ脳を鍛えようなどとは思ったことはありません。なので、この本を同僚から紹介してもらわなければ、まず自分からこの本を手にとって読むことはなかったと思います。そう考えると、本との出会いというのは不思議なものですね。以前より人からお薦めと紹介してもらった本は必ず読むということを大切にしているのですが、今回もその流儀を守ってよかったと思っています。

本書は、サッカーをやっていなくても、またはサッカーの指導者でなくても、どんなスポーツをやっている人でも、またはスポーツをやっていない人でも、すべての学生、社会人にとって学びがある本ではないでしょうか。あらゆるものごとに対して、これをやることが人生に役に立つかとか立たないを考えるのではなく、どうすれば役立てられるかという視点に立つことこそが重要なことなんだと気づかせてくれたような気がします。

換字暗号

CodeIQに基本情報技術者試験の午後問題が出ていたので解いてみました。基本情報の過去問を解くのは数年ぶりです。

せっかくなので、実際に入力して試してみました。

h27_fe_pm9.c

実行例

$ gcc -fwritable-strings h27_fe_pm9.c && ./a.out
Evapgvnom5(y..)zvfm6jwra1
VCa

疑問点

コンパイルするときに、-fwritable-stringsオプションをつけたのですが、ポインタ配列のそれぞれの要素をenv_str関数に渡すにはどうすればいいのでしょう? そもそも、このケースではポインタ配列は使うべきではないのでしょうか?