Google Developer Day 2010 に行ってきた

今日は Google Developer Day 2010 に行ってきました。 DevQuiz といい、開発者イベントでの力の入れようはさすが Google という感じでした。それにしてもものすごい人出でびびりました。

DevQuiz は普通に Super Hackers 枠で通過しました。すべての問題に回答はしましたが、パックマンの解の自動探索まではしてません。しょぼいのですが採点結果をさらしておきます。

DevQuiz 採点結果

解の探索アルゴリズムなどに興味があったのですが、ライトニングトークの後の DevQuiz 講評で、最高得点の人は手動で解いてたという話を聞いてちとがっくりきました。 最適解は問題作った人にもわからん とのこと。

鵜飼先生 のオフィスアワーでは直々に Go 言語 の手ほどきを受け、DevQuiz のお題であるしりとりの勝ち手順の探索をするプログラムを書こうとしたのですが、やっぱり時間が足りませんでした。 さきほど 仕様 を見つつ、どうやら動くものを書き上げました。

このコードは The Go Playground でコピペしてボタンを押すだけで実行できます。私もインストールひとつしていません。ありがとう Google。

package main

import "fmt"

var DIC = []string{
"ahatyjeje",
"ecibo",
"ezrjg",
"eemtvf",
"evnaqcfzb",
"oihwxg",
"owdnyjf",
"gvnngklwz",
"gtcidqh",
"gkeub",
"gxhot",
"zfuvedkpqh",
"zijlnnwqzxp",
"zhllfyap",
"hdpjvswd",
"hpkvnsevy",
"hypclovj",
"ddhinzsmy",
"daxbtr",
"yonfzuyygbs",
"yockptdq",
"yesviijzuxl",
"shalq",
"sbmiygnv",
"szdgjmqwv",
"smbtbxwczk",
"qhqmw",
"qepotebdk",
"wjlqsioga",
"fwxhwsc",
"cptvdtqyp",
"porrznbu",
"uaxfjr",
"rjvgi",
"rcfdrqmkfj",
"inancs",
"izzneqcv",
"vwxtzqhbdsm",
"msolien",
"ndqxx",
"bbqst",
"tyjlp",
"juvfhxk",
"kurlll",
"lsevjlphaa",
"ahwvwx",
}

func search(dic []string, choices []string) {
  leaf := true
  next := make([]string, len(choices)+1)
  copy(next, choices)
  s := choices[len(choices)-1]
  t := s[len(s)-1]
  L:
  for _, u := range dic {
    for _, v := range choices { if u == v { continue L } }
    if t != u[0] { continue }
    next[len(choices)] = u
    search(dic, next)
    leaf = false
  }
  if (leaf && len(choices) % 2 == 0) {
    fmt.Printf("%#v\n", choices)
  }
}

func main() {
  search(DIC, []string{DIC[0]})
}

Typo というか CodeRay は Go の syntax highlightening にはまだ未対応ないんですね。残念。

とりあえず基本的な文法やデータ型、各種リテラルの書き方はわかりましたので、あとは他人のコードを読んで学習して、もっとまともなコードが書けるようにしたいものです。

2010/09/29 01:24:00 JST