DevQuiz しりとりで使ったプログラム #gdd2010jp

まず、今回のクイズのしりとりに勝つため私が考えた作戦は、相手(コンピュータ)に、先頭に使用されているより末尾に使用されている数が多いアルファベットの単語から選ばせるようにすれば、そのうち相手が手詰まりになって勝てるだろうというものでした。

そのため、選択肢となる単語に使用されている先頭のアルファベットと末尾のアルファベットの数を調べるためのプログラムを作成し、その結果をもとに以下の優先順位で回答を選択していきました。

1.単語の末尾が先頭の方が少ないアルファベットのもの
2.単語の末尾が先頭と末尾で同じアルファベットのもの
3.単語の末尾が先頭の方が多いアルファベットのもの

例えばLv3の場合、以下のような結果になるので、提示される選択肢の中からできるだけ末尾が、b、f、g、i、k、q、s、u、v、wのものを選択していけば良いということになります。

a :  14   11  >>
b :  11   12  <<!
c :   4    4  ==
e :   4    4  ==
f :  11   12  <<!
g :  11   12  <<!
h :   4    4  ==
i :   4    5  <<!
j :  14   11  >>
k :  11   12  <<!
l :   3    3  ==
m :   4    4  ==
n :   3    3  ==
o :  14   11  >>
p :   4    4  ==
q :  11   12  <<!
r :   3    3  ==
s :  11   12  <<!
t :   4    4  ==
u :  11   12  <<!
v :  11   12  <<!
w :  11   12  <<!
y :   4    4  ==
z :   5    4  >>

--- siritori.pl

#!/usr/bin/perl
#
# GDD 2010 DevQuiz しりとり
#

use strict;
use warnings;

my %alpha_head = ();
my %alpha_tail = ();

open my $infh, '<', "siritori.txt";
while (my $word = <$infh>) {
    chomp $word;
    my $head = substr($word, 0, 1);
    my $tail = substr($word, length($word) - 1, 1);
    $alpha_head{$head}++;
    $alpha_tail{$tail}++;
}
close $infh;

foreach my $key (sort keys %alpha_head) {
    print "$key :" . sprintf("%4d", $alpha_head{$key});
    print " " . sprintf("%4d", $alpha_tail{$key});
    if ($alpha_head{$key} < $alpha_tail{$key}) {
        print "  <<!\n";
    }
    elsif ($alpha_head{$key} > $alpha_tail{$key}) {
        print "  <<\n";
    }
    else {
        print "  ==\n";
    }
}
[2003] Posted by kagahiro at 2010/08/23 17:18:13
オープン | 0 point | Link (1) | Trackback (0) | Comment (0)

キーワード
Google 開発者 クイズ 2010 しりとり ソースコード 

kagahiroのホームページ


DevQuiz しりとりで使ったプログラム #gdd2010jp 関連リンク

DevQuizやってみましたが・・・ #gdd2010jp
Google Developer Day 2010 Japan」への参加証を獲得するためのクイズ「DevQuiz」をやってみました。結果はラウンド3のしりとりLv3までクリアして時間切れ終了でした。「パックマン」は難しかったですね。結局、仕...

トラックバック

トラックバックURL :


DevQuiz しりとりで使ったプログラム #gdd2010jpへのコメント


詳細の入力フィールドを表示する

おすすめ  (チェックしてコメントすると最新情報に掲載)
コメント :

< 前の投稿      次の投稿 >

アクセスランキング

今日のアクセスランキング TOP 10

  1. SQLのSELECT文で先頭から上位(TOP)10件のレコードを取得する方法(SQL Server、Oracle、MySQL、PostgreSQL) (156 PV)
  2. ウェブページを1回だけリロード(再表示)する方法 (12 PV)
  3. [将棋]竜王戦第三局は居飛車振り飛車の対向型で丸山忠久九段が勝利 #竜王戦 (9 PV)
  4. [食べ物]七草粥(ななくさがゆ) (9 PV)
  5. [将棋]NHKトーナメントで佐藤康光九段がなめプ角頭歩戦法で佐藤天彦名人を撃破 (7 PV)
  6. FC2動画やYouTubeなどから無料動画(映画やドラマ、アニメ、音楽など)を探す方法 (7 PV)
  7. フリーソフトウェア/オープンソースのタブー (7 PV)
  8. PHP+MySQLの掲示板システム「CommentPP 1.1」リリース (7 PV)
  9. [C言語]UTF-8でエンコードされた文字列の部分文字列を取り出すコード (6 PV)
  10. [gcc]iconvで文字エンコードを変換するサンプルプログラム (5 PV)

今月のアクセスランキング TOP 10

  1. SQLのSELECT文で先頭から上位(TOP)10件のレコードを取得する方法(SQL Server、Oracle、MySQL、PostgreSQL) (3231 PV)
  2. [将棋]NHKトーナメントで佐藤康光九段がなめプ角頭歩戦法で佐藤天彦名人を撃破 (419 PV)
  3. ウェブページを1回だけリロード(再表示)する方法 (268 PV)
  4. [食べ物]七草粥(ななくさがゆ) (153 PV)
  5. FC2動画やYouTubeなどから無料動画(映画やドラマ、アニメ、音楽など)を探す方法 (145 PV)
  6. [C言語]UTF-8でエンコードされた文字列の部分文字列を取り出すコード (139 PV)
  7. [将棋]佐藤和俊六段がまさかの陽動居飛車で橋本崇載八段に勝ち決勝進出 #NHK杯 (128 PV)
  8. Windows 10の無料アップグレードは2016年7月29日まで、「延長は絶対にない」 (126 PV)
  9. フリーソフトウェア/オープンソースのタブー (120 PV)
  10. 2NN 2ちゃんねるニュース速報+ナビ (120 PV)

アクセス統計

ディレクトリ

関連サイト