quiz

せっかくなので(何が?)クイズでも。
問題の定式化が曖昧なのは、わざとということで。

循環のない連結有向グラフで、入口と出口がそれぞれ1つのものを考えます。
グラフデータは次のように与えられます。

::Node :== Int
::Arc :== (Node, Node)  //(from, to)

nodes :: [Node]
arcs :: [Arc]

ただし、nodesの中の任意の要素を取り出したとき、その要素の直前に連結する要素はその要素より前の部分リストに必ず含まれ、逆に、その要素の直後に連結する要素はその要素より後の部分リストに必ず含まれます。
このグラフを描画するとき、辺ができるだけ交差しないような、頂点の配置を求めてください。

という感じで。
入出力は、こんなイメージ。

nodes = [1,2,3,4,5,6,7]
arcs = [(1,6),(6,8),(1,2),(2,3),(2,4),(3,5),(4,7),(5,7),(5,8),(7,8)]
----
16   8
 235
  4 7

ちなみに、まだ私は解いていません。

      • -

あ、辺は、「─」「└」「┘」の3種類で全部表現できるかな?