tkd2017の勉強ブログ

日々の勉強をアウトプットするブログ

麻雀の点数計算を身につける その1(30符、40符、50符、70符の点数)

麻雀自体は学生のころからやっていたんですが、点数計算は本気で覚えようという気がなかったので、断片的な知識はあったもののしっかりと頭に入っていませんでした。

最近会社内で打つ機会があったので、これを機に、覚えることにしました。

この記事は自分の覚え方を整理してまとめたものとなります。

大まかに、次の順番で覚えていきます(満貫以上が後回しなのは、まぁ知ってるでしょっていう消化試合のため)。

  1. 30符、40符、50符、70符の点数(ロン)
  2. 20符、25符、60符、80符、90符、100符、110符の点数(ロン)
  3. ツモ時の点数
  4. 満貫、跳満、倍満、3倍満、役満、ダブル役満
  5. 符の計算

点数計算の原則

まずは点数の計算式から。ただこれは覚えなくても問題なくて、大事なのはこの計算式から導けるエッセンスの方です。

  • 基本点 = 符 x 2飜+2 -- いわゆるバンバン
  • 子のロン:基本点 x 4
  • 子のツモ:親は基本点 x 2、子は基本点(子は二人いるので結局 x4 になる)
  • 親のロン:基本点 x 6
  • 親のツモ:基本点 x 2(子は三人いるので結局 x6 になる)

なお実際の点数は基本点の10の位を切り上げするので、ツモとロンで誤差が出ることもある。

この原則から次の4つが導かれる。

  1. 親の得点は 子の1.5倍
  2. 基本点が同じなら、 親がツモしたときの子の支払いと、子がツモしたときの親の支払いは同じ
  3. 子のツモ時の支払いは、 ロン時の半分を親、さらに半分を子 が支払う
  4. 親のツモ時の支払いは、 ロン時の1/3 を支払う

というわけで、以上の原則を頭の片隅に入れておくと麻雀の点数表なんてのは一切覚えてなくてもよくなる。だけど毎回そんな高速には計算できないので楽はしたい。でも点数表の丸暗記なんてこともしたくない。

覚えられる人は丸暗記してもらうとして、最低限だけ頭に入れてあとは計算で導いていきます。

子の点数(ロン時)

子の点数については、次の表の点数だけ覚えれば、あとは計算で導出できます。

1飜 2飜 3飜 4飜
30符 1000 2000 3900 7700
40符 1300 -
50符 1600 -
70符 2300 4500 - -
  • 30符は、せん、にせん、ざんく、ちっちと暗記
  • 70符は、にーさん、しーごと暗記
  • 1飜は30符から、せん、せんさんびゃく、せんろっぴゃくとそのまま暗記
  • 70符3飜と40符4飜(以上)は満貫のため計算は不要

親の点数(ロン時)

親の点数については、次の表の点数だけ覚えれば、あとは計算で導出できます。

1飜 2飜 3飜 4飜
30符 1500 2900 5800 11600
40符 2000 -
50符 2400 -
70符 3400 6800 - -
  • 30符は、いちご、にっく、ごっぱー、ぴんぴんろくと暗記
  • 70符は、さんしー、ろっぱーと暗記(2倍なので単純)
  • 1飜は30符から、いちご、にせん、にーよんと暗記
  • 70符3飜と40符4飜(以上)は満貫のため計算は不要

40符の導出

基本点の計算式をみてもらうと分かるんですが、麻雀の点数は 1飜上がるごとに2倍 となります。ただ切り上げがあるのできれいに2倍にならないケースもあるわけです。

で、本題ですが、子の40符は2倍すればOKです。親はきれいじゃないんですが、実は 子の30符2飜以上と同じ になります。つまり、まとめると次のようになります(4飜は満貫)。

1飜 2飜 3飜 4飜
子40符 1300 2600 5200 -
親40符 2000 3900 7700 -

なぜ子の30符2飜以上と親の40符1飜以上が同じになるのかは、基本点の計算式に注目すれば解明できます。

  • 子の30符2飜 = 30 x 2 x 2 x 2 x 2 x 4 = 1920
  • 親の40符1飜 = 40 x 2 x 2 x 2 x 6 = 1920

あとは飜が上がっても、両方とも2倍していくだけなので点数は一致します(ぜひ手元で式変形してみてください)。

50符の導出

50符は、計算上切り上げが発生しないため、きれいに2倍になります。まとめると次のようになります(4飜は満貫)。

1飜 2飜 3飜 4飜
子50符 1600 3200 6400 -
親50符 2400 4800 9600 -

まとめ

以上で、30符、40符、50符、70符については点数表を完成させることができました。

子の点数表。

1飜 2飜 3飜 4飜
30符 1000 2000 3900 7700
40符 1300 2600 5200 -
50符 1600 3200 6400 -
70符 2300 4500 - -

親の点数表。

1飜 2飜 3飜 4飜
30符 1500 2900 5800 11600
40符 2000 3900 7700 -
50符 2400 4800 9600 -
70符 3400 6800 - -

どちらにせよ、30符が基本となるので、まずはこれから覚えるのが先決です。70符が全体から見ると割とイレギュラーなため、これも丸暗記が手っ取り早いです(使う機会は少なそうですが)。

個人的には40符の導出で扱った、親の40符が子の30符と1飜違いで同じ点数になるというのが目から鱗でした。

こういう発見(?)があると、ただの暗記ではなくなるのでおもしろいですね。

AWS全サービスまとめを書いてました

だいぶブログの更新が止まってましたが、ひたすらAWSの勉強してました。会社のブログにアウトプットしてたので、こっちでもまとめをば。

マネジメントコンソールをベースにサービスを一覧化してまとめました。

【2018年】AWS全サービスまとめ その1

その1は次のカテゴリのまとめです。

  • コンピューティング
  • ストレージ
  • データベース
  • 移行
  • ネットワーキング & コンテンツ配信)

dev.classmethod.jp

【2018年】AWS全サービスまとめ その2

その2は次のカテゴリのまとめです。

  • 開発者用ツール
  • 管理ツール
  • メディアサービス

dev.classmethod.jp

【2018年】AWS全サービスまとめ その3

その3は次のカテゴリのまとめです。

  • 機械学習
  • 分析
  • セキュリティ、アイデンティティ、コンプライアンス

dev.classmethod.jp

【2018年】AWS全サービスまとめ その4

その4は次のカテゴリのまとめです。

  • モバイルサービス
  • 拡張現実 (AR) とバーチャルリアリティ (VR)
  • アプリケーション統合
  • カスタマーエンゲージメント
  • ビジネスの生産性
  • デスクトップとアプリケーションのストリーミング
  • IoT
  • ゲーム開発

dev.classmethod.jp

【2018年】AWS全サービスまとめ その5

その5はマネジメントコンソールの一覧にないサービスとして、次のものをまとめました。

  • Amazon Elastic Container Registry
  • Auto Scaling
  • VMware Cloud on AWS
  • Amazon EBS
  • Amazon SimpleDB
  • AWS Import/Export
  • AWS Schema Conversion Tool
  • AWS Snowball Edge
  • AWS Snowmobile
  • Elastic Load Balancing
  • AWS HealthとPersonal Health Dashboard
  • TensorFlow on AWS
  • AWS KMS
  • AWS Organizations
  • Amazon Lumberyard
  • AWS Billing and Cost Management

dev.classmethod.jp

さいごに

そんなわけで、AWS5冠に向けて邁進中です。

「採用で大事なこと」を読んで

Facebookでシェアされていたので、次のブログを読みました。

ameblo.jp

この中でビジョナリー・カンパニー 2という書籍が紹介されています。未読ですが。

さてブログの中で次のような一文がありました。

「適切な人をバスに乗せる」というのは、

優秀な人から順に選んで乗せるのとは、

似て非なるものです。

感覚的には、一緒に働きたいひとを

乗せるに近いでしょう。

これ、すごく共感できます。

前職でも現職でも採用プロセスに関わっていますが、採用って本当に難しいですよね。技術レベルやコミュニケーションスキル、入社後の姿などをイメージするわけですが……。

想像以上に活躍してくれる人もいれば、もちろん逆もあるわけです。そうなった時に「失敗したな」とお互いに後悔しないためにはフィーリング(一緒に働きたいという思い)が大事かなと。

そこさえ合えば、企業としてはどうしたら問題解決ができるか一緒に考えていきますし、個人としてはスキルアップなどもモチベーションをもって取り組んでいけるわけです。

お互いに不幸にならないために、採用はしっかりと取り組んでいきたいです。

typoのお知らせ

最後に記事内のtypoが気になったので、ここに書いておきます。

これは最近ではピポットと呼ばれる

”事業転換”が頻繁に必要になる

ネット業界ではとても大切なことです。

正しくは ピボット ですかね。

今日はこんなところで。

はてなブログでTwitterアカウントへのリンクと画像サイズの指定をする

新年明けましておめでとうございます。今年も一年、良い年となるよう頑張っていきたいと思います。

年末年始はAWSの各サービスを調べて、自分なりにまとめて消化していました。これについては会社のブログで近々公開予定です。

あんまり期間が空いてしまうと書くモチベーションも下がってしまうので、はてなブログで記事を書く中で調べたTipsを2つばかり紹介します。

なお編集モードは Markdown で確認しています(他のモードは未検証)。

Twitterアカウントへのリンク

はてなブログでは、はてなダイアリーと共通の はてな記法 が使用できます。どうやらマニュアルからは消えているようですが、次の記法が使用できます。

[twitter:@ユーザー名]

使用例は次のようになります。

@

はてなブログ記事にTwitterアカウントのリンクを埋め込む - ぱと隊長日誌

画像サイズの指定

こちらもはてな記法で対応できます。

  • 横幅指定(例として100px)

[f:id:tkd2017:20181234567890p:plain:w100]

  • 高さ指定(例として100px)

[f:id:tkd2017:20181234567890p:plain:h100]

使用例は次のようになります(w100を指定)。

f:id:tkd2017:20171225013642p:plain:w100

リンクを簡単に記述する(http記法、mailto記法) - はてなダイアリーのヘルプ

まとめ

基本的にMarkdownで記述できるため書きやすいですよね。

またはてな記法も併用することで、HTMLタグを直接使わずに書くことができます。

今後も新しいTipsを見つけたら紹介していきたいと思います。

2017年の振り返り

早いもので2017年も大晦日です。 笑ってはいけない を見ながら今年を振り返ります。あと赤霧島のロックを飲んでいます。

霧島酒造 赤霧島 25度 900ml

霧島酒造 赤霧島 25度 900ml

大きなイベントとしては、今年は転職という節目の年となりました。これについては退職者アドベントカレンダーに参加したエントリで書きました。

www.high-novice.com

というわけで、それ以外のことについて書くことにします。

前職からの学び

転職をして仕事の内容は変わりましたが、それでも前職で身についたものは現職でも役立っています。仕事をしている中であらためて気付いたことを書いてみます。

技術的なことやビジネスマナーなど、そういうありきたりなものは置いておきます。

文章チェック

前職では研修生へ配布する資料を作ったり、研修担当者へ送付する報告書を作っていました。自分の作成物はもちろんのこと、他人の作成した文章にも目を通す機会が多くあったため、 日本語として意味が通じるか誤字・脱字 などをチェックしていました。

現在ではほぼ無意識にこの辺をチェックしてしまい、小説やブログを読んでいる際にも気付くことが多くあります。

学生時代、作文などは不得意な分野であったため、なかなか身につけにくいスキルを習得できたのかなと今では思っています。

結論から

これはビジネスマナーの範囲の気もしますが、現職では部長クラスの人へ直接報告する機会が多くあります。その際、 結論を先に述べ詳細は後で ということを念頭に置いて報告するようにしています(前職でも直属の上長は部長でしたが)。

どうしてもゼロから順番に説明したくなってしまいますが、最初に結論を持ってくることで、伝えなければいけないことがブレずに済みます。

新人の方や、報告がうまくできない方は、結論から伝えようと努力してみてください。

来年は見直したい

2017年はあまり(あるいはまったく)できなかったことの反省。

読書

今年はそもそも読書量が少なく、来年はもう少し増やしていきたいです。まぁラノベとかは読んでるんですけどね。あ、りゅうおうのおしごと!アニメ化おめでとうございます。楽しみにしてます。

今年は藤井四段や羽生永世七冠など、将棋界は話題にこと欠かない一年でしたね。一ファンとして、とても楽しみにしていました。タイトルは三冠が不在の群雄割拠といった趣で、来年も非常に楽しみです。

OSS(オープンソースソフトウェア)

今までは社内へのコミットしかできていませんでした。「エンジニアとしての市場価値を高める」ために積極的に社外へのコミットをしていきたいです。

引き続き来年も頑張ること

2017年の取り組み始めたことで、来年もチャレンジしていきたいこと。

ブログ

新しくブログを始めました。また仕事でもブログでのアウトプットが求められています。できるだけ一定のペースで続けられるようにしていきたいです。

「ブログ書きたい」というモチベーションを大事にしていきたいですね。

AWS

入社前から基本的なサービスは触っていましたが、全体から見ると本当に一部だけでした。現職ではAWSの知識がないとそもそも仕事にならない部分があります。

勉強方法のひとつとして、AWSの認定資格があります。

  • Solutions Architect Associate
  • Developer Associate
  • SysOps Administrator Associate
  • Solutions Architect Professional
  • DevOps Engineer Professional

この5つは社内では5冠と呼ばれています。 5冠ないと人権がありません。 またさらに上位に次の2つの資格もあります。

  • Advanced Networking Specialty
  • Big Data Specialty

現在はSolutions Architect Associateしか持っていませんので、2018年は残りの4つを目標にして、5冠を目指していきます。

まとめ

さて、今年も残すところ後30分ほどとなりましたね。

テレビでは松本が蝶野にビンタされる直前です。

来年もよい一年にしていきましょう。

Vagrantで起動したCentOS 7に日本語ロケールがない問題

便利ですよね、Vagrant。使ってますか? 先日、起動したVMに日本語ロケールがなかったので、その対処法を紹介します。

環境

今回の環境は次のようになっています。

Vagrantに限らず、同様の問題が発生した場合は、同じ解決方法が使えるはずです。

$ vbox-img --version
5.2.2r119230

$ vagrant --version
Vagrant 2.0.1

$ vagrant box list
centos/7         (virtualbox, 1710.01)

問題の再現

次のコマンドを実行することで問題の再現が可能です。

$ vagrant init centos/7

$ vagrant up && vagrant ssh

[vagrant@localhost ~]$ locale
locale: Cannot set LC_CTYPE to default locale: No such file or directory
locale: Cannot set LC_MESSAGES to default locale: No such file or directory
locale: Cannot set LC_ALL to default locale: No such file or directory
LANG=ja_JP.UTF-8
LC_CTYPE="ja_JP.UTF-8"
LC_NUMERIC="ja_JP.UTF-8"
LC_TIME="ja_JP.UTF-8"
LC_COLLATE="ja_JP.UTF-8"
LC_MONETARY="ja_JP.UTF-8"
LC_MESSAGES="ja_JP.UTF-8"
LC_PAPER="ja_JP.UTF-8"
LC_NAME="ja_JP.UTF-8"
LC_ADDRESS="ja_JP.UTF-8"
LC_TELEPHONE="ja_JP.UTF-8"
LC_MEASUREMENT="ja_JP.UTF-8"
LC_IDENTIFICATION="ja_JP.UTF-8"
LC_ALL=

locale: Cannot set LC_XXX to default locale: No such file or directoryというメッセージが表示されています。

localectlコマンドを利用することで、ロケールがないことを確認できます。

$ localectl list-locales | grep '^ja'

解決方法

本来ならすべてのロケールが入っているはずですが、何らかの理由で見つからない場合、再インストールすればよいようです。

[vagrant@localhost ~]$ sudo yum reinstall -y glibc glibc-common

[vagrant@localhost ~]$ locale
LANG=ja_JP.UTF-8
LC_CTYPE="ja_JP.UTF-8"
LC_NUMERIC="ja_JP.UTF-8"
LC_TIME="ja_JP.UTF-8"
LC_COLLATE="ja_JP.UTF-8"
LC_MONETARY="ja_JP.UTF-8"
LC_MESSAGES="ja_JP.UTF-8"
LC_PAPER="ja_JP.UTF-8"
LC_NAME="ja_JP.UTF-8"
LC_ADDRESS="ja_JP.UTF-8"
LC_TELEPHONE="ja_JP.UTF-8"
LC_MEASUREMENT="ja_JP.UTF-8"
LC_IDENTIFICATION="ja_JP.UTF-8"
LC_ALL=

$ localectl list-locales | grep '^ja'
ja_JP
ja_JP.eucjp
ja_JP.ujis
ja_JP.utf8
japanese
japanese.euc

解決方法の調査には少し時間がかかりましたが、対策は非常にシンプルでした。

はてなブログ内の外部リンクにつけるアイコンを制御する

何度も更新しては記事にしていますが、前回はこんなことをしていました。

www.high-novice.com

これで外部リンクは別タブで開き、さらにアイコン付与ができたわけですが、プロフィール画面がこうなっていました。

f:id:tkd2017:20171223124310p:plain:w500

うーん、これはちょっとアレですね。

というわけで、外部リンクであっても画像の場合はアイコンを付与しないようにします。

構造の確認

ChromeのDevToolsを使って確認してみます。

f:id:tkd2017:20171223125134p:plain:w400

aタグの子要素としてimgタグがあります。つまりアイコンを付与するのは 外部リンクのaタグ かつ 子にimgタグをもたない ということになります。

これはCSSでは難しい(というかできない?)のですが、jQueryでは簡単に実現できます。

設定変更

設定は毎度お馴染み、詳細設定の headに要素を追加 です。今回修正されたコードは次のようになりました。

<script defer src="https://use.fontawesome.com/releases/v5.0.1/js/all.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
<script>
$(function() {
    $('a[href^="http"]:not([href*="' + location.hostname + '"])').attr('target', '_blank').attr('rel', 'noopener noreferrer')
      .not(':has(img)').append('<i class="fas fa-external-link-alt" style="margin-left: 3px"></i>');
})
</script>

$el.not(':has(img)')によって、$elのうち、子要素にimgタグをもたない要素のみを対象に操作をすることができます。

結果は次のようになりました。

f:id:tkd2017:20171223124403p:plain:w500

まとめ

最近のフロント開発ではAngularやReactにおされjQueryの出番は減ってきていますが、こういうちょっとした操作にはとても便利ですね。