Perlサンプル24 シークヮーサーの表記ゆれ
投稿:2020-09-14
ネットで所謂シークヮーサーの表記がとてもゆれていることを知ったので、
シークヮーサー - Wikipedia
全パターンを表示してみたいと思いました。
表記に使われる全ての文字から文字列をランダム生成して、正規表現に一致するものをシークヮーサーとして(?)記録しようと考えました。 実行すると10分やそこらで完了する雰囲気ではないことが分かり、とりあえず5分間だけ回すことにしました。 乱数の種(シード)を指定していないので実行の度に見つかるシークヮーサーが変わります(笑)。
#!/usr/bin/env perl
use v5.26;
use utf8;
use warnings;
use strict;
use Encode::Locale;
use FindBin;
use lib $FindBin::Bin;
use MyDumper;
use feature "say";
use open IO => ":utf8";
binmode STDOUT, ":encoding(console_out)";
binmode STDERR, ":encoding(console_out)";
$| = 1;
say "起動";
my $start_t = time;
my $now_t = $start_t;
my $stop_t = $start_t + 60 * 5;
my @alphabet = split //, "アァイィクサシャワヮー";
my %result;
my $trial = 0;
while ($now_t < $stop_t) {
my $test = gen_string();
$trial++;
if ($test =~ /^シ((ィ|イ)ー?|ー)ク(ア|ァ|ワ|ヮ)ー?(サ|シャ)ー$/) {
if (!exists $result{$test}) {
$result{$test} = 1;
$now_t = time;
my $duration = $now_t - $start_t;
my $minutes = int($duration / 60);
my $seconds = $duration - 60 * $minutes;
say sprintf("%02d:%02d", $minutes, $seconds) . ", 試行 $trial 回目, @{[scalar keys %result]} 個目, $test";
}
}
$now_t = time unless $trial % 3000000;
}
say "昇順";
say for sort keys %result;
sub gen_string {
state $string = "";
$string = "" if 8 < length $string;
if ("" eq $string) {
$string .= $alphabet[int rand @alphabet] for 1 .. 5;
}
$string .= $alphabet[int rand @alphabet];
return $string;
}
時間制限を5分にしてありますけれど、これを1時間に延ばせばそれなりに収集できると思います。 でもまあ、網羅は無理ですよね。
起動 00:09, 試行 756886 回目, 1 個目, シイクァシャー 00:17, 試行 1369149 回目, 2 個目, シィクワサー 00:28, 試行 2219653 回目, 3 個目, シイクワサー 00:30, 試行 2322349 回目, 4 個目, シィクァサー 00:34, 試行 2674917 回目, 5 個目, シークヮサー 00:43, 試行 3392513 回目, 6 個目, シークァサー 00:59, 試行 4580669 回目, 7 個目, シイクヮサー 01:28, 試行 6852177 回目, 8 個目, シィクアサー 01:28, 試行 6887034 回目, 9 個目, シイクヮーサー 02:12, 試行 10278802 回目, 10 個目, シークワーサー 02:15, 試行 10571909 回目, 11 個目, シイクァサー 02:20, 試行 10904165 回目, 12 個目, シークアサー 02:31, 試行 11777022 回目, 13 個目, シイークアサー 02:34, 試行 12005401 回目, 14 個目, シイクアサー 02:40, 試行 12486189 回目, 15 個目, シィクヮサー 02:52, 試行 13395866 回目, 16 個目, シークアシャー 03:10, 試行 14815854 回目, 17 個目, シイークァサー 03:48, 試行 17773361 回目, 18 個目, シークワサー 03:59, 試行 18666754 回目, 19 個目, シイクワーサー 04:11, 試行 19579322 回目, 20 個目, シイクヮシャー 04:12, 試行 19684466 回目, 21 個目, シイクアーサー 04:55, 試行 23030474 回目, 22 個目, シークァシャー 昇順 シィクァサー シィクアサー シィクヮサー シィクワサー シイクァサー シイクァシャー シイクアサー シイクアーサー シイクヮサー シイクヮシャー シイクヮーサー シイクワサー シイクワーサー シイークァサー シイークアサー シークァサー シークァシャー シークアサー シークアシャー シークヮサー シークワサー シークワーサー