challenge あみだくじ

次のような書式で与えられた「あみだくじ」があります。
(あみだくじはコード中に埋め込んでも、標準入力や
外部ファイルから読み込んでも、書きやすい方法でかまいません)

A B C D E
| | |-| |
|-| | |-|
| |-| |-|
|-| |-| |
|-| | | |

このあみだくじをたどって
A B C D E
| | |-| |
|-| | |-|
| |-| |-|
|-| |-| |
|-| | | |
B D C A E
のように結果を表示させるプログラムを作ってください。

Posted feedbacks - StandardML

とりあえず。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
val s = [
"A B C D E",
"| | |-| |",
"|-| | |-|",
"| |-| |-|",
"|-| |-| |",
"|-| | | |"
]

fun amida [] = []
  | amida (a as (x::xs)) =
  let
    fun loop [] y = y
      | loop (s::ss) y =
      let
        fun f ((i, _), v) =
          substring (v, 0, i - 1) ^
          (implode o rev o explode o substring) (v, i - 1, 3) ^
          String.extract (v, i + 2, NONE)
      in
        loop ss (foldl f y (global_find "-" s))
      end
  in
    a @ [loop xs x]
  end

val _ = app println (amida s)

Index

Feed

Other

Link

Pathtraq

loading...