RのWeb制作

Webサービス制作のための技術情報を。データ分析(Python、機械学習コンペ他)や自作野球ゲームMeisyoのこと中心。

Web制作 Meisyo データサイエンス SQL

[Meisyo]練習難易度の不均衡是正への分析的アプローチ2

投稿日:

[Meisyo]練習難易度の不均衡是正への分析的アプローチから早3か月。

「練習ごとに難易度が違いすぎるんですけど!!」という不満は少しは解消されたかなー・・・

効果測定してないのにわかるの?エスパーなの?
というわけで・・・

管理画面に入れちゃいました!
これでいつでも見れるよ!

結果発表。
ポイントの分布が大きければ大きいほど、カラーバーが太くなります。

今後はこれを見て調整します。

game11がやばい。(語彙力)

game4もちょっと少ないかな?

・・・って前問題になってた練習だよねコレ・・・
回数も少ないし・・・避けないでドウゾ

というわけで、
game11はPointを2倍に、
game4は全体的にポイントを緩和ビンゴのカウント方式を変更(簡素化)しました。

カウント方式の変更内容
以前は、
スロットで出た5つの数字をすべて比較する方式でした。

今回は、
スロットで出た5つの数字の種類を数える方式にしました。

この変更によって、以前は下記のような当たってるだろっていうのもなくなります。

例1:
11,11,12,12,13
前→1ビンゴ
今→2ビンゴ

例2:
9,9,11,11,11
前→1ビンゴ
今→3ビンゴ

詳しい計算は以下の通り。
例1:
11,11,12,12,13

種類ごとに数字をまとめる(一意化)
→11,12,13

[11,12,13]の配列の個数を計算
→3

5-配列の個数(3)
2ビンゴ!

例2:
9,9,9,11,11

種類ごとに数字をまとめる(一意化)
→9,11

[9,11]の配列の個数を計算
→2

5-配列の個数(2)
3ビンゴ!

例:完全ビンゴ
1,1,1,1,1

種類ごとに数字をまとめる(一意化)
→1

[1]の配列の個数を計算
→1

5-配列の個数(1)
4ビンゴ!(=完全ビンゴ)

すみません。
思いつかなくてどうにかできる方法で実装していました。(でもどうにか、、なっていない)

改善していきます。orz

後、思ったのですが・・・
SQLでだいたいのことができるので、Python要らなくね?って思ったり。

というわけで、SQLを置いていきます。何かの参考に!

SELECT
  s.action_no
  ,SUM(s.count_uu) AS total_uu
  ,CEIL(SUM(s.point * count_uu) / SUM(s.count_uu)) AS ave_point
  ,SUM(CASE WHEN FLOOR(s.point / 10) = 0 THEN count_uu ELSE 0 END) AS point_00
  ,SUM(CASE WHEN FLOOR(s.point / 10) = 1 THEN count_uu ELSE 0 END) AS point_01
  ,SUM(CASE WHEN FLOOR(s.point / 10) = 2 THEN count_uu ELSE 0 END) AS point_02
  ,SUM(CASE WHEN FLOOR(s.point / 10) = 3 THEN count_uu ELSE 0 END) AS point_03
  ,SUM(CASE WHEN FLOOR(s.point / 10) = 4 THEN count_uu ELSE 0 END) AS point_04
  ,SUM(CASE WHEN FLOOR(s.point / 10) = 5 THEN count_uu ELSE 0 END) AS point_05
  ,SUM(CASE WHEN FLOOR(s.point / 10) = 6 THEN count_uu ELSE 0 END) AS point_06
  ,SUM(CASE WHEN FLOOR(s.point / 10) = 7 THEN count_uu ELSE 0 END) AS point_07
  ,SUM(CASE WHEN FLOOR(s.point / 10) = 8 THEN count_uu ELSE 0 END) AS point_08
  ,SUM(CASE WHEN FLOOR(s.point / 10) = 9 THEN count_uu ELSE 0 END) AS point_09
  ,SUM(CASE WHEN FLOOR(s.point / 10) = 10 THEN count_uu ELSE 0 END) AS point_10
  ,SUM(CASE WHEN FLOOR(s.point / 10) = 11 THEN count_uu ELSE 0 END) AS point_11
  ,SUM(CASE WHEN FLOOR(s.point / 10) = 12 THEN count_uu ELSE 0 END) AS point_12
  ,SUM(CASE WHEN FLOOR(s.point / 10) = 13 THEN count_uu ELSE 0 END) AS point_13
  ,SUM(CASE WHEN FLOOR(s.point / 10) = 14 THEN count_uu ELSE 0 END) AS point_14
  ,SUM(CASE WHEN FLOOR(s.point / 10) = 15 THEN count_uu ELSE 0 END) AS point_15
  ,SUM(CASE WHEN FLOOR(s.point / 10) = 16 THEN count_uu ELSE 0 END) AS point_16
  ,SUM(CASE WHEN FLOOR(s.point / 10) = 17 THEN count_uu ELSE 0 END) AS point_17
  ,SUM(CASE WHEN FLOOR(s.point / 10) = 18 THEN count_uu ELSE 0 END) AS point_18
  ,SUM(CASE WHEN FLOOR(s.point / 10) = 19 THEN count_uu ELSE 0 END) AS point_19
  ,SUM(CASE WHEN FLOOR(s.point / 10) = 20 THEN count_uu ELSE 0 END) AS point_20

# 全体集計
FROM
  (
    SELECT
      SUBSTRING_INDEX(action, ',', 1) AS action_no
      ,CEIL(SUBSTRING_INDEX(action, ',', -1)) AS point
      ,COUNT(action) AS count_uu
    FROM
      acts
    WHERE
      sub = 'practice'
    AND
      time >= '$date 00:00:00'
    AND
      LENGTH(SUBSTRING_INDEX(action, ',', 1)) > 0
    AND
      CEIL(SUBSTRING_INDEX(action, ',', -1)) BETWEEN 0 AND 200
    GROUP BY
      action_no
      ,point DIV 10
    ORDER BY
      action_no
  ) AS s
GROUP BY
  s.action_no;

DIV要らない気もするけど気にしてはいけない(戒め)

-Web制作, Meisyo, データサイエンス, SQL

執筆者:


comment

メールアドレスが公開されることはありません。

関連記事

[Meisyo]スマホ表示の改良

「スマホ版使いにくすぎ」と知人に言われたので、スマホ表示の改良を行いました。 Android版 iPhone版 改良内容は、「ボタン化」が大きいですねー。 わりと使いやすくなったのか・・・?

[Meisyo]SQLでバグ発掘

「監督の指導能力が上がらない」という情報が入ったので、 ・バグの修正 ・SQLでバグっているIDの方を検索→チケットプレゼント を行います。 該当能力:  指導能力(体力)  ・・・ちなみに投手以外で …

no image

PHPのコーディング規則、PSRを学ぶ(5)

PHPのコーディング規則、PSRを学ぶ(4)の続きです。 この記事では、PHPのコーディング規則PSRの規則をまとめます。 1.規則概要 文字コードはUTF-8(BOM無し) 改行コードはLF PHP …

[Meisyo] 打撃・守備のバランス調整(v0.40)

変更概要 守備力を上方修正します。 詳細に言うと、OPSに対する影響度を、守備力=ミートまたは反応の有利な能力値にしました。 これまではOPSに対する影響は、守備力<ミートまたは反応の有利な能力値(2 …

Windows10(32bit)でのC言語およびC++のコンパイラ「MinGW」のインストールとテスト

32bitのWindows10環境でCとC++を開発するためのコンパイラ「MinGW」のインストールを行います。 私も初心者ですが、簡単にインストールできました! 日付:2018/09/09 OS:W …