FC2ブログ

新刊書籍案内(17)「プログラミングコンテスト攻略のためのアルゴリズムとデータ構造」

本屋さんに行った時に偶然に見つけました。プログラミングコンテスト自体には大して興味もないのですが、ソフトウエアに関わる仕事を選択した以上、アルゴリズムには興味があります。これまでもこの手の本は読んできたのですが、コンテストを意識していることもあり、読んでみることにしました。

目次はこんな感じです。

Part 1 [準備編]プロコンで勝つための勉強法
1章 オンラインジャッジを活用しよう

Part 2 [基礎編]プロコンのためのアルゴリズムとデータ構造
2章 アルゴリズムと計算量
3章 初等的整列
4章 データ構造
5章 探索
6章 再帰・分割統治法
7章 高等的整列
8章 木
9章 二分探索木
10章ヒープ
11章 動的計画法
12章 グラフ
13章 重み付きグラフ

Part 3 [応用編]プロコン必携ライブラリ
14章 高度なデータ構造
15章 高度なグラフアルゴリズム
16章 計算幾何学
17章 動的計画法
18章 整数論
19章 ヒューリスティック探索

付録
参考文献

昔勉強した時はC言語だったので、今回はいろいろな言語で書いてみたいと思っています。

480ページで、¥3,866なのでちょっと高いと思いますが、それだけの価値があると信じて購入してみることにします。

関連記事

メガネ

目が悪くならないように、とずっと子どもに言っていたのですが、ふとしたことから視力が落ちているのでは、という疑惑が生じ、眼科へ行ったところ、やはり悪くなっていました(苦笑)。

眼科に行って調べてもらったところ、裸眼で0.5でした。子どもの場合には、正確に調べるのが難しいらしく、特別な目薬を使って、1時間半くらいかけて調べました。大人だともっと簡単に調べることができるのですが。

結局、矯正視力が1.2になるようにメガネを作ってもらうことになりました。早速メガネ屋さんに向かったのですが、それでも出来上がりまで10日かかるそうです。レンズにコーディングとかをするとどうしてもそうなってしまうようです。

経験上、一度視力が悪くなると仮に矯正してもそこで止まることはないです。なので、今後、度はもっと進むことになると思います。ですが、なるべく姿勢などに気づいた時には注意することにします。今までもそうやってきたのですけどね。
関連記事

「SwiftではじめるUI設計&プログラミング」

この業界では有名な柴田文彦氏の著作です。以前から気になっていてチェックしていたのですが、発売と同時にネットで購入してしまいました。現物を見ないのはいつものことですが(苦笑)。

手にした第一印象ですが、「意外にコンパクト」というものでした。内容もコンパクトですね(苦笑)。目次は下記のような感じで、当初、予定されていたものとは異なっています、たぶん。

第1部 UI設計のコンセプト
Chapter01 iOS UI設計の新常識
Chapter02 Xcode操作ガイドマップ
Chapter03 Swiftクイックリファレンス

第2部 Swift時代のUIプログラミング手法
Chapter04 SwiftによるUIプログラミングの基礎
Chapter05 複数のデバイスに対応したインターフェースの実現
Chapter06 新世代のクールなインターフェースの実現

第3部 UIのカスタマイズ手法
Chapter07 主要なビューとコントロールの属性設定とプログラミング

ざっと目を通してみた感じですが、まず、Swiftの文法を扱った部分がかなり薄いです。これだけでは不足なので、別途文法に関する書籍が必要になると思います。

それから、個々については割と詳しく解説してます。ただ、弧を集めても必ずしも全体にはならないと思います。その辺の説明が不足または欠落している、という印象を持っています。

とは言え、私が知らないまたは弱い部分を扱っていますので、読んでみる価値はあると思っています。その際、実際に操作してみる必要がありそうです。操作しながら読む、というのが基本スタイルになりそうです。

なお、この書籍、電子版も同時に発売のようです。Kindle版、Kobo版、両方ありました。

関連記事

Swiftを学ぶ(2)

「Swift離陸ガイド」をテキストに、Swiftをざっと眺めてみることにします。

●引数のデフォルト
Swiftでは、関数の引数にデフォルト値を設定できます。この場合、最後の引数にする必要があります。これは、最後であるならば、引数を省略しても他の引数の順番に影響しないからです。

●可変個引数の関数
func sumOf(numbers: Int...) -> Int {
 var sum = 0
 for number in numbers {
  sum += number
 }
return sum
}
sumOf(3, 4)
sumOf(3, 4, 10, -2)

引数の数が実行時に変わる関数は、次のようにピリオド3つ「...」を使って記述します。可変個引数は関数内では配列として扱われます。可変個引数の他に通常の引数があっても問題ありません。その場合、可変個引数は最後に記述します。デフォルト値を指定する場合には可変個引数の前にします。

●他の関数を返す関数
func makeIncrementer() -> (Int -> Int) }
 func addOne(number: Int) -> Int {
  return 1 + number
 }
 return addOne
}
var increment = makeIncrementer()
increment(7)

関数内で定義した関数を返しています。

●他の関数を引数にした関数
func hasAnyMatches(list: [Int], condition: Int -> Bool) -> Bool {
 for item in list {
  if condition(item) {
   return true
  }
 }
 return false
}
func lessThanTen(number: Int) -> Bool {
 return number < 10
}

var numbers = [20, 19, 7, 12]
hasAnyMatches(numbers, lessThanTen)

条件を関数で指定しています。

●引数は定数がデフォルト
func foo(hoo: Int) {
 hoo = 100 // エラーとなる
}
func foo2(inout hoo: Int) {
 hoo = 100 // エラーにはならない
}

関数の引数は関数内で「定数」がデフォルトとなります。関数内で引数を「変数」として扱いたい場合にはvarを付加する必要があります。varがない引数を変更するとエラーとなります。

●値を返す引数
func swapTwoInts(inout a: Int, inout b: Int) {
 let temp = a
 a = b
 b = temp
}
var val1 = 5
var val2 = 10
swapTwoInts(&val1, &val2)

C言語のポインタ渡しの引数に相当することをSwiftでやる場合にはinoutを引数に付加する必要があります。呼び出し側では引数に&を付加する必要があります。また、inoutを付加した引数はvarやletにすることはできません。

これで、関数については終わりです。
関連記事

人間の道徳、道徳的価値について

いくつかあるものの中から、比較的わかりやすいものをご紹介します。
- - - - - - - - -
●人間の道徳、道徳的価値について
人間は絶えまない努力と秩序の中で人生の綾を織りなす。果てしなく続く人生との戦いの中でこぼれるばかりの微笑み、溢れるばかりの幸福を得るため、色とりどりに咲かす綾織の如く。秩序ある生活、満たされた人生、どれひとつ人間にとっては必要なものである。体面ある生活、物事の判断、ゆとりある暮らしすべてが人間にとって必要不可欠なものである。どれひとつとっても、何かひとつ欠けても人生という囲いの中では生かされる(活かされる)ものである。
道徳とは、道徳的価値観とはその秩序と体面の中で生じる各個人の行い。すなわち道徳的価値観なるものが存在するとしたら各個人の中に生じる。

宇宙という星のもとから見れば人生の縮図が道徳である。秩序ある暮らし、満たされた生活。その中に分け入れない者達もいる。秩序から抜け、道徳そのものからはみ出した者達。価値ある人間でありながらそのレールに乗れない者がいる。縮図という断面から見るとまこと愚かしい。

平均的人間の価値観とは脱線した者達をも含めて人間のエゴである。

●人間の道徳とは
困りきった世の中。体面と秩序の中で順風満帆生きられる者は良い。その生活からはみ出した者達がなぜ今多いのか...。混迷の世に生きる術を失い、自活せしめんともがきあがく姿、また、それらのすべてを放棄した者達。何が良くて何が悪いのか、森羅万象、現象的事柄になす術もなく、右往左往いたし物事の秩序も判断も狂う時代になった。

新たなる意識の中で「人生とは」「人間とは」何か、生きる目的の中に生ずる全ての災いが今日の繁栄を築いたとしても、それはまた、崩壊への一歩であったことを悟らねばならぬ。この国の繁栄がもたらしたものは崩壊であり、その全てが繁栄の中に生じた落とし物。混迷の世に生じた新たなる認識の元で人々は悟らねばならぬ。

神は全てを語り、末法の世をいざないの道へと導くであろう。
関連記事

ベートーベンのバイオリン協奏曲

ティンパニーの4打で曲が始まるというとても珍しい協奏曲です。ベートーベンはバイオリンと管弦楽のための曲を全部で4曲残したようです。うち2つは小作品(ロマンスト長調、ロマンスヘ長調)。あとの2曲は協奏曲なのですが、うち1つは未完に終わりました。なので、唯一完成したバイオリン協奏曲はこれだけになります。しかし完成度は高いです。

協奏曲と言えば、独奏者の腕の見せ所であるカデンツァが聴きどころです。が、ベートーベン自身、第1楽章のカデンツァを遺していません。理由はよくわかりませんが、ベートーベン自身、バイオリンをそれほど弾きこなせたわけではなかったようで、演奏者に任せたのでは、と言われているようです。なので、演奏者がそれぞれカデンツァを作曲しています。

私の記憶に残っているカデンツァが誰の作曲なのかはわかりませんが、普通カデンツァと言えばソリストが自由に弾くイメージがあったのですが、それは、ディンパニーが合いの手?を入れるような感じでした。いやぁ、驚きました(苦笑)。

あとで調べてみると、代表的なカデンツァが幾つかあるようですが、ベートーベン自身によるピアノ協奏曲県曲版のカデンツァというものがあるようです。音源はないので、記述内容から推測するしかないのですが、それによると、ディンパニーのパートがあるみたいです。

この曲を聴いてみたいのですが、例によって、iTunes Storeで探してみました。試聴もできるのですが、肝心の部分の試聴はできませんでした。あとは購入するか、知識のある方のアドバイスを受けるしかないですね。取り敢えず購入という方向で見てみたのですが、協奏曲にロマンスト長調、ロマンスへ長調の組み合わせのアルバムがありました。価格もそれなりだったので購入して聴いてみました。

結果としては期待したものではなかったです。しかし、演奏はよかったです。日本人の奏者みたいですね。

結論としては、ベートーベンのバイオリン協奏曲は1曲であって1曲でない、ということですね。カデンツァを探す旅は当分続きそうです(苦笑)。
関連記事

挙動不審

先日、と言ってもひと月前くらいになるのですが、Mac OSX Yosemite 10.10.2が公開されたのでアップデートしました。しばらくはこれといった不具合も見つからなかったので安心していたのですが、最近、挙動不審に気づいてしまいました(苦笑)。

「メール」というメーラーが付属しているのですが、これの機能の1つに「マートメールボックス」というのがあります。端的に言うと、指定された条件のメールをピックアップしてくれる機能です。結構便利なので使っているのですが、何かのタイミングで機能しなくなることに気づきました。こうなると、メールを再起動させても現象は変わらず、結局、システムを再起動しないと直りません。

現象が発生するタイミング、条件など不明なので、再現させることができていません。現象を把握しているだけです。ただ、どれか1つのスマートメールボックスだけが機能しなくなる、というわけではないこと、システムを再起動しないと直らないことから、アプリ側(メール)の問題ではなく、システム側の問題だと思っています。

iOSには機能追加よりも安定性、という方針が出ました。Mac OSXも毎日使うものなので同じような方針でやってもらいたいと思っているところです。
関連記事

au WALLET クレジットカード

実に紛らわしい。先日、と言ってもそれなりに過去の話なのですが、au WALLETカードを作りました。そしたら、今度はau WALLETクレジットカードを作ってください、と言われました。よくよく話を聞いてみると、以前、auじぶんカードとして発行していたものが、サービス終了のため、au WALLETクレジットカードに変えて欲しいらしいです。

一方はプリペイドカード、他方はクレジットカード。クレジット機能が不要だったので、プリペイドカードを作ったのですが、結局、クレジットカードも作ることになってしまいました。なんかスマートではありませんね。

ただ、このカード、じぶん銀行と組み合わせたりすると結構ポイント還元がありそうです。要は使い方です。単純に毛嫌いしないで、上手く使ってみようかと考えているところです。
関連記事

XPERIA Z3、その後

購入してから半月ほど経過しました。それなりに使っていますが、機種変更した一番の要因であるFelicaの感度については申し分ないです。駅の改札を通る際に実にスムーズに通過することができるようになりました。かなり満足しています(笑)。

一方、電子マネーを使って社内の自動販売機で購入することが多いのですが、こちらはなかなか認識してくれないことが多いです(苦笑)。Edyで購入しているのですが、そもそも、その認識がよくないのか、例えば、Suicaならきちんと認識してくれるのか、はたまた自動販売機との相性の問題なのか、原因が絞れていない情況です。これに関しては、いろいろ調査してみようと思っています。

リアルタイムで認識できるだけの実力はあるので、だらけているような気がしています(苦笑)。皆さんのスマホでは如何でしょうか。

それから、これは、電話としての基本性能なのですが、とても綺麗に通話できます。以前使っていたHTCだと何を言っているのか聞き取れないほどの通話品質が多かったのですが、それがなくなりました、今のところは。久しぶりに感動しました。パンフレットなどを見ると他のことばかりPRしていますが、電話であるならばこれが基本だと思うのですけどね(苦笑)。
関連記事

結婚について

いくつかあるものの中から、比較的わかりやすいものをご紹介します。
- - - - - - - - -
結婚、人はすべてにおいてまどろみの中、夢を見るものである。人の意識、価値観の中でおのれにふさわしき人物に遭遇し、触れ合いあることを願う。その中でもおのれの価値観にふさわしい人物に遭遇できるものは幸せである。

結婚とは、準備万端整いたる時期来るからとてできるものではない。おのれの価値、人物、よろしきに得て出逢いの中から生じる互いの心模様。互いの環境の違い、意識観の違い、見るもの、触るもの、得るもの、互いに重なり合い条件に合えば心、満たされるであろう。しかし、世の中、そのように恵まれたる者達は少ない。心の違い、環境の違い、性格の違いにて互いの心重なり合うこともなく、索漠とした心模様で人生の選択をした者達が多い。意識の違いはいかんともしがたく、心の違いは満たされることなく価値観の違いは貧しく寂しいものである。得るものの中に幸福を見いだすこともなく、心の違いが互いの寂しさを招く。

結婚とは互いの環境の違い乗り越え、一途な思いの中に生じる互いの理解である。理解なき者達がどのように努力したことで大局的な溝は埋めることはできぬ。人生の半ば越えた頃、この違いははっきりと見えてくるであろう。

人生とは理解なき者達が理解ある秩序を求め、駆け登る階段のようなもの。一気に登れば不発に終わり、行きつ戻りつ、思考の中で選び踏み留まるのも選択のうち。一段一段登るのも階段。一足飛びに登るのも階段。自由意志の中で選びたる。秩序の中でその選択が間違っていたとしても、選考の例に並びたるれば、その意志はもはや秩序の中に保たれてしまう。互いの違いに気付いた時、もはやこの例からはみ出すこともできず、右往左往しながら人生の基準に沿って生活の基盤を作らねばならぬ。

結婚とは互いの価値観が違ったとしても埋め得る理解があれば充分に生活を満たすことができる。理解のないところに波風が立ち、互いの自己主張で理屈をこね、愚夫、愚妻と化してしまう。

心の見栄を張るでない。選択の間違いを相手になすりつけるでない。充分な心でもってしても、時間の経過とともに互いの理解を越えたところで問題の意識は眠っている。それは選択の違いではない。どこにでもあり得る工事の図面である。出来上がる家庭の図面のようなもの。心で描いた図面に間違いがあれば修正する。意見があれば書き直す。この心がなくばどのような相手と一緒になり、互いに必要としても無理解の中では成長の過程にはならぬ。人の生活も、人間の成長もこの理解の中から生まれる。

秩序を保つため、理解も示さず、無慈悲で無関心では、ただ理屈をこね、理想の青写真の中で幸福な家庭を演じる芸人のようなもの。この青写真には心がない。形作った体裁の中でおのれの自我だけに染まった究極の画材なり。

互いの知識を持ってしても得ることなき人生であるば、この結婚は破滅である。破滅的意識の過剰で耐えうる人生であるば、心模様の数々に憎しみが生じ、互いの心の牽制となる。

互い違いの人生であるば、心の溝埋めることなき。理解なき体面と秩序の中では幸福得ることなき。人生の過程に生じた試練、乗り越えるべく人々は悲しみの色に染まる。悲しみ多き人生の選択となる。

心に喜び作り、幸福の価値観がどのようなものであろうと、人生の中に自分のまどろみを見つけ、新たなる躍進となられるよう、形造られんことを。幸福の価値があなた方の求めるものであったとしても、求め得るものでなかったとしても互いを傷つけることなき。互いの理性を越えた意識の中でいたわりある生活、張りのある人生を送られんことを。
関連記事
プロフィール

core_dump

Author:core_dump

「AyajinSoft」の[Ayajin」ですが、今は昔、某所に派遣されていた時に、「怪しい人=怪人」と呼ばれたことがあり(オシロスコープなど、他の人が持っていないようなものを持っていただけなんですけどね)、なぜかこの音が気に入ってしまい、以来、この表記を使っています。

基本的に組み込み技術者です。一時期、iOSアプリの開発に従事していましたが、今後は制御系を中心にやっていこうと思っていますが、なにぶん相手のある話なので、組み込みや制御を中心に、アプリ寄りなところまで含めて幅広くやって行こうと思っています。

技術者なのですが、最近、いろいろなことに興味や面白さを感じるようになりました(ソフトウエア工学だけでなく、自然科学、人文科学、社会科学などなど)。それが高じて、現在、大学で哲学を中心に勉強しています。

最新記事
最新コメント
月別アーカイブ
カテゴリ
アクセスカウンタ
検索フォーム
RSSリンクの表示
リンク
ブロとも申請フォーム

この人とブロともになる

QRコード
QR