滝谷日記

«前の日(05-19) 最新 次の日(05-21)»

2006.05.20 Sat

# [音楽] music storeでぽちっとな

[エレクトロニック-Today'sトップソング]から。iPodのCM曲。アルバム買い。
ばりばりロックかと思いきや、Captain Funkみたいな感じ。
Rin!)!)!)r!)se - Rin!)!)!)r!)se Japan Edition

NHKの番組エンディングから。一曲のみ。
泥臭くて暑苦しいほどに前向きな感じは、やっぱり好き。アルバム買いすべきだったかなと、今は反省している。

あと、Amazonへのあさましリンク作成中"ええねん"検索で出てきた
「奈良の奥さん、気持ちええねん 声もでるでる鹿もでる」
ってのが少し気になった。
ウルフルズ - ええねん

[エレクトロニック-Today'sトップソング]から。アルバム買い。
どこかで聞いた声だなぁと思い、過去アルバムをちまちま確認。2年くらい前の深夜番組エンディングでかかってた"東京喫茶"を買おうかどうか迷ったのを思い出した。
ピコピコ感Up、かわいらしさは控えめになったような気がする。
capsule - L.D.K. Lounge Designers Killer

# Amazon, Music Store で買えない物

iPodのCM曲を買って思い出したCM。ソニーのちびロボットQRIOが博物館みたいなところでいろんなものに興味津々、というもの。そのCMで使われていたdreamlab「love to love you」を2年前探したけど売ってなくて買えなかった。で、今日あらためてAmazon、iTune Music Storeで探したけどなかった。Amazonで買えないCDってあるんだねぇ。
http://www.dreamlabmusic.com/ (*1)

追記(2006-06-12): ニョロbwmcさん、情報Thx。
(*1)は閉鎖されたっぽい。
dreamlabのMySpaceで聴けます。
参考レビューはニョロbwmcさんところでどうぞ。

本日のツッコミ(全2件) [ツッコミを入れる]

+ ニョロbwmc [オーストラリアからカリフォルニアに移って活動していたDREAMLABの6曲入りCDは、現在オレゴンのCDBABYのみ..]

+ Tongpoo [ニョロbwmcさん、情報ありがとう。あのサイト見れなくなっていたのですね。結構凝っていて好きだったのに残念。]

[]

2010.05.20 Thu

# 「リバーシのアルゴリズム」をRubyで その4

前回のつづき。第3章「探索アルゴリズム」。

# -*- coding: sjis -*-
class AI
  def move(board)
  end
 
  # 事前探索の先読み手数
  PRESEARCH_DEPTH = 3
  # 序盤・中盤の先読み手数
  NORMAL_DEPTH = 15
  # 必勝読みを始める残り手数
  WLD_DEPTH = 15
  # 完全読みを始める残り手数
  PERFECT_DEPTH = 13
 
end
 
require 'point'
require 'disc'
require 'board'
 
class AlphaBetaAI < AI
  MAX_VALUE = 2 ** 30 - 1
  MIN_VALUE = -(2 ** 30)
 
  class Move < Point
    attr_reader :e
    def initialize(x = 0, y = 0, e = 0)
      super(x, y)
      @e = e
    end
  end
 
  def move(board)
    movables = board.get_movable_pos
 
    if movables.empty?
      #打てる箇所がなければパスする
      board.pass
      return
    end
 
    if movables.size == 1
      #打てる箇所が一つだけなら探索せず、即座に打って返る
      board.move(movables[0])
      return
    end
 
    # 事前に手をよさそうな順にソート
    sort(board, movables, PRESEARCH_DEPTH)
 
    if Board::MAX_TURNS - board.get_turns <= WLD_DEPTH
      limit = MAX_VALUE
    else
      limit = NORMAL_DEPTH
    end
 
    eval_max = MIN_VALUE
    for i in 0...movables.size
      board.move(movables[i])
      eval_tmp = -alphabeta(board, limit - 1, -MAX_VALUE, -MIN_VALUE)
      board.undo
 
      if eval_tmp > eval_max
        eval_max = eval_tmp
        point = movables[i]
      end
    end
 
    board.move(point)
  end
 
  def alphabeta(board, limit, alpha, beta)
    if board.is_gameover or limit == 0
      return evaluate(board)
    end
 
    pos = board.get_movable_pos
 
    if pos.size == 0
      #パス
      board.pass
      eval_tmp = -alphabeta(board, limit, -beta, -alpha)
      board.undo
      return eval_tmp
    end
 
    for i in 0...pos.size
      board.move(pos[i])
      eval_tmp = -alphabeta(board, limit - 1, -beta, -alpha)
      board.undo
      alpha = [alpha, eval_tmp].max
      if alpha >= beta
        #beta刈り
        return alpha
      end
    end
 
    return alpha
  end
 
  def sort(board, movables, limit)
    moves = []
    for i in 0...movables.size
      point = movables[i]
      board.move(point)
      eval_tmp = -alphabeta(board, limit - 1, MIN_VALUE, MAX_VALUE)
      board.undo
      move = Move.new(point.x, point.y, eval_tmp)
      moves.push(move)
    end
    #評価tの大きい順にソート
    moves_sorted = moves.sort do |a, b|
      b.e <=> a.e
    end
    movables.clear
    moves_sorted.each do |move|
      movables << move
    end
 
    return
  end
 
  def evaluate(board)
    # 評価関数は4章で実装
    return 0
  end
end

序盤・中盤の先読み手数15は、いろいろいじらないと無理っぽい予感。

[]

«前の日(05-19) 最新 次の日(05-21)»