指紋とDNA検査の発見に先立ち、英国の警察は人体計測システムを使用して、繰り返し犯人を特定しました。犯罪者の身体の特定の部分が測定され、記録に保存されました-身体のこれらの部分は、成人後にサイズが変化しないと仮定されました。このシステムは bertillonnageました。
次の図は、警察がこれらの記録にすばやくアクセスするために使用するファイリングシステムを示しています。
図1:番号付きの引き出し付きのファイリングシステム。
注:イメージが表示されない場合は、imgurミラーを試す か、自分でコンパイルします。
ファイリングキャビネットには、81個の番号付きの引き出しがあります。各引き出しにはカードが含まれており、各カードには犯罪者の身体の特定の部分の測定値が含まれています。
- 頭の長さ(
H) - 頭の幅(
B) - 右耳の幅(
E) - 人差し指の長さ(
F)
各測定は、小、中、大のいずれかに分類されます。
例えば、引出し56は、以下の特性を有するカードを含んでいる:小H、大きなB、培地E、及び小F.これは文字を用いて表記することができS、MおよびL小、中、大の代わりに:
SH,LB,ME,SF
サイズ文字が最初に表示され、次に測定値が表示されます。さらに、感嘆符!を前に置いてネガティブにすることもできます。
!SH,LB,!ME,SF
これは、次の特性を持つカードを示します:小Hではなく、大B、中Eではなく、小F。これらの特性(58、60、61、および63)を持つカードを含む4つの引き出しがあります。
あなたの仕事は、いくつかの特性を示す文字列が与えられると、それらの特性を持つカードを含むすべての引き出しを出力するプログラムを書くことです。特定の特性を持つカードを含むドロワーがない場合、output 0。
以下に入力と出力の例を示します。
- 入力:
SH,LB,ME,SF
出力:56 - 入力:
!SH,LB,!ME,SF
出力:58,60,61,63 - 入力:
SB,!MF,!LF
出力:1,2,3,4,5,6,7,8,9 - 入力:
MH,!MH
出力:0
これはコードゴルフなので、最短のエントリーが勝ちです。仕様が明確でない場合は、コメントで質問してください。