2018年9月29日土曜日

IntStreamを降順ソートする方法

java言語で整数列をソートする場合、 IntStream用いたソートを思い浮かべるが IntStream#sorted()は昇順ソートしかできず、標準APIからは降順ソートができない。
調べてみると、Stream<Integer>に変換してComparatorを用いて逆順ソートする類が多い模様。
なので、IntStreamのまま降順ソートする方法をメモ書きしておく。

2018年8月4日土曜日

財布に入っていたレシートがベンフォードの法則に従っているのか

財布にレシートをためる癖があり、久しぶりに整理しようと、財布を見てみたら結構溜まってた。
普通に捨てるのも面白みがないので、財布に入ってるレシートの金額がベンフォードの法則に従っているのか調べてみた。

 ベンフォードの法則とは
Wikipediaを見るのが早いが、簡単に言うと
「自然界の数値の最初の桁の分布は、ある特定の分布になっている」という法則
具体的には、数値$x$の最上桁目の数字$n$が出現する確率$p$は
\[ p = \log_{10} (n+1) - \log_{10}(n) = \log_{10}\left(1 + \frac{1}{n}\right) \] つまり、出現確率は以下のようになり、最上桁目の数値は「1」が出やすい。って法則
$n$123456789
確率$p$30.1%17.6%12.5%9.7%7.9%6.7%5.8%5.1%4.6%

2018年6月10日日曜日

SketchwareでSnackbarを使う方法

Android端末でAndroidアプリを作成する方法に「Sketchware」がある
Viewやイベントをブロックで組んでいく感じで、プログラミング入門ゲーム「Scratch」に似てる
既存のブロックの組み合わせで作るので、Android標準のマニアックなViewは用意されていないので使えない
ところが、
ブロック作成にて「Operator」のなかにソースコードをゴリゴリに書けるブロックがあった
なので、Android標準のViewオブジェクト「Snackbar」を作ってみた

2018年6月2日土曜日

【Java】郵便番号から住所を取得する

java言語を使って、郵便番号から住所を取得する方法を調べてみた。

WebAPIを利用する

郵便番号をインプットに、住所を取得できるWebAPIが公開されていたので利用する。
WebAPIの特徴は以下
利点コード量が少なくて済む
欠点 サービスが終わったら使えない(いつ終わるのかも不明)
オフライン環境では使えない
利用規約がよくわからないものが多い(これは自分の理解力のせい...)

住所取得APIはググったらたくさん出てきたけど、今回はAPIキーを必要としない、
株式会社アイビスが提供しているWebAPIを利用してみる。

https://zipcloud.ibsnet.co.jp/doc/api

上記URLにも記載の取り、ちゃんと利用規約を読んで利用してね。