Perlサンプル31 パチンコの機種名を5文字に省略
投稿:2022-09-13
自分専用のWebサービスを作っていてパチンコ台の機種名を5文字で表示したい。
様々な機種の中で滅多に使われない文字なら、その1文字があれば機種がピンとくる訳です。
例えば「磁」を使っているのは、
機種名に「磁」を含むパチンコ・パチスロ機種情報 | P-WORLD
現行なら「Pとある科学の超電磁砲FSB」だけです。
#!/usr/bin/env perl -w
use utf8;
use v5.32;
use strict;
use warnings;
use Encode;
use Encode::Locale;
use Unicode::Japanese qw/ unijp /;
binmode STDIN, ":encoding(console_in)";
binmode STDOUT, ":encoding(console_out)";
$| = 1;
# 機種名の読み込み
my @name;
while (<DATA>) {
chomp;
my $original = $_;
my $omit = $original;
# 半角→全角変換
$omit = unijp($omit)->h2z->getu;
# パチンコにありがちな名称と空白文字を削除
$omit =~ s/^PA//;
$omit =~ s/^PF.//;
$omit =~ s/^P//;
$omit =~ s/ぱちんこ//g;
$omit =~ s/\s//g;
# 使用文字の整理(1機種で同じ文字を2回使っても1カウント)
my %unique;
$unique{$_} = 1 for split //, $omit;
my @unique = sort keys %unique;
push @name, {
original => $original,
omit => $omit,
unique => \@unique,
};
}
# 使用頻度を集計
my %histogram;
for (@name) {
$histogram{$_}++ for @{$_->{unique}};
}
# 最多頻度
my $histogram_max = -1;
for (keys %histogram) {
$histogram_max = $histogram{$_} if $histogram_max < $histogram{$_};
}
# 省略に採用しない文字を最多頻度より大きく設定
$histogram_max++;
$histogram{$_} = $histogram_max for split //, "():.!・、。~ー-0123456789";
say "$_ $histogram{$_}" for sort {$histogram{$b} <=> $histogram{$a} || $a cmp $b} keys %histogram;
for (@name) {
my @omit = split //, $_->{omit};
# 5文字になるまで、出現頻度の高い文字を後ろから削っていく
while (5 < @omit) {
my $max = 0;
for (@omit) {
$max = $histogram{$_} if $max < $histogram{$_};
}
my $i = $#omit;
$i-- while exists $histogram{$omit[$i]} && $histogram{$omit[$i]} < $max;
splice @omit, $i, 1;
}
$_->{omit} = join "", @omit;
}
say "結果";
say "$_->{original}, $_->{omit}" for @name;
__DATA__
P 009 RE:CYBORG M4-K
P DD北斗の拳2 V2B
P Re:ゼロ 鬼がかりver.M08
P yes!高須クリニックCS2
PA CYBORG009 N-X1
PAエヴァシト、新生 決戦YR
PAガールフレンド(仮)N-K YT299
PAギンパラ夢幻カーニバルHBA
PAスーパー海物語INジャパン2MG
PAスーパー海物語IN沖縄5 SBA
PAスーパー海物語IN地中海SBA
PAわんわんパラダイスV-GBA
PA花の慶次~蓮N-V
PA海物語3R2スペシャルMBA
PA競女V3A
PA乗物娘N-K YT200
PA新海物語ARBB
PA真・花の慶次2 N2-X1
PA大海物語4スペシャルRBA
PA冬のソナタForever MA1
PA野生の王国5 N-K
PF.アイドルマスター 39フェス
PF.からくりサーカスV
PF.クィーンII
PF.ダンまちF
PF.パワフルIII-F
PF.革命機ヴァルヴレイヴ2 H
PF.機動戦士ガンダムユニコーンb
Pうまい棒4500から10500V1
Pうる星やつらM3-K
Pエヴァンゲリオンシト、新生決戦W
Pおばけらんど2022 GCC
Pギンパラ夢幻カーニバルHTK
Pコードギアス 反逆のルルーシュbA
Pコードギアス 反逆のルルーシュbF
Pサラリーマン金太郎FMY
Pスーパー海物語INジャパン2RA
Pスーパー海物語IN沖縄5 LTV
Pスーパー海物語IN沖縄5 SCF
Pスーパー海物語IN沖縄5 YTC
Pストライクウィッチーズ2 HCL
PストリートファイターV FRY
Pとある科学の超電磁砲FSB
Pとある魔術の禁書目録JUA
PニュートキオV1
Pバジリスク2 AB
PぱちんこGANTZ2 AT2
PぱちんこGANTZ3 M3
Pぱちんこキン肉マン3 M21
Pぱちんこキン肉マン3 M7
PパトラッシュJ2-G
Pひぐらし~蕾~FH-T
PモモキュンソードGC250A
Pリング 呪いの7日間2 FWA
Pルパン三世11 9AU1Y
Pルパン三世12 H1AZ2
P宇宙戦艦ヤマト2202 オンリーワンR
P黄門ちゃま8 L9AZ1
P牙狼月虹ノ旅人絆XX-NH
P義風堂々兼続と慶次2M6-X
P銀河鉄道999 2 9YU1Y
P激デジ真・牙狼RBY4
P源さん超韋駄天ブラックCS
P春一番恋絵巻GC250A(XA)
P乗物娘M5-K1
P新世エヴァ15未来への咆哮
P真・一騎当千FM-V
P真・花の慶次3 L12-K
P真・怪獣王ゴジラ2 L2-K
P真バジリスクMQ
P真北斗無双3ジャギ逆襲GEE
P真北斗無双FWQG
P戦国乙女6 M9AU1Y
P戦国乙女レジェンドM2AZ1Y
P銭形平次2 V2L
P蒼穹のファフナー 超蒼穹3800A
P大海物語4スペシャルSCA
P大工の源さん超韋駄天YBB
P弾球黙示録カイジ5 N2A
P中森明菜・歌姫伝説4 LM-T
P頭文字D SEJG
P北斗の拳8覇王FQA
PF.シンフォギア黄金絶唱N
P犬夜叉2 FM-N
P牙狼MUSEUM-MA
P桜花忍法帖SA
P宇宙戦艦ヤマト2202 bH
Pモモキュンソード閃撃GCA
Pシンデレラブレイド JQX
、 31 。 31 ・ 31 ー 31 ! 31 ( 31 ) 31 - 31 . 31 0 31 1 31 2 31 3 31 4 31 5 31 6 31 7 31 8 31 9 31 : 31 ~ 31 A 30 ン 21 ス 19 M 19 N 19 の 15 パ 14 B 14 F 14 G 14 Y 14 ル 13 物 13 C 12 海 11 語 11 R 11 V 11 シ 10 S 10 ジ 9 ラ 9 I 9 K 9 T 9 ト 8 ド 8 リ 8 真 8 H 8 イ 7 戦 7 L 7 ァ 6 ギ 6 ク 6 フ 6 マ 6 ャ 6 ュ 6 X 6 ら 5 キ 5 ニ 5 次 5 U 5 Z 5 ん 4 ア 4 カ 4 ッ 4 バ 4 レ 4 ヴ 4 北 4 慶 4 斗 4 新 4 沖 4 縄 4 花 4 超 4 E 4 J 4 Q 4 b 4 か 3 と 3 ま 3 る 3 エ 3 オ 3 コ 3 ソ 3 タ 3 ダ 3 ペ 3 世 3 国 3 大 3 女 3 牙 3 狼 3 王 3 生 3 逆 3 W 3 e 3 あ 2 い 2 う 2 さ 2 ち 2 り 2 ィ 2 ェ 2 ガ 2 サ 2 デ 2 ナ 2 ブ 2 モ 2 ヤ 2 ワ 2 一 2 三 2 中 2 乗 2 乙 2 双 2 反 2 夢 2 天 2 娘 2 宇 2 宙 2 幻 2 拳 2 機 2 決 2 源 2 無 2 肉 2 艦 2 金 2 録 2 韋 2 駄 2 黄 2 D 2 O 2 r 2 v 2 々 1 お 1 が 1 く 1 ぐ 1 け 1 し 1 つ 1 ど 1 ば 1 ひ 1 へ 1 ゃ 1 や 1 わ 1 ウ 1 ォ 1 グ 1 ゲ 1 ゴ 1 ズ 1 ゼ 1 チ 1 ノ 1 ム 1 ユ 1 ロ 1 人 1 仮 1 伝 1 兼 1 冬 1 動 1 千 1 叉 1 呪 1 命 1 咆 1 哮 1 唱 1 地 1 堂 1 士 1 夜 1 太 1 姫 1 字 1 学 1 工 1 巻 1 帖 1 平 1 弾 1 当 1 形 1 忍 1 怪 1 恋 1 撃 1 文 1 旅 1 日 1 明 1 星 1 春 1 書 1 月 1 未 1 来 1 桜 1 棒 1 森 1 歌 1 河 1 法 1 激 1 犬 1 獣 1 球 1 番 1 目 1 砲 1 磁 1 示 1 禁 1 科 1 穹 1 競 1 絆 1 絵 1 絶 1 続 1 義 1 菜 1 蒼 1 蓮 1 蕾 1 虹 1 術 1 襲 1 覇 1 説 1 道 1 郎 1 野 1 鉄 1 銀 1 銭 1 門 1 閃 1 間 1 電 1 革 1 須 1 頭 1 風 1 騎 1 高 1 鬼 1 魔 1 黙 1 o 1 s 1 y 1 結果 P 009 RE:CYBORG M4-K, REORK P DD北斗の拳2 V2B, DD北斗拳 P Re:ゼロ 鬼がかりver.M08, ゼロ鬼がり P yes!高須クリニックCS2, yes高須 PA CYBORG009 N-X1, CYORX PAエヴァシト、新生 決戦YR, エヴ新生決 PAガールフレンド(仮)N-K YT299, ガフレド仮 PAギンパラ夢幻カーニバルHBA, 夢幻カニバ PAスーパー海物語INジャパン2MG, 海語Iジャ PAスーパー海物語IN沖縄5 SBA, 海I沖縄S PAスーパー海物語IN地中海SBA, 海I地中S PAわんわんパラダイスV-GBA, わんわんダ PA花の慶次~蓮N-V, 花慶次蓮V PA海物語3R2スペシャルMBA, 海語ペシャ PA競女V3A, 競女V3A PA乗物娘N-K YT200, 乗物娘KT PA新海物語ARBB, 新海物語R PA真・花の慶次2 N2-X1, 真花慶次X PA大海物語4スペシャルRBA, 大海ペシャ PA冬のソナタForever MA1, 冬ナorv PA野生の王国5 N-K, 野生王国K PF.アイドルマスター 39フェス, アマタフェ PF.からくりサーカスV, かくりサカ PF.クィーンII, クィンII PF.ダンまちF, ダンまちF PF.パワフルIII-F, ワフIII PF.革命機ヴァルヴレイヴ2 H, 革命機ヴヴ PF.機動戦士ガンダムユニコーンb, 機動士ムユ Pうまい棒4500から10500V1, うまい棒か Pうる星やつらM3-K, うる星やつ Pエヴァンゲリオンシト、新生決戦W, エゲオ生決 Pおばけらんど2022 GCC, おばけんど Pギンパラ夢幻カーニバルHTK, 夢幻カニバ Pコードギアス 反逆のルルーシュbA, コア反逆b Pコードギアス 反逆のルルーシュbF, コア反逆b Pサラリーマン金太郎FMY, サマ金太郎 Pスーパー海物語INジャパン2RA, 海語Iジャ Pスーパー海物語IN沖縄5 LTV, I沖縄LT Pスーパー海物語IN沖縄5 SCF, 海I沖縄S Pスーパー海物語IN沖縄5 YTC, 海I沖縄T Pストライクウィッチーズ2 HCL, ウィッチズ PストリートファイターV FRY, トファイタ Pとある科学の超電磁砲FSB, 科学電磁砲 Pとある魔術の禁書目録JUA, 魔術禁書目 PニュートキオV1, ニュトキオ Pバジリスク2 AB, バジリクB PぱちんこGANTZ2 AT2, GNTZT PぱちんこGANTZ3 M3, GNTZM Pぱちんこキン肉マン3 M21, キン肉マM Pぱちんこキン肉マン3 M7, キン肉マM PパトラッシュJ2-G, トラッュJ Pひぐらし~蕾~FH-T, ひぐらし蕾 PモモキュンソードGC250A, モモキュソ Pリング 呪いの7日間2 FWA, グ呪い日間 Pルパン三世11 9AU1Y, ルパ三世U Pルパン三世12 H1AZ2, ル三世HZ P宇宙戦艦ヤマト2202 オンリーワンR, 宇宙艦ヤワ P黄門ちゃま8 L9AZ1, 黄門ちゃま P牙狼月虹ノ旅人絆XX-NH, 月虹ノ旅人 P義風堂々兼続と慶次2M6-X, 義風堂々兼 P銀河鉄道999 2 9YU1Y, 銀河鉄道U P激デジ真・牙狼RBY4, 激デ真牙狼 P源さん超韋駄天ブラックCS, 源さ韋駄天 P春一番恋絵巻GC250A(XA), 春番恋絵巻 P乗物娘M5-K1, 乗物娘MK P新世エヴァ15未来への咆哮, 未来へ咆哮 P真・一騎当千FM-V, 真一騎当千 P真・花の慶次3 L12-K, 真花慶次L P真・怪獣王ゴジラ2 L2-K, 怪獣王ゴL P真バジリスクMQ, 真バリクQ P真北斗無双3ジャギ逆襲GEE, 北無双逆襲 P真北斗無双FWQG, 北斗無双W P戦国乙女6 M9AU1Y, 戦国乙女U P戦国乙女レジェンドM2AZ1Y, 国乙女レェ P銭形平次2 V2L, 銭形平次L P蒼穹のファフナー 超蒼穹3800A, 蒼穹ナ蒼穹 P大海物語4スペシャルSCA, 大ペシャS P大工の源さん超韋駄天YBB, 工源さ韋駄 P弾球黙示録カイジ5 N2A, 弾球黙示録 P中森明菜・歌姫伝説4 LM-T, 森明菜歌姫 P頭文字D SEJG, 頭文字DE P北斗の拳8覇王FQA, 北斗拳覇王 PF.シンフォギア黄金絶唱N, ォ黄金絶唱 P犬夜叉2 FM-N, 犬夜叉FM P牙狼MUSEUM-MA, 牙狼UEU P桜花忍法帖SA, 桜花忍法帖 P宇宙戦艦ヤマト2202 bH, 宇宙艦ヤb Pモモキュンソード閃撃GCA, モモソ閃撃 Pシンデレラブレイド JQX, デレブレJ