Introduction

ブログ内検索

  • このサイトの記事を検索 by Google

おすすめの一冊!

無料ブログはココログ

日記・コラム・つぶやき

2011-01-25

算数オリンピック


はてなのエンジニアが「算数オリンピック」に挑戦してみた、
という記事が面白そうだったので、Seaoak も挑戦してみました。


    ⇒ はてな若手エンジニアが「算数オリンピック」の問題を解いてみた算数オリンピック


とりあえず、最初の問題(問題6)は直感で解けました。

2問目(問題1)は、倍数を全部書き出して、出現する数字の数を数えて、正解。

3問目(問題3)は、高校時代に勉強した「整数問題」みたいな印象(なつかしい)。
とりあえず方程式を立てて、各変数が 1~9 の整数であるという条件で
とりうる値を絞り込み、最後は5個くらいのケースを場合分けでしらみつぶし。
かなり時間がかかりましたが、とりあえず全部の値を見つけられました。
# 5個以外の解が無いことも確認できました。

4問目(問題7)は、直感で解いたのですが、不正解。



くやしいので、C言語で解いてみました。

◎ 2問目(問題1)
#include <stdio.h> int populate(int div, int count[]) { int total = 0; int i; for (i=1; i<=9; i++) { int j; for (j=1; j<=9; j++) { if (i==j) continue; { const int x = 10*i+j; if (x % div) continue; count[i]++; count[j]++; total++; } } } return total; } int main(int argc, char *argv[]) { int table2[10] = {0}; int table4[10] = {0}; int table7[10] = {0}; const int total2 = populate(2, table2); const int total4 = populate(4, table4); const int total7 = populate(7, table7); { int i; for (i=1; i<=9; i++) { if (table2[i] != total2 - 21) continue; if (table4[i] != total4 - 12) continue; if (table7[i] != total7 - 8) continue; printf("%d\n", i); } } return 0; }
◎ 3問目(問題3)
#include <stdio.h> int main(int argc, char *argv[]) { int i; for (i=100; i<=999; i++) { if (i % 10 == 0) continue; { const int x = i / 10 + i % 10; if (i % x) continue; } { const int y = i / 100 + i % 100; if (i % y) continue; } printf("%d\n", i); } return 0; }
◎ 4問目(問題7)
#include <stdio.h> int populate(int x) { int count = 0; while (x) { if (x & 0x1) count++; x >>= 1; } return count; } int main(int argc, char *argv[]) { int count = 0; int x; for (x=0; x<(1<<25); x++) { const int mask_column = ((0x1 << (5*4)) | (0x1 << (5*3)) | (0x1 << (5*2)) | (0x1 << (5*1)) | (0x1 << (5*0))); if (populate(x) != 6) continue; if (! ((x >> (5*4)) & 0x1f)) continue; if (! ((x >> (5*3)) & 0x1f)) continue; if (! ((x >> (5*2)) & 0x1f)) continue; if (! ((x >> (5*1)) & 0x1f)) continue; if (! ((x >> (5*0)) & 0x1f)) continue; if (! ((x >> 4) & mask_column)) continue; if (! ((x >> 3) & mask_column)) continue; if (! ((x >> 2) & mask_column)) continue; if (! ((x >> 1) & mask_column)) continue; if (! ((x >> 0) & mask_column)) continue; count++; } printf("%d\n", count); return 0; }
いずれもちゃんと正解が得られました。 ちゃちゃっとビット演算を使うときはC言語でも悪くないですねー

2010-04-17

Apple の戦略

すごくいい記事を見つけたので、ご紹介。

    アップルはなぜ Objective-C にこだわるのか
    << maclalala2

先日の iPhone OS 4.0 SDK の発表以来、Adobe (Flash) の排除とか
開発者の囲い込みとかいう議論を巻き起こしている Apple ですが、
その裏にはこんな戦略があるのでは、という話です。

たしかに Apple は過去に幾度も異なるアーキテクチャへの移行を
成功させてきました。モトローラの 68k から PowerPC、そして
現在の Intel x86 への移行は、いずれも大きな混乱を招くことなく、
むしろ Mac の価値を高める結果になっています。Mac のように
膨大な数の開発者を抱えるプラットホームの移行がこれほどスムーズに
成功し続けている例は他に知りません。

Apple がアーキテクチャの移行を成功させ続けている理由のひとつとして、
非常に高度なエミュレーション技術を持っている点が挙げられると思います。
たとえば、Mac OS X (Cocoa) への移行に際しては、旧来の Mac OS の
アプリケーションをそのまま実行可能な Classic 環境を提供しています。
また、かつての 68k から PowerPC への移行においても、Mac OS (System 7) に
従来の 68k コードを動的に変換して実行する機構を搭載し、PowerPC への
スムーズな移行を実現しています。今回の iPad (iPhone OS 4.0) に関しても
同様の技術を用いている可能性は十分にあると思われます。

そして、今回紹介した記事でもっともインパクトのあった一文がこれ:

基本的にアップルは、CPU をコモディティーとして扱い、 そのことによって「自社製造か購入か」という戦略を自由に選べ、 サプライヤーに対しては強力な支配力を行使し、長期的には 自らのプラットフォームに後光を与えることが可能になるのだ。
この戦略は、おそらく、現在の Wintel 連合に対する 強力なアドバンテージになると思われます。 たしかに Intel の CPU は PC 業界を支配していますが、 スマートフォンや組み込みデバイスの世界では違います。 まだ立ち上がっていない(iPad が火付け役になるかもしれない) タブレットの分野にいたっては、まったく白紙の状態です。 もし、タブレットやスマートフォンにとって最適なアーキテクチャが Intel x86 ではなく、さらに現在存在する開発リソースをそのまま (あるいは最小限の労力で)その「最適なプラットホーム」に 移行させる技術を Apple だけが提供できるとしたら・・・ 10年後の IT 業界の勢力地図が今とは一変している可能性も 決してゼロではありません。 ところで、Apple にひとつお願いがあります。 iPhone OS SDK の Windows 版がほしいです。 iPhone はすごくほしいし、アプリも作ってみたいのですが、 そのためだけに Mac を買うのは財政的につらいものがあります。 アプリが作れないというだけの理由で Android を買ってしまいそうです。 まぁ、いずれにしても今年の夏までは様子見ですけどね。

2009-11-14

スパコンとグリッド

昨夜から「事業仕分けで日の丸スパコンが落選か!?」という話が
話題になっているので、ちょっと支援しようかと思い立ちました。
# まぁ、時すでに遅しかもですが・・・


とりあえず第1回は小ネタです。


    -・-        -・-        -・-        -・-


たまに「グリッドじゃだめなの」という疑問を耳にすることがあります。
ふつうのスパコンは地理的にひとつの場所(計算機センターとか)に
多数の計算機を並べたものですが、グリッドというのはイントラネットや
インターネットで繋がった多数の計算機で分散処理しようという話ですね。

で、違いというと、均質性(スパコンは個々の計算機の性能のばらつきがあまりない
ので処理を分配しやすい)とか、信頼性(長時間連続で計算し続けても故障して
止まる確率が低い)とか、メモリバンド幅とか、まぁ、いろいろあるのですが、
一番の違いは計算機間の通信性能だと思います。多くのスパコンでは、
インターネット接続やオフィスの LAN みたいな低帯域/高遅延のネットワーク
ではなくて、InfiniBand などの(ほとんどスパコン専用の)広帯域/低遅延の
ネットワークを採用しています。具体的に言うと、ふつうのオフィスの LAN の帯域は
100Mbps~1Gbps くらいですが、InfiniBand だと 40Gbps とかになります
(ざっくり言って数十倍の通信速度がある)。まぁ、そのために一カ所にまとめて
設置しているというのもあるわけですが(なにしろ、ケーブルの長さ、つまり
ケーブルを電気信号が伝わる速度まで勘定に入れないといけない世界なのです)。

スパコンのランキングとして有名な Top500 ですが、その指標になっている
LINPACK というアプリケーションでは通信性能はあまり問題にならなかったりします
(だから LINPACK は実アプリ性能を反映していないとよく言われる)。しかし、
アプリケーションの中には実行時間の半分以上を通信に費やしているなんてモノも
あったりするのです。そんなアプリケーションをグリッドで動かそうとしても
ほとんど使い物になりません。

というわけで、解きたい問題によってはグリッドはとても強力なのですけど、
グリッドだけだといわゆるスパコンで解きたい問題の一部しか解けません。
まぁ、両方あると便利だけど、グリッドだけではスパコンの代替にならない
ということになります。

スパコンは必要!!

2009-09-01

ついったー用語

あいかわらず Twitter のフォロー先を探してさまよってます。
ようやく 48 名まで増えたので、ちょっとひと息かなー


で、ついったー用語がだんだんわかってきたのでメモ。

    TL:
        TimeLine。発言が流れていく様。

    Favorite:
        面白いと思った発言につけるマーク。メモ代わりに便利?

    RT:
        ReTweet の略。誰かの発言を引用して発言するときに使うもの。

    #hogehoge:
        特定の話題に関する発言につけるタグ。日本語は不可。

    buzztter:
        今話題になっている単語を教えてくれる。「ばずってる」とか言う。

    ふぁぼったー:
        みんなが Favorite している発言がわかる。

    なう:
        「いま~してるところ」の略(しかし「出産なう」にはおどろいたw)

    空目:
        空耳(そらみみ)の視覚バージョン。一般用語らしいけど知らなかった。

    ついたったー:
        Twitter をしてる人たち。

    リナカフェ:
        秋葉原にあるカフェ。元 Linux カフェ。ついたったーの聖地らしい?


あと、URL を書くときは URL 短縮サービス(bit.ly とか)
を使うのがお約束みたい。

p.s.  昨夜の「ガンダム折れてる」はびっくりしましたw

2009-08-29

Twitter はじめました

Twitter はじめました♪

前から興味があったのですが、自作ツール作りもひと段落して
ヒマになったので、ためしにアカウント作ってみました。

  Seaoak (seaoak2003)

"seaoak" という ID はすでに外国の人にとられてしまっていました。
ちょっと悔しいですけど、とりあえずメルアドに合わせてみました。

Twitter に関しては以下のサイトを参考に。

  Twitter(ツイッター)をはじめよう! - GreenSpace
  Twittter をはじめる人へのアドバイス - 304 Not Modified

ついでに Tween というクライアントも導入しました。
一定時間ごとに自動更新してくれるので、デスクトップの片隅に
常に開きっぱなしにしておくとみなさんのつぶやきが流れていきます。
なかなか便利そうなクライアントですねーw

  Windows用Twitterクライアント[Tween]ベータ公開 - きりの日記
  Tween 配布所
  Tween まとめサイト

とりあえず、100 人フォローするのを目指すのがいいらしいですが、
「フォローしている人」をたどっていくとエンドレス状態になっちゃって、
いつのまにか時間がすぎていきます・・・

で、ちょっと思ったのは、ブログを持っている人だと
その人がどんなヒトなのかおおまかな傾向がわかって
フォローするかどうかの判断材料にしやすいですね。
将来的にお友達になれたとしても話が広がりやすそうですしw

ある程度まとまった文章はブログに書いて、日常のつぶやきは
Twitter に書く、みたいなスタイルがいいかんじかも。

2009-08-11

Electrolux のサーキュレータ

最近、気になった記事とかをどこかに記録しておきたいなぁ~、
ということが増えてきたので、このブログに書いていくことにしました。

せっかくなのでスタイル(テンプレート)を一新しようかとも
思ったのですが、まぁ、そのうちに。



    -・-        -・-        -・-



で、再開第1弾は気になる家電の記事です♪
(いきなり生活感丸出し・・・)


家電製品ミニレビュー エレクトロラックス「クラシックサーキュレーター EFN30」
Seaoak は以前からサーキュレータを愛用しています。 冬の暖房がエアコンだけなので足下がぜんぜん暖まらないのですが、 サーキュレータを使うとポカポカなのです♪ 加湿器と一緒に使うとさらに快適なのですが、 まぁ、それはいずれご紹介します。 で、今のサーキュレータは2年前くらいに通販で買った物なのですが、   ・でかい   ・うるさい   ・薬品くさい   ・角度が変えられない と不満がたくさんあったりします。 そんなわけで、ハンズとか行くたびに「なにかいいのないなかー」と 物色してるのですが、そんな中、以前から気になっているのが Electrolux のサーキュレータ。 モノはけっこう大きいのですが、大きい分、羽の回転数を抑えられて 風切り音も小さくなるかも、とか想像してたり。 スタイルもおしゃれですしねー とりあえず、このレビュー記事を読んでほしくなっちゃいました♪ # でもその前にいまのやつを捨てるのがめんどい・・・

2009-04-25

Chrome は速い

前に読んで面白かった記事を思い出したので、メモ。

    Chromeはなぜ速いのか  --  @IT
    http://www.atmarkit.co.jp/news/analysis/200812/22/chrome.html

つい先日、Google Chrome をインストールしたのですが、
たしかに起動はこれまで経験したことがないくらい速い!
Seaoak はずっと Sleipnir を愛用しているのですが、
すでに Google Chrome と使い分けしはじめてます~

2006-07-23

英語の時制

Life Hacks PRESS の平林さんのプレゼン入門で引用されてたものが
英語の時制の例文にちょうどいいんじゃないかと思いました.

Tell them what you are going to say. Say it. Then tell them what you have said.
言ってることは,『プレゼンで伝えたいことは3回言う』ってことなんですが, まさに『英語の時制』って感じじゃないですか!?

2005-09-29

バイクスタンドを買っちゃいました

BIKE HAND今日はバイクスタンドを入手しました.
期待以上に good です.

Seaoak の MTB (SPECIALIZED のクロカン)は
自宅の玄関兼キッチンに置かれてるのですが,
『捨て本をつめた紙袋に寄りかかってる』状態.
ちょっとバイクがかわいそうだし(ゆがみそう…),
なんかキッチンがごちゃごちゃしちゃうので,
いいスタンドがないかな~,と思ってました.

で,とりあえず,Seaoak としてはいろいろ注文があったわけです.

 ・バイク自体にはスタンドは付けたくない(シンプルに!!)

 ・リアハブのシャフトを左右から挟むタイプはイヤ
  (おばちゃん仕様のママチャリのスタンドみたいで格好悪い)

 ・壁掛けは賃貸じゃムリ

 ・室内なので見た目もそれなりに

BICYCLE NAVI (No.17, 2005 Summer)で,先月ぐらいに購入した BICYCLE NAVI (No.17, 2005 Summer)
を読んでたら,よさげなスタンドが目にとまりました.
アキコーポレーションBIKE HAND というやつです.
見ての通り単純なモノなのですが,シンプルで見た目も悪くないし,
「自転車用」って感じじゃなくて,お値段も手頃.なかなかいい感じ.
さっそく早めに退社して近所のショップに行ってしまいました.
最初はカタログで載ってないからわからんと言われたのですが,
雑誌をショップに持参したら実はカタログ品だったことが判明.
結局,注文から1週間ほどで届きました.

さっそく自宅で設置してみましたが,期待以上にいい感じです.
雑誌に書いてあったとおりバイク自体の重さで安定してます.
バイクをゆすっても OK (多少ふらふらするけど即座に戻る).
バイク(特にホイール)にも妙な力はかかってなさそうです.

まぁ,これで心おきなく紙袋(と中身)を処分できますね.
キッチンがかなりスッキリしそうなので,今から楽しみです!

2005-07-16

ADSLになりました

このたび,3年半に渡ってお世話になった ISDN (64kbps) に別れを告げ,
ADSL に移行することができました.めでたい.

これでようやく世間並みの『ブロードバンド』になったと思われます.
@nifty&イーアクセスで実測 10Mbps (下り)ですけど.

正直なところ,ISDN でも別にそれほど困ってなかったし,移行中に
ネットが使えないのがイヤだったので,ずっとナローバンドのままでした.
ところが先日,なにげなく @nifty のページを見ていたら,ISDN 工事
(アナログ回線に戻す)と ADSL 開通工事がまとめて1日で済むって
書いてあるじゃないですか(ただし,イーアクセスの場合だけかも).
その日のうちに申し込みしちゃいました.

昨日は,朝の出社時にモジュラーを抜いておいて,夜に帰宅してから
ADSL モデムをつないで,20分ほど作業したらあっさり繋がりました.
最近の機器は電源を繋ぐだけでネットワーク設定を全部やってくれて,
簡単ですね(まぁ,そうじゃないとこれほど普及しないでしょうけど).
昨夜と今日一日使ってみて,まったく問題なく使えています.大満足!

ところで,体感的に一番インパクトがあったのはココログの更新作業
だったりします.何か操作してから次の画面が出るまでの時間が
劇的に短縮されました.これできっと更新頻度も上がると思われ…