u++の備忘録

【遊戯王デュエルリンクス】新たな海馬ハイスコアデッキ 「薄幸の乙女」が「猫耳族」の代わりに

2月23日に実施されたメンテナンスで、「ネコ耳族」「スピリットドラゴン」に対してAIが一定の条件を満たさないと攻撃してこない挙動が修正されてしまいました。

duellinks.doorblog.jp


レジェンドデュエリストのドロップカード(「エネミーコントローラー」「墓守の巫女」など)は、ますます手に入れづらい状況です。
そんな中、2月28日に販売開始した新パック「ヴァルキリーズレイジ」のRカード「薄幸の乙女」で、修正前の「ネコ耳族」と同様の現象が確認できました。

以下がサンプルデッキです。ハイスコアを獲得するためのギミックとしては「クーフーリン」を採用しています。

appmedia.jp

f:id:upura:20170304014909p:plain

デュエルの中で、具体的な流れを説明します。
まず「薄幸の乙女」を攻撃表示で召喚します。「RAY-MEI」を使ってサーチが可能です。
すると相手は攻撃力で上回っているにもかかわらず、攻撃してきません。

f:id:upura:20170304020914p:plain

自分のターンでは「薄幸の乙女」で相手に攻撃し、効果で攻撃できないようにしておきましょう。反動ダメージは杏子のスキル「」で0になります。
このような流れを続け、次のような盤面を目指します。ここでは、相手の3体全てに「薄幸の乙女」の効果が適用された状況になっています。

f:id:upura:20170304021044p:plain

この盤面を構築するまでに、以下の二つが課題になります。

  • エネミーコントローラー
  • 異次元の戦士

そのため前者に対しては「フォースフィールド」を、後者に対しては「エネミーコントローラー」「クリボール」など防御カードを積んでいます。

この盤面になれば、あとはハイスコアに向けた準備を整えるだけです。今回は攻撃力5000の「クーフーリン」でダイレクトアタックし、スコア5000を出しました。

f:id:upura:20170304021743p:plain

(僕は持っていない)「ユニオンアタック」などを組み込めば、よりハイスコアを叩き出すことも可能だと思います。

[「薄幸の乙女」が攻撃される条件]
(自分のライフポイント)<(相手モンスターの攻撃力の合計)―(「薄幸の乙女」の攻撃力)✕(相手モンスターの数)

【遊戯王デュエルリンクス】100%当たるギャンブルデッキが強い 「運を味方に!」

城之内のドロップスキル「運を味方に!」を基にしたギャンブルデッキが強いです。
f:id:upura:20170114150044p:plain

デュエルキングのみとマッチングするレート帯で連勝できる強さになったので、デッキレシピを公開します。
f:id:upura:20170114150150p:plain

デッキレシピ
f:id:upura:20170114150239p:plain

戦い方
最初に「運を味方に!」は発動条件「ライフ999以下」を満たすようにライフを削ります。
f:id:upura:20170114150456p:plain
f:id:upura:20170114150513p:plain

直接攻撃を実質的に無効化できる「ホーリージャベリン」や攻撃を封じられる「イタクァの暴風」を使い、相手から食らうダメージを調整しましょう。時には「銀幕の鏡壁」で自らライフを削ることもあります。

このスキルの存在すら知らない相手がほとんどなので、こちらが事故っていると思って一気に攻め込んでくる場合が多いです。
f:id:upura:20170114150858p:plain

こうなったら、後はスキルを使って好き放題です。「強欲な壺」と化した「カップ・オブ・エース」で手札を補充し、エースモンスター「リボルバー・ドラゴン」を展開します。

以下の流れが理想的です。

  1. 「カップ・オブ・エース」で手札を補充
  2. 「嵐」で相手の伏せカードを除去
  3. 「時の魔術師」や「ツインバレル・ドラゴン」を召喚し、効果で相手のモンスターを除去
  4. 「生け贄人形」で「リボルバー・ドラゴン」を特殊召喚(ついでに効果で相手のモンスターを除去)

f:id:upura:20170114151725p:plain

リボルバー・ドラゴン」は毎ターン相手のモンスターを確定で破壊できるチート・モンスターに変貌します。相手は序盤の攻めで手札を消費していることが多く、一気に形勢逆転する場合が多いです。
ランク戦は、恐竜・海・虫デッキで溢れていますが、地雷デッキとして十分活躍できそうです。何よりプレイヤーの腕次第で強くも弱くもなるデッキなので、デュエルが非常に楽しいです。

【遊戯王デュエルリンクス】再びデュエルキングになった「フライング寄生」のデッキレシピ

1月11日にリセットされたレート戦で、再びデュエルキングに。

インセクター羽蛾のスキル「フライング寄生」を活用したデッキ。

f:id:upura:20170112014330j:plain

【Super Mario Run】スーパー・マリオ・ランで10分で課金ゾーンまで到達した話

任天堂が満を持して公開するスマホアプリ「Super Mario Run」が本日、遊べるようになりました。

f:id:upura:20161216123311p:plain

早速ダウンロードしてみました。

片手で操作でき、手軽でサクサク進みます(遊び方などは他の記事やアプリに譲ります)。

f:id:upura:20161216123430p:plain

開始10分で3コースをクリア! いよいよボス戦です!!

f:id:upura:20161216123532p:plain

【遊戯王デュエルリンクス】恐竜王国デッキでデュエルキングになった(デッキレシピあり)

 遊戯王デュエルリンクスのランク戦で、一番の上のランク「デュエルキング」になりました。
f:id:upura:20161208172622p:plain

 デッキレシピは以下の通りです。
f:id:upura:20161208172701p:plain

 ダイナソー竜崎のスキル「恐竜王国」で、最初から攻撃力1900のモンスターを展開できます。あとは魔法や罠を駆使して押し切ります。

ディープラーニングで大相撲千秋楽の勝敗を予想してみる

 11月場所で鶴竜が千秋楽前に7場所ぶりの優勝を決めました。
 9月場所の千秋楽前にもこんな記事を書いたのですが、またしても相撲絡みの記事を書きたくなったので書きます。

 今回はアホみたく流行っている「ディープラーニング」を使って、大相撲千秋楽の勝敗を予想してみようという記事です。といっても4層しかないのですが「ディープラーニング」の方が引きが良さそうなのでタイトルに盛り込んでしまいました。

 以下が、今回の目的です。「千秋楽の勝敗は、その場所の14日目までの成績(調子)に依存する部分がある」という仮定を置きました。この仮定のもと、14日目までの成績を入力として、千秋楽の勝敗を予想する分類器を作成します。

f:id:upura:20161126225305p:plain

 下図が、今回作成したディープニューラルネット(DNN)です。

f:id:upura:20161126225842p:plain

 このDNNに訓練データとして過去の幕内の取り組み結果を与えます。データ構造は以下の通りです。

f:id:upura:20161126230137p:plain

 過去の取り組みデータは「大相撲星取表」というサイトから収集しました。データ収集には、pythonのpandasの機能を利用しました。
upura.hatenablog.com

 今回の場合、平成元年~平成28年7月場所までのデータを訓練データとしてDNNに与えました。実装にはRの「mxnet」というライブラリを使っています。以下のサイトを参考にしました。
tjo.hatenablog.com

# Data Import
df <- read.csv("C:/data.csv", header = F)
newdata <- read.csv("C:/newdata.csv", header = F)

library(mxnet)

# Training Data
train <- data.matrix(df)
train.x <- train[,-1]
train.y <- as.numeric(train[,1])

# Test Data
test <- data.matrix(newdata[,-1])

# DNN
data <- mx.symbol.Variable("data")
fc1 <- mx.symbol.FullyConnected(data, name="fc1", num_hidden=28)
act1 <- mx.symbol.Activation(fc1, name="tanh1", act_type="tanh")
fc2 <- mx.symbol.FullyConnected(act1, name="fc2", num_hidden=14)
act2 <- mx.symbol.Activation(fc2, name="tanh2", act_type="tanh")
fc3 <- mx.symbol.FullyConnected(act2, name="fc3", num_hidden=10)
act3 <- mx.symbol.Activation(fc3, name="tanh3", act_type="tanh")
fc4 <- mx.symbol.FullyConnected(act3, name="fc4", num_hidden=2)
softmax <- mx.symbol.SoftmaxOutput(fc4, name="softmax")

# Execution
devices <- mx.cpu()
mx.set.seed(71)
model <- mx.model.FeedForward.create(softmax, X=train.x, y=train.y, ctx=devices, num.round=4000, array.batch.size=100, learning.rate=0.03, momentum=0.99,  eval.metric=mx.metric.accuracy, initializer=mx.init.uniform(0.5), array.layout = "rowmajor", epoch.end.callback=mx.callback.log.train.metric(100))

# Result
preds <- predict(model, test, array.layout = "rowmajor")
pred.label <- max.col(t(preds)) - 1
pred.label

 さていよいよ学習を終えたDNNを使って、千秋楽の勝敗を予想します。訓練データと同様、14日目までの結果から28次元のベクトルを作成します。これをDNNに入れ、千秋楽の勝敗を予想してもらいます。結果は以下のようになりました。

f:id:upura:20161127000005p:plain

 DNNの結果を見る前に、僭越ながら私も予想をしました。私の予想時には、14日目までの成績以外の情報(過去の対戦成績など)もフル活用しています。ちなみに私は小学校の頃に「わんぱく相撲」で2年連続名古屋市でベスト8になった実績を持つ(隠れた自慢)くらいには昔から相撲を見ています。

 黄色はDNNと私の予想が食い違ったことを示します。意図的かのごとく食い違っていますね。

 ディープラーニングと人間、どちらの予想が正しいか。明日の千秋楽の土俵に注目したいと思います。

追記

発表スライドにまとめました。