中心が整数間隔で配置された軸に沿った単位正方形要素に分割された2D領域を取ります。エッジは、2つの要素で共有される場合は内部エッジと呼ばれ、それ以外の場合は外部エッジと呼ばれます。
あなたの目標は、として知られている各要素の中心から出発外縁に到達するために横断しなければならない隣接要素の最小数を見つけることであるtraversal distance
、またはdistance
略しています。エッジのみを横断できます(つまり、コーナーカット/斜め移動はできません)。「外部要素」(少なくとも1つの外部エッジを持つ要素)は0
、外部エッジに到達するために隣接する要素を横断する必要があると見なされることに注意してください。
入力
入力は、すべての要素の中心の(x、y)を示す非負の整数ペア座標のリストです。重複する要素はないと想定されます(つまり、x / yペアが要素を一意に識別します)。要素の入力順序について何も想定してはいけません。
入力の原点を任意の場所(0、0、1、1など)に変換できます。
すべての入力要素が接続されていると仮定できます。つまり、上記の規則を使用して、任意の要素から他の要素に移動することが可能です。これは、2D領域が単に接続されているという意味ではないことに注意してください。内部に穴がある場合があります。
例:次は無効な入力です。
0,0
2,0
エラーチェックは不要です。
入力は、任意のソース(ファイル、stdio、関数パラメーターなど)からのものです。
出力
出力は、各要素を識別する座標のリストと、エッジに到達するために通過した対応する整数距離である必要があります。出力は、任意の要素の順序にすることができます(たとえば、入力として受け取ったのと同じ順序で要素を出力する必要はありません)。
出力は、任意のソース(ファイル、stdio、関数の戻り値など)に対するものです。
要素の座標を外部距離と一致させる出力はすべて問題ありません。たとえば、これらはすべて問題ありません。
x,y: distance
...
[((x,y), distance), ...]
[(x,y,distance), ...]
例
テキスト入力例の形式はx,y
、1行に1つの要素があります。これを便利な入力形式に変更してください(入力形式の規則を参照)。
テキスト例の出力は、x,y: distance
行ごとに1つの要素を持つ形式です。繰り返しになりますが、これを便利な出力形式に変更してください(出力形式の規則を参照)。
グラフィカルな図の左下の境界は(0,0)であり、内部の数字は、外側の端に到達するために予想される最小距離を表します。これらの図は純粋にデモンストレーションのみを目的としていることに注意してください。プログラムはこれらを出力する必要はありません。
例1
入力:
1,0
3,0
0,1
1,2
1,1
2,1
4,3
3,1
2,2
2,3
3,2
3,3
出力:
1,0: 0
3,0: 0
0,1: 0
1,2: 0
1,1: 1
2,1: 0
4,3: 0
3,1: 0
2,2: 1
2,3: 0
3,2: 0
3,3: 0
グラフ表示:
例2
入力:
4,0
1,1
3,1
4,1
5,1
6,1
0,2
1,2
2,2
3,2
4,2
5,2
6,2
7,2
1,3
2,3
3,3
4,3
5,3
6,3
7,3
8,3
2,4
3,4
4,4
5,4
6,4
3,5
4,5
5,5
出力:
4,0: 0
1,1: 0
3,1: 0
4,1: 1
5,1: 0
6,1: 0
0,2: 0
1,2: 1
2,2: 0
3,2: 1
4,2: 2
5,2: 1
6,2: 1
7,2: 0
1,3: 0
2,3: 1
3,3: 2
4,3: 2
5,3: 2
6,3: 1
7,3: 0
8,3: 0
2,4: 0
3,4: 1
4,4: 1
5,4: 1
6,4: 0
3,5: 0
4,5: 0
5,5: 0
グラフ表示:
例3
入力:
4,0
4,1
1,2
3,2
4,2
5,2
6,2
8,2
0,3
1,3
2,3
3,3
4,3
5,3
6,3
7,3
8,3
9,3
1,4
2,4
3,4
4,4
5,4
6,4
7,4
8,4
9,4
2,5
3,5
4,5
5,5
6,5
9,5
10,5
11,5
3,6
4,6
5,6
9,6
10,6
11,6
6,7
7,7
8,7
9,7
10,7
11,7
出力:
4,0: 0
4,1: 0
1,2: 0
3,2: 0
4,2: 1
5,2: 0
6,2: 0
8,2: 0
0,3: 0
1,3: 1
2,3: 0
3,3: 1
4,3: 2
5,3: 1
6,3: 1
7,3: 0
8,3: 1
9,3: 0
1,4: 0
2,4: 1
3,4: 2
4,4: 2
5,4: 2
6,4: 1
7,4: 0
8,4: 0
9,4: 0
2,5: 0
3,5: 1
4,5: 1
5,5: 1
6,5: 0
9,5: 0
10,5: 0
11,5: 0
3,6: 0
4,6: 0
5,6: 0
9,6: 0
10,6: 1
11,6: 0
6,7: 0
7,7: 0
8,7: 0
9,7: 0
10,7: 0
11,7: 0
グラフ表示:
得点
これはコードゴルフです。バイト単位の最短コードが優先されます。標準の抜け穴が適用されます。この問題を解決するために特別に設計されたもの以外のビルトインは許可されます。