トップバッターの@daiksyです!!
さて、初日ということでまずは小手調べ。
みなさんはある文字列が変態かどうか、気になることってありませんか?
Scalaなら、すごく簡単に調べることができます。
Scalaには、「暗黙の型変換」という機能があって、これを用いることで、既存の型を拡張することができます。とりあえずやってみましょう。
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
trait hentaiConverter { | |
implicit def stringToHentaiChecker(s: String) = HentaiChecker(s) | |
case class HentaiChecker(s: String) { | |
def isHentai: Boolean = s == "変態" | |
} | |
} |
例えば、"変態".isHentai はtrueを返します。
もう少し拡張してみます。
せっかくだから、文字列の変態力を調べられるようにしましょう。
Googleの検索で、「変態」に続いて文字列を指定した場合の結果件数を、変態力とみなしましょう。実装はこうです。
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
trait hentaiConverter { | |
implicit def stringToHentaiChecker(s: String) = HentaiChecker(s) | |
case class HentaiChecker(s: String) { | |
def hentaiPower: Int = { | |
import scala.io.Source | |
val contents = Source.fromURL("http://www.google.co.jp/search?q=変態+%s".format(s), "utf8").getLines.mkString | |
val searchCountPattern = "約? ?([0-9,]+) ?件".r | |
val numberPattern = "[0-9]+".r | |
val searchedCount = numberPattern.findFirstIn(searchCountPattern.findFirstIn(contents).getOrElse("0").replace(",", "")).getOrElse("0").toInt | |
searchedCount | |
} | |
} | |
} |
ちなみに"だいくしー".hentaiPowerによる変態力は、10,700,000でした。
上記のコードですが、実は動きません。
Googleの検索は、ユーザエージェントが未指定だと403を返すからです。
実際にGoogleに対してスクレイピングを仕掛けると、たぶん規約に反すると思うので、それっぽいけど動かないコードにしてます。
まぁ、動かないコードさらしてドヤ顔するあたりが、だいくしークオリティですな!!
さて、明日は@dproject21さんですね!
よろしくお願いします!
0 件のコメント:
コメントを投稿