文字列でプラスを出力
文字列で+を表示する
http://ja.doukaku.org/291/lang/other/
の問題を多少変えてます。
問題で使われていたワード "doukaku" の語尾にdが付くのが嫌なので以下の出力結果になるようにしました。
出力結果:
0 | doukaku 1 | o k 2 | u a 3 | k k 4 | a u 5 | k o 6 |doukaku doukaku 7 |o k 8 |u a 9 |k k 10 |a u 11 |k o 12 |ukakuod ukakuod 13 | o k 14 | u a 15 | k k 16 | a u 17 | k o 18 | ukakuod
考えるのが苦手だなとつくづく思います。
沢山コードを書けばましになるかな。。
[ソースコード]
namespace Doukakuorg (* 文字列を+で表示 *) type C291 private () = member this.Run (text : string) = let max = text.Length - 1 let space = new string(' ', max) let reverse = new string(Array.rev (text.ToCharArray())) let mutable soucount = 0 for i in 0..(max * 3) do printf "%2d |" i if i < max || max * 2 < i then printf "%s" space if i % max = 0 then soucount <- soucount + 1 if soucount <= 2 then printf "%s" text else printf "%s" reverse if 2 <= soucount && soucount <= 3 then printf "%s" (space.[0..max-2]) if soucount <= 2 then printf "%s" text else printf "%s" reverse else printf "%c" text.[i % max] if 2 = soucount then printf "%s" space printf "%s" (space.[0..max-2]) printf "%s" space printf "%c" reverse.[i % max] else printf "%s" (space.[0..max-2]) printf "%c" reverse.[i % max] printfn "" () () static member Start() = let text = "doukaku" (new C291()).Run(text); ()