モジュラス43。
調べたページで、堂々と中黒が入ってて「???」ってなった。
perl
my $i = 0 ;
my %h = map{ $_, $i ++ } split //, '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ-. $/+%';
my %hr = reverse %h ;
print $hr{ +( eval join '+', map{ $h{$_} } split //, 'PIYOPIYO' ) % 43 } ;
- アホだ、ダブルコーテーションになってた。変数展開するじゃん。
VBA
Function modulus43(ByVal d As String)
Dim str As String
str = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ-. $/+%"
Dim i As Integer
Dim j As Integer
Dim o As Integer
For i = 1 To Len(d)
For j = 0 To 42
If Mid(d, i, 1) = Mid(str, j + 1, 1) Then
o = o + j
Exit For
End If
Next j
Next i
modulus43 = Mid(str, (o Mod 43) + 1, 1)
End Function
適当なセルにて =modulus43(A1)
とかする、、、
ruby
a = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ-. $/+%".split("")
h = (a).zip(0...a.size).to_h
hr = h.invert
p hr[ "PIYOPIYO" .split("").map{|x| h[x] }.inject(:+) % 43 ]
.to_h
は、ruby 2.1 からだそーで。