問題にチャレンジして、ユーザー同士で解答を教え合ったり、コードを公開してみよう!
これまで扱ったハッシュ関数は、整数値や文字列など、1 種類のデータ型を入力としてとっていたと思います。ハッシュ関数は、様々なデータが入力として与えられ、データ型は 1 種類とは限りません。本問では、整数値と文字列が組み合わさった車のナンバープレートを入力とするハッシュ関数を実装してみましょう。
ナンバープレートには地域名、分類番号、ひらがな、一連指定番号が記載されています。s_1 (地域名)、i_1 (分類番号)、s_2 (ひらがな)、i_2 (一連指定番号)が与えられます。以下のハッシュ関数 H を用いてハッシュ値を計算してください。ただし、地域名とひらがなは半角英小文字で与えられることに注意してください。
H(s_1, i_1, s_2, i_2) = (s_1 の各文字の文字コードの和 * i_1 + s_2 の各文字の文字コードの和 * i_2) % 1000
a
→ 97
)。多くの言語にも文字を文字コード(ASCII コード) に変換する手法が用意されているので、それらを使って実装してみましょう。例えば、Python3 では ord()
を使って文字を文字コードに変換することができます。
s_1
i_1
s_2
i_2s
上記のハッシュ関数で計算されるハッシュ値を 1 行で出力してください。
また、末尾に改行を入れ、余計な文字、空行を含んではいけません。
H(s_1, i_1, s_2, i_2)
すべてのテストケースにおいて、以下の条件をみたします。
shinagawa
813
wo
4649
181
shinagawa
428
ha
3150
466