September 2011
7 posts
Google Developer Day 2011:DevQuiz解答晒し大会(7)
スライドパズル
結果はというと……364/5000。いまひとつうまくいかなかった感じ。
基本は幅優先探索
評価値の小さいものを優先的に探索
ある程度展開した時点で評価値の小さい64組以外をカット(3*3を除く)
評価値 = (パネルのマンハッタン距離の和)+(異なるパネル数)
A*探索も実装してはみたが投入まではいかなかった。
コードはrubyで実装。Pentium4 2.4GHz、メモリ4GBのマシンで実行した。マス数9~16の状態で一通りまわして300問、マス数18~25は1000問くらいの時点で打ち切って64問という具合。効率を一切考えずに書いたんで課題は多いかな。
プログラムは3つに分割した。
1. solver/mod_bfsearch.rb
load 'solver/util.rb'
class Solver
include...
Google Developer Day 2011:DevQuiz解答晒し大会(6)
分野別問題(5) 一人ゲーム
当初、変なヒューリスティクスを入れたコードで2度ほど失敗。最後は簡単な方針でコードを作成して解いた。まずは擬似コード
procedure 一人ゲーム(q)
if (qが空である) return 0
if (∀n[n∈q, nが5の倍数]) return 1
count ← 0
while (∃n[n∈q, nが5の倍数])
q ← div2(q)
count ← count+1
end
return count+1+min(一人ゲーム(elim5(q)), 一人ゲーム(div2(q)))
end
実際のコード(rubyで書いた)
module Solver
module_function
def solve(question)
count = 0
if...
Google Developer Day 2011:DevQuiz解答晒し大会(5)
分野別問題(4) Google Apps Script
APIのドキュメントを見ながら書いてみたスクリプトがこんな感じ。
function myFunction() {
var spreadsheet = SpreadsheetApp.getActiveSpreadsheet()
var response = UrlFetchApp.fetch("http://gdd-2011-quiz-japan.appspot.com/apps_script/data?param=8020112495504250004");
var data_string = response.getContentText();
var data = Utilities.jsonParse(data_string);
for (var i = 0; i < data.length;...
Google Developer Day 2011:DevQuiz解答晒し大会(4)
分野別問題(3) Android
AIDLファイルを使ってアプリケーションを作ればいいことはわかったが、bindServiceを呼び出してから実際にサービスに接続するまでに時間がかかることを知らずにNullPointerExceptionではまること多数。
アプリケーション
package com.example.devquizanswer;
import android.app.Activity;
import android.content.ServiceConnection;
import android.content.Context;
import android.content.ComponentName;
import android.content.Intent;
import android.os.IBinder;
import...
Google Developer Day 2011:DevQuiz解答晒し大会(3)
分野別問題(2) Go
与えられるPNGファイルが以下の制約を持つことを利用している。
RGBそれぞれ256階調である
アルファチャンネルは固定である
Colorオブジェクトを配列に格納する形式だと色数が増えたときに使用メモリ量、速度ともに制約を受けるのでビットマップで色の出現を管理する形式にした。
package main
import (
"fmt"
"io"
"strings"
/* add more */
pngimage "image/png"
)
func CountColor(png io.Reader) int {
cnt := 0
var color [256*256*4]uint64
img, err := pngimage.Decode(png)
if err != nil {
...
Google Developer Day 2011:DevQuiz解答晒し大会(2)
分野別問題(1) Web Game
24問目くらいまでは手で解いていたが、さすがにめげて、素直にChrome Extensionを拡張して解いた。
方針は、カードを順番にめくっていって、まだ出ていないカードなら色と位置を記録、すでに出てきたカードならペアになるカードをめくっていくというもの。1 passで解けるので楽といえば楽。
var openElement = function(id) {
var element = document.getElementById(id);
if (element == null) {
return null;
} else {
var myevent = document.createEvent('MouseEvents');
myevent.initEvent('click', false,...
Google Developer Day 2011:DevQuiz解答晒し大会(1)
今年もDevQuizに挑戦してみた。得点には関係ないけど分野別問題を全問解いたのでそっちも含めて書いてみる。
ウォームアップクイズはランダムに5問問題が与えられてたみたい。僕の問題は以下の5問。
Google Chrome 出題されたタグを含むHTML5文書を書いてChromeで読み込ませ、Developer ToolsでDOM Objectをチェック。
Google Apps Script 当てずっぽうその1。ほぼ総当り。
maps API maps APIのドキュメントとソースコードを眺めて一番それらしい選択肢を選択。
Android 当てずっぽうその2。1回間違い。
Google translate 日本語→ロシア語翻訳しました(邪道…)
分野別問題は項を改めて。
February 2011
2 posts
「ネット・バカ」を読んでいる
Nicholus Carrの最新の著書。翻訳のタイトルで相当損をしている(原著タイトルは “THE SHALLOWS”)。あながち間違ってもないんだけど誤解を招く、というか。
久しぶりに何かを作ろうと思い立って
適当な題材がないかな、と思ってはじめたのが15puzzle。とりあえずHTML+Javascriptで作ろうと考えている。
はじめの1歩ということで、ここまで実装してみた。
tableで15puzzleのボードを表示する。
マウスでパネルをクリックすると、クリックしたパネルの位置を下に表示する。
コードを書く習慣が久しくなかったのでやっぱり時間がかかった。とりあえずこんな感じ。
HTML
<!DOCTYPE html>
<html>
<head>
<title>15 puzzle(table version)</title>
<link rel="stylesheet" type="text/css" href="15puzzle.css" />
<script...
July 2009
2 posts
GMC-4で簡単なコードを書いてみた
小学生時代以来なんで26年ぶりくらいか(笑)。簡単に説明するとこんな感じ。
実行すると7セグメントLEDに「b」を表示
2進LEDを6→5→4→3→2→1→0の順で点灯→消灯
2.の途中で4に到達した時点で7セグメントLEDの表示を「d」に変更
投擲をイメージしてみたもの。どうですかね。
00 TIA B 8 B 02 AO 1 03 TIY 6 A 6 05 L1 CAL SETR E 1 07 TIA A 8 0 09 CAL TIMR E C 0B CAL RSTR E 2 0D CIY 0 D 0 0F JUMP L3 F 1 5 12...
RubyKaigi2009に参加して
今回初めてRubyKaigiに参加した。3日間フルに参加したのももちろん初めて。とりとめなくいろいろ書いてみる。
プレゼンの順序が急遽変わったり、前日の発表を踏まえてプレゼンの内容が変わったり、というあたりは良くも悪くもコミュニティのカラーを反映しているのかと。
Rubyという言語そのものに対する興味とRubyで何をするかという興味の間で揺れ動いた3日間であった。アンケートでも書いたのだが2日目午前のセッションは記念講堂と中会議場の両方を聴きたいくらいだった。
ジュンク堂RubyKaigi店でドラゴンブックを買った馬鹿者は私です (^^;
「正論のとおるコミュニティでありつづけたい」というmatzさんのKey Noteを聴きつつ、標準化の動きもちょっと気になってたりする。
Rubyのコミュニティに関しても踊り場に差し掛かっている感があるのかな、と高橋さんのKey...
June 2009
2 posts
2009-06-01 - 未来のいつか/hyoshiokの日記 →
久しぶりに読み返してみようと思うきっかけをくれたエントリ。
(7/8追記)これじゃ何を読み返そうとしたか分からん。「理科系の作文技術」ですよ。
May 2009
5 posts
で、おしぼりに関しては、わりと普通に、みなさん、手を拭いてから口も拭きます。...
– リヴァイアさん、日々のわざ: おしぼりやウェットテッシュ(紙おしぼり)で手を拭いた後、口を拭いていませんか?
何気なくやっている気がする……
AmazonのECとクラウドに共通する世界観、そしてガベージコレクションに頼り切りの現実
cyberperiscope:
(引用をかなり削っています)
swmemo:
ああ、これはもうちょっと話を広げてプログラミング言語のところまで行っていいと思います。つまり、C言語ってメモリ管理してたけど、だんだん高級言語になってしなくなって(ざっくり、Java的なVM世界と言えばいいのかしらん?)、リソースを綺麗に使うのって意識されなくなってますよね。でもって、意外とメモリリークで駄々漏れになってたりとか。
その意識する単位が一個抽象化されて上がったってことだよな~、と1年半くらいまえに「要するに仮想化って何?」というのを考えてる際に思ってました。そして最近もこの辺の議論をします。組み込みCみたいな役割ってどういう位置づけになるんだろうねぇ、みたいな。
...
三菱地所が異業種との協業でマンション事業に力を入れ始めた。「無印良品」ブランドを展開する良品計画が運営するウェブサイトを通じ、同サイトの会員延べ4万3000人に...
– 三菱地所,無印良品仕様のマンション販売:ITpro
売れるものなら面白い動き、ということでちょろっと注目。ライフスタイルマーケとして住宅は究極ですしね。
そして、前から疑問なのが、住宅メーカーと家具メーカーの距離が遠い点。上手く組めばいろいろ出来ると思うだけど、互いに縁が薄いのかな。(雰囲気的に薄そうではあるけど)
(via swmemo)
2009-04-23 - 大人の科学マガジン編集部BLOG →
動画を見ると、予想通りFXマイコン相当。
April 2009
5 posts
豚インフルがどんな展開をたどるかにかかわらず、感染症の現場では、感染症疫学が非常に大事になる。...
– リヴァイアさん、日々のわざ: こんな時だからこそ疫学の勉強を
Vol.24 4ビットマイコン | 大人の科学マガジン | 大人の科学.net →
ざっと見た限りFXマイコンの4ビットマイコンと同等のものが付録になるみたい。
以前は、もし結婚するとしたら互いにそれほど依存せずに済むような、 「放っておいても一人で生きられそうな人」とだろうと思っていた。...
– だだもれ
分かるなあ、この感覚は。
Oracle and Sun →
IBMはブラフだったか……本業的にはいろいろ影響がありそう。
4/1の雑感
すでに日付が変わって4/2になっているが。2009年の1/4が過ぎた。3/20には結婚1周年(紙婚式)を迎えた。妻にはずいぶん助けられていると思う。
年初に考えていたことの1つに「人に会う機会を増やす」ことがある。ここまでを振り返ると心もとない限り。明日(厳密には今日か)は久しぶりにJUSの勉強会に参加する。少しでも何かを得て形にできれば幸い。
March 2009
1 post
2009-03-14 - 結城浩のはてな日記 →
答えは287桁目になるはずで、その値は0726024914。テキストの円周率表とrubyで簡単なスクリプトを作って力技で解いてみました (^^ゞ 以下はコード
def is_date(str)
days = [31,29,31,30,31,30,31,31,30,31,30,31]
return false if (str.length != 10)
month = str[0,2].to_i
day = str[2,2].to_i
hour = str[4,2].to_i
minute = str[6,2].to_i
second = str[8,2].to_i
return false if (month < 1 || month > 12)
return false if (day < 1 || day >...
February 2009
2 posts
クイックソートループ版
2/14の続き。ループ版のクイックソートも考えてみたのでメモ。
def qsort_loop(array) result = array.dup start = 0 last = array.size - 1 rest = [] while (start < array.size - 1) while (start < last) pivot = start current = start + 1 pivot_val = result[pivot] while (current <= last) current_val = result[current] if current_val < pivot_val if (current -...
クイックソートのアルゴリズムをスクラッチで書いてみた
西尾さんの日記(クイックソート)を見てちょっとrubyで書いてみた。あまりrubyらしくないコードなのはご愛嬌。Arrayの場合分けはfind_allを使った方がすっきりするとは思う。
(2/16追記:データ生成の部分をちょっと書き直した。qsortはそのまま。)
(2/18追記:qsortの中にもちょっと手を加えた。アルゴリズムは変えてない。)
def qsort(array) return array if array.size < 2 left = [] right = [] pivot = array[0] array[1,array.size].each { |i| ((i < pivot)?left:right).push i } qsort(left) + [pivot] + qsort(right) end data...
January 2009
2 posts
Google ChromeでUser Scriptを有効にする
(2.0.156.1の場合)実行したいスクリプトをc:\scripts\に置く
(2.0.156.1以降の場合)Chromeのuserdata directoryにUser Scriptsというディレクトリを作成し、実行したいスクリプトを置く
--enable-user-scriptオプションを指定してchrome.exeを実行する
これだけ、といえばこれだけ。
FreeBSD 7.1-RELEASE
デスクトップのVM環境とNote PC(PCG-SRX7)に入れているFreeBSDを7.1-RELEASEに更新した。VM環境はZFSをいろいろいじってみるつもりで仮想ディスク4つを追加。
Note PCの方は以前から試していた純正のPCMCIA CD-ROMドライブをようやく認識させることに成功したのでちょっとメモがわりに。
カードを挿すとata2で認識するので、atacontrol attach ata2を実行するとCD-ROMドライブを認識する。
カードを抜くときはatacontrol detach ata2を事前に実行しておく(不要かもしれないけど試してない)。
この辺の操作をdevdにやらせるとよさそう。これはまた今度。
December 2008
2 posts
JavaFXで遊んでみる
といってもまだHello, Worldだけど。NetBeans 6.5のJavaFXアドオンをちょっと使ってみた程度。もうちょっと用意されてる部品を使ってみないといけないかな。
経県値マップ
経県値マップによる現時点の経県値。
November 2008
2 posts
駒込庭園めぐり
相方が庭園めぐりをしたい、ということで10時過ぎに家を出る。山手線で駒込まで移動。
六義園で1時間くらい、その後移動して旧古河庭園で40分くらいをすごす。
庭園を出てから駅前のアルプス洋菓子店でシュークリームとケーキをそれぞれいただいて帰宅。
今日の出来事
前日の晩から9時30分ごろまで寝続けていた。
午後になってから相田みつを美術館にお出かけ。バックグラウンドを知ったうえで見ると深い言葉なんだな。
その後銀座を歩く。無印→伊東屋→Apple Storeと。伊東屋でSYSTEMICを探してみたけど、次回入荷が1月末とか。
雪が谷大塚のラーメン屋さん「一丁」で夕食をとって帰宅。午後は充実してた。
September 2008
5 posts
今日のこと
午前中どうしても調子が上がらず。
午後から出社。少し相談に乗っていただいて楽になったかな。
ちょっと思い立ってFIFOLを検索で探してみたら放置中な自分のページの記述に引っかかる(汗)。
今日のこと
散髪に行った。前回は7月だったので2か月ぶりくらいになる。
相方の調子がちょっと悪い日。先月病院に駆け込むことになったほど重くはないが少し腹痛がある様子。
午後は一緒にラーメンを食べに出た程度。2日連続昼食がラーメンだった。
今日のこと
人身事故の影響で菊名駅のホームがあふれ。新横浜まで歩きました。
自分一人でなんとかできると考えるのはいいかげんにせんとなあ。
今日のこと
昨日のどんよりはどこにいったんだか、という感じ。受け入れる心構えができていれば多少痛い現実でも受け入れられるものだ。
テスト
Google Chrome上で書き込んでみる。
August 2008
2 posts
Micro-KIMその後
ようやく部品チェックを済ませた。その結果。
7セグLEDがありませんよ,ええ(野尻先生と同じ状況)
抵抗が1本多かった
7セグLEDは送付依頼のメールを書かねば。
(8/6追記)メールを送付した。簡単だけど久しぶりの英文メールである。
SX-150
昨日「別冊大人の科学マガジン シンセサイザークロニクル」を買ってきて,今朝組み上げた。なかなか楽しめそう。
「大人の科学」のテルミンも買ってるけど絶賛放置中。買ってすぐ組み立てるか否かの差は大きい。
July 2008
3 posts
Micro-KIM
野尻ボードで見て発作的に注文したMicro-KIMが今週到着した。航空便で到着したので相方様は「何が届いたのかと思った」そうで。でも時限爆弾はないよね (^^;)
北京五輪サッカー代表発表
北京五輪代表メンバー
今年に入ってからの選考から考えると妥当な人選かな。
タニ、豊田、本田圭、吉田と思い入れのある選手が多いので僕にとっては楽しみが多いメンバーになった。タニに関しては言うに及ばずだし、豊田と本田圭については星稜出身(もう1つ書くと豊田は小松出身だ)ということなので石川生まれとしてはね。吉田については改めて書きます。
Commons Markerはじめました
Commons Marker
文章のクリップにコメントをつけることができる
すべてのWebページに適用できる
はてなスターでやってたクリップに+αで自分の考えをメモしとける。登録しましたのでまずは使っていこうかと。
June 2008
2 posts
東大工学部で富野節が炸裂!ロボットの開発なんかやめましょう! →
当社取締役会長逝去のお知らせ →
May 2008
6 posts
僕の「はてなスター」の使い方
はてなのサービスで僕がいま唯一活用している,といえるのが「はてなスター」だ。 といってもそんなに難しい使い方はしていない。気をつけているのは1点のみ。
スターをつける際には気になった文章をマークする
こうやって使うとスターの一覧を見返したときに「自分がこのエントリのどこに注目したか」がわかる。梅田望夫氏の読書法を読んでいて思いついたやり方だが気に入っている。欠点はサービスの性格上,抜き出される文章が「はてなダイアリー」の記事に偏ることだ。
(6/9追記)もちろん単純にスターだけをつける場合もある。そのエントリ全体が気になるときと単純に面倒なときなのだが,どちらがどちらかはご想像のうちに……;-)
今日のこと
昼は、4月に相方のiBookに載せたAirMac Extremeカードの設定の続き。接続したはいいのだが,なかなか接続がうまくいかずに難儀していた。アンテナの接続に問題があるかな,と思って見直してみたらそのとおりだった。「ネットワークの不調はまず物理層を疑え」という格言をなめてはいけない。 夕方になって等々力陸上競技場にて「川崎-大宮」戦の観戦、というか応援。前半の2点リードをひっくり返される,どうにも釈然としない負け方。例えると「泣いた相手の逆襲を食らって泣かされた」といったところか。前節は拍手できたのだが,今回はできなかった。ごめん。
「妄想」という漢語の印象から、私たちはそれを「想念が支離滅裂に乱れる」状態だと思いがちであるが、実はそうではなくて、「妄想」が病的であるのは、「あまりに型にはまっ...
– 被害者の呪い (内田樹の研究室)
壊れないということよりも安全に壊れることが家電とかにも問われるのかな…と思いました。
– 安全にわざと壊れる - たろの日記ページ,gooブログ版
今週末のこと
5/10 川崎-浦和の試合を観に。得点に関わる判定がことごとく不利に偏っちゃったね,という敗戦だった。スタジアム内で販売していたアスパラガスをお土産に帰ったら相方には喜ばれた。 5/11 遅めの起床。洋間を片付けてようやく床が見通せるレベルまでこぎつけた。引っ越してからここまで約1か月と20日……。bookoffへ出す本の引取りが遅れたがまあよし。
梅田望夫×まつもとゆきひろ対談 第2弾「ネットのエネルギーと個の幸福」(前編):ITpro →
後編。感想は後ほど。