Home > Archives > 2007年8月 Archive

2007年8月 Archive

FizzBuzz問題

使えないプログラマーさんのところで、面白い記事を見つけました。

使えないプログラマー: FizzBuzz問題

元ネタはこちら
どうしてプログラマに・・・プログラムが書けないのか?

以下、引用


かなりの試行錯誤の末に、コードを書こうともがいている人たちというのは、単に大きな問題に対して苦労しているのではないことがわかった。やや小さな問題(連結リストを実装するというような)に対して苦労するということでさえない。彼らはまったくちっぽけな問題に苦労しているのだ。

それで、そういった類の開発者を見分けるための質問を作り始め、私が「Fizz-Buzz問題」と呼んでいる問題のクラスを考え出した。これはイギリスの学校の子供たちがよくやっている遊び(というかやらされている遊び)にちなんで名付けた。Fizz-Buzz問題の例はこんな感じだ。

1から100までの数をプリントするプログラムを書け。ただし3の倍数のときは数の代わりに「Fizz」と、5の倍数のときは「Buzz」とプリントし、3と5両方の倍数の場合には「FizzBuzz」とプリントすること。

ちゃんとしたプログラマであれば、これを実行するプログラムを2分とかからずに紙に書き出せるはずだ。怖い事実を聞きたい? コンピュータサイエンス学科卒業生の過半数にはそれができないのだ。自称上級プログラマが答えを書くのに10-15分もかかっているのを見たこともある。

すぐ思いついたので、C#で書いてみた。


using System;
using System.Collections.Generic;
using System.Text;

namespace FizzBuzz
{
class Program
{
static void Main(string[] args)
{
// 3の倍数のときのメッセージ
const string MultipleOfThree = "Fizz";

// 5の倍数のときのメッセージ
const string MultipleOfFive = "Buzz";

StringBuilder message = new StringBuilder();
for (int i = 1; i <= 100; i++)
{
if (i % 3 == 0)
{
message.Append(MultipleOfThree);
}
if (i % 5 == 0)
{
message.Append(MultipleOfFive);
}
if (i % 3 != 0 && i % 5 != 0)
{
message.Append(i);
}
message.AppendLine("");
}

Console.Write(message.ToString());
}
}
}

改めて見てみると、3と5両方の倍数の場合の表示方法はちょっとまずいのかもしれないと思えてきた。
このケースでは結果的に問題は無いのだが、仕様変更して「HogeMoge」にしろと言われたらロジックが変わってしまうからです。
使えないプログラマーさんのところで書かれているように、「FizzBuzz」と素直に書く(さらに言えば定数にするのがベターかと)のが正解かと思います。

みなさんの作ったコードはいかがでしょうか。

  • Comments (Close): 0
  • TrackBack (Close): 1

プログラマになる方法

  • Posted by:
  • 2007年8月23日 23:38

プログラマになる方法

思わず、吹き出してしまいました...

  • Comments (Close): 0
  • TrackBack (Close): 0

IT失敗学の研究

  • Posted by:
  • 2007年8月 9日 23:57
  • 書籍

IT失敗学の研究―30のプロジェクト破綻例に学ぶ
IT失敗学の研究―30のプロジェクト破綻例に学ぶ

図書館で借りたところ、面白かったので購入しました。
お勧めの欄に書いている、アンチパターンと同じで失敗から学んでいこうという趣旨です。
ただ、アンチパターンに比べると、論理的な分類がされていないので体系的に学べないのが残念です。
動かないコンピュータのように、読み物としては面白いと思います。

  • Comments (Close): 0
  • TrackBack (Close): 0

SEO、SEMの本質

「仮説」「実施」「検証」で利益を最大化! “キーワード有効度調査”からはじめるSEM戦略
「仮説」「実施」「検証」で利益を最大化! “キーワード有効度調査”からはじめるSEM戦略

会社のHPはただ作るだけではなく、きちんとビジネスにつなげていくべきものであると思います。
そこで、SEM関連の書籍を探しに本屋に行ったのですが、どれもひどい内容で....
驚くべきことに、「被リンクを増やすためのダミーサイトを大量に作れ」とか平気で書いているものまでありました。
ちょっと考えれば分かることですが、こんなやり方をGoogleやYahooが許すはずもなく、いずれはGoogle八分にされるのがオチでしょう。
平積みされていた本だったので、結構な売れ行きなのだと思いますが、一体どんな人がこの本を買うのだろうと不思議な気分になりました。

大事なことは、検索順位を1位にすることではなく、良い商品をより効果的な方法で認知してもらって購入に繋げるという一連の考え方なのです。
この本は、SEMをきちんとビジネスとして考えており、内容の無い被リンクを増やすことに否定的な立場をとっています。
その上で、論理的に商品購入までの手法を説明しているという点で良書だと思います。

まあ、ちょっと残念だったのは、オーバーチュアのキーワードアドバイスツールの使い方がメインなので、今となってはあまり役に立たないかもしれません。

  • Comments (Close): 0
  • TrackBack (Close): 0

ビズ体験DSシリーズ 起業道-飲食

  • Posted by:
  • 2007年8月 5日 23:50
  • ゲーム

ビズ体験DSシリーズ 起業道-飲食
ビズ体験DSシリーズ 起業道-飲食

ちょっと前のR25に広告が出ていたので、買ってみました。
発売元はコクヨとのこと。いつの間にかゲームも作っていたんですね。

内容は広告代理店に勤務する主人公が、レストランやラーメン屋などの飲食業を開業するというお話です。
シュミレーションゲームとのことですが、どちらかというとアドベンチャーゲームの気がします。
あまり分岐もなく、経営の基礎知識を学ぶことが主体となっているので、経営に興味の無い人は全く面白くないかもしれません。
あと、PSP版の起業道と登場人物が同じなのも、飽きに繋がるのではないでしょうか。

とはいいつつも、あくまでもゲーム上の疑似体験と割り切れば、それなりに楽しめると思います。

  • Comments (Close): 0
  • TrackBack (Close): 0

MODxでつくる!最強のCMSサイト

  • Posted by:
  • 2007年8月 1日 22:47
  • 書籍

MODxでつくる!最強のCMSサイト
MODxでつくる!最強のCMSサイト

先月買ったものですが、今更ながら評価してみようと思います。

CMSのメリットは、普通に作ることに比べてSEO効果が高く、メンテナンス性に優れていることだと思います。
逆にデメリットがあるとすれば、決められた構文で作成しないといけないため、リファレンス本などが手元に無いと初心者にはちょっと難しいことでしょう。
特にMODxは、大変機能が充実しているのですが知名度が低く、情報元が限られてくるので、このように手順が細かく載っている本は貴重だと思います。
サンプルソースがダウンロードできるようになっているのも、少しポイントが高いです。

  • Comments (Close): 0
  • TrackBack (Close): 0

Index of all entries

Home > Archives > 2007年8月 Archive

Search
Feeds
Tag Cloud
Recommend

SQLパズル 第2版 プログラミングが変わる書き方/考え方
SQLパズル 第2版 プログラミングが変わる書き方/考え方

ソフトウェアアーキテクチャ―ソフトウェア開発のためのパターン体系
ソフトウェアアーキテクチャ―ソフトウェア開発のためのパターン体系

ITアーキテクト vol.1
ITアーキテクト vol.1

オブジェクト指向における再利用のためのデザインパターン
オブジェクト指向における再利用のためのデザインパターン

アンチパターン―ソフトウェア危篤患者の救出
アンチパターン―ソフトウェア危篤患者の救出

おら!オラ!オラクル
おら!オラ!オラクル

プログラマの数学
プログラマの数学

スタイルシート スタンダード・デザインガイド―SEO/ユーザビリティ/アクセシビリティを考慮した実践的HTML&CSSデザイン術
スタイルシート スタンダード・デザインガイド―SEO/ユーザビリティ/アクセシビリティを考慮した実践的HTML&CSSデザイン術

セオリー・オブ・スタイルシート
セオリー・オブ・スタイルシート

テクニカルセキュリティ技術
テクニカルセキュリティ技術

まってる。
まってる。

Return to page top