$ cd tools/sim_layouts
$ time python3 test_famires_v3.py
OK  80cmの通路はBellaBotで通れる（マス目0.025・ずらし0.0）
OK  77cmの通路はBellaBotで通れない（マス目0.025・ずらし0.0）
OK  75cmの通路はServiで通れる（マス目0.025・ずらし0.0）
OK  80cmの通路はBellaBotで通れる（マス目0.025・ずらし0.013）
OK  77cmの通路はBellaBotで通れない（マス目0.025・ずらし0.013）
OK  75cmの通路はServiで通れる（マス目0.025・ずらし0.013）
OK  80cmの通路はBellaBotで通れる（マス目0.025・ずらし0.031）
OK  77cmの通路はBellaBotで通れない（マス目0.025・ずらし0.031）
OK  75cmの通路はServiで通れる（マス目0.025・ずらし0.031）
OK  80cmの通路はBellaBotで通れる（マス目0.0125・ずらし0.0）
OK  77cmの通路はBellaBotで通れない（マス目0.0125・ずらし0.0）
OK  75cmの通路はServiで通れる（マス目0.0125・ずらし0.0）
OK  80cmの通路はBellaBotで通れる（マス目0.0125・ずらし0.013）
OK  77cmの通路はBellaBotで通れない（マス目0.0125・ずらし0.013）
OK  75cmの通路はServiで通れる（マス目0.0125・ずらし0.013）
OK  80cmの通路はBellaBotで通れる（マス目0.0125・ずらし0.031）
OK  77cmの通路はBellaBotで通れない（マス目0.0125・ずらし0.031）
OK  75cmの通路はServiで通れる（マス目0.0125・ずらし0.031）
OK  横向きのボックスの左右（ベンチの背）は座る側の候補にしない
OK  縦向きのボックスの上下（ベンチの背）は座る側の候補にしない
OK  店の外にはみ出した卓を見つける
OK  トイレの入口の前の壁を見つける
OK  トイレの壁でへだてた1mの席は違反にしない
OK  壁がなければ、トイレからちょうど1mの席を見つける
OK  卓に食い込んだ壁を見つける
OK  ゆったり型の仕切り（背もたれの上）は違反にしない
OK  座る側の前をふさがれた卓を見つける
OK  出発点がふさがれていたら止める
OK  待合がないのを見つける
OK  ⑦は③と同じ卓の数・種類・席数
OK  L字席（flip=False・mirror=False）の止まってよい辺は、開いた角とソファの端0.6mまで
OK  L字席（flip=False・mirror=True）の止まってよい辺は、開いた角とソファの端0.6mまで
OK  L字席（flip=True・mirror=False）の止まってよい辺は、開いた角とソファの端0.6mまで
OK  L字席（flip=True・mirror=True）の止まってよい辺は、開いた角とソファの端0.6mまで
OK  ⓪T02 の止まる位置は、開いた角か、そこからソファの端に沿って0.6m以内
OK  ⓪の待機場所は、1台ずつ受け渡し口の前まで出られる
OK  2人席（ベンチがbottom）は、ベンチの側とベンチの横を止まる辺にしない
OK  2人席（ベンチがtop）は、ベンチの側とベンチの横を止まる辺にしない
OK  2人席（ベンチがleft）は、ベンチの側とベンチの横を止まる辺にしない
OK  2人席（ベンチがright）は、ベンチの側とベンチの横を止まる辺にしない
OK  直す前の⓪の待機場所（2.2×0.7mに3台）を見つける
OK  待機場所の台数 100 を見つける
OK  待機場所の台数 0 を見つける
OK  待機場所の台数 -1 を見つける
OK  待機場所の台数 '3' を見つける
OK  待機場所の台数 2.5 を見つける
OK  待機場所の台数 True を見つける
OK  待機場所の前をふさぐと、真ん中の台だけ「出られない」を見つける
OK  待機場所の前と両横をふさぐと、3台とも「出られない」を見つける
OK  反例1：レジとレジ内を消すと見つける
OK  反例2：トイレの壁をほぼ全部外すと「切れ目」を見つける
OK  反例3：トイレの入口の前を「トイレの壁」という名前の壁でふさいでも見つける
OK  反例4：家具の真ん中に置いた接合扱いの仕切りを見つける
OK  反例5：待機場所100台を見つける
OK  反例6：⓪の建物の外を消すと、輪郭と合わないのを見つける
OK  反例7：輪郭を2m四方にすると見つける
OK  ⓪の輪郭から欠けを消すと、建物の外と合わないのを見つける
OK  今の店 p0_memory は決まりを守っている
OK  今の店 p1_efficient_corner は決まりを守っている
OK  今の店 p2_efficient_narrow は決まりを守っている
OK  今の店 p3_relaxed_center は決まりを守っている
OK  今の店 p4_relaxed_side は決まりを守っている
OK  今の店 p5_crammed は決まりを守っている
OK  ベンチの背に立つ仕切りは認める
OK  ベンチの背でも0.08mより深い食い込みは認めない
OK  トイレの目隠し：中心の線だけ当たる短い壁では違反にする（4本の線）
OK  トイレの目隠し：4本とも当たる壁なら違反にしない
OK  線分が厚さ2mmの壁を横切るのを見つける
OK  線分の端が壁に触れるだけなら、通ったとみなさない
OK  線分が壁から離れていれば、通ったとみなさない
OK  201番目だけ見通せる止まる位置も見つける
[OK] p2_efficient_narrow: {'name': '④ 効率重視型・狭い店・入口が右の壁', 'seats': 88, 'tables': 28, 'model': 'BellaBot', 'pass_width': 0.8, 'normal_width': 1.0, 'robot_tables': 28, 'robot_seats': 88, 'narrow_tables': 0, 'narrow_seats': 0, 'human_tables': 0, 'human_seats': 0, 'robot_dist_mean': 8.4, 'robot_dist_max': 14.02, 'human_walk_total': 0.0, 'human_walk_max': None}  マス目の差: []
OK  成功したときは、layout・analysis・summary に同じ版の番号が入る
[NG] p2_efficient_narrow: ④ 効率重視型・狭い店・入口が右の壁
   - 入口まわり: レジがない

違反があるので、/tmp/tmpgjtort40 には何も書いていない（前の版のまま）
OK  違反があると止まり、出力先のファイルは前の版のまま（作業用のフォルダも残らない）
[OK] p2_efficient_narrow: {'name': '④ 効率重視型・狭い店・入口が右の壁', 'seats': 88, 'tables': 28, 'model': 'BellaBot', 'pass_width': 0.8, 'normal_width': 1.0, 'robot_tables': 28, 'robot_seats': 88, 'narrow_tables': 0, 'narrow_seats': 0, 'human_tables': 0, 'human_seats': 0, 'robot_dist_mean': 8.4, 'robot_dist_max': 14.02, 'human_walk_total': 0.0, 'human_walk_max': None}  マス目の差: []

出力先へ入れ替える途中で失敗したので、/tmp/tmpgjtort40 を前の版に戻した
OK  入れ替えの途中で失敗すると、出力先は前の版に戻る（作業用のフォルダも残らない）
OK  反例A：トイレの壁の1cmの切れ目を見つける
OK  反例B：トイレの入口の内側の1cmのふさぎを見つける
OK  反例C：トイレの入口の前の奥行き0.1mを見つける
OK  反例D：輪郭の幅1cmの切れ込み（建物の外なし）を見つける
OK  輪郭に斜めの辺があれば止める
OK  出入り口Aを壁でふさぐと見つける
OK  p1：細い通路は3本で、幅はどれも1.2m
OK  p1：卓の数・止まる位置・距離が analysis と同じ
OK  p1：細い通路を通る卓は、止まる位置がその通路の区画の中
OK  p1：細い通路の入口は、受け渡し口の前から行ける端
OK  p1：全部の卓に部品（天板・座る位置）があり、座る位置の数が席数と同じ
OK  p1：場所の点がそろっている
OK  p1：スタッフが待つ点・並ぶ点・立つ点は、障害物から0.2m以上離れ、細い通路に入らない
OK  p1：席に着く点は障害物から0.2m以上離れ、どの卓にも1つ以上ある
OK  p1：レジ内は通れる部屋（スタッフだけ）、ほかの部屋は通れない箱
OK  p1：受け渡し口から全卓・卓から卓の全組に道順がある
OK  p1：ふだんの道か狭い道かは、試算の卓の分け方と同じ（robot→normal、narrow→narrow）
OK  p1：道順は受け渡し口の前から始まり、止まる位置で終わる
OK  p1：道順のどの区間も、その幅で通れるマス目だけを通る
OK  p5：細い通路は3本で、幅はどれも0.8m
OK  p5：卓の数・止まる位置・距離が analysis と同じ
OK  p5：細い通路を通る卓は、止まる位置がその通路の区画の中
OK  p5：細い通路の入口は、受け渡し口の前から行ける端
OK  p5：全部の卓に部品（天板・座る位置）があり、座る位置の数が席数と同じ
OK  p5：場所の点がそろっている
OK  p5：スタッフが待つ点・並ぶ点・立つ点は、障害物から0.2m以上離れ、細い通路に入らない
OK  p5：席に着く点は障害物から0.2m以上離れ、どの卓にも1つ以上ある
OK  p5：レジ内は通れる部屋（スタッフだけ）、ほかの部屋は通れない箱
OK  p5：受け渡し口から全卓・卓から卓の全組に道順がある
OK  p5：ふだんの道か狭い道かは、試算の卓の分け方と同じ（robot→normal、narrow→narrow）
OK  p5：道順は受け渡し口の前から始まり、止まる位置で終わる
OK  p5：道順のどの区間も、その幅で通れるマス目だけを通る
OK  ボックス席の列は、すき間なく並んだものだけをまとめる

すべて OK

real	1m1.048s
user	0m58.514s
sys	0m1.553s
