スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

F#雑記 slope lines

arnarchy golf のslope linesという問題をやってみました。(arnarchy golfは短いプログラムを競う所ですが、単なる問題として解いてます)

例えば次のようなインプットに対して

Idle hands are the devil's workshop.
An eye for an eye, and a tooth for a tooth.
Call a spade a spade.
Failure teaches success.

次のように出力するプログラムです。(本来空白である部分は_で表示しています。)


___________________________________________________________________________________h
__________________________________________________________________________________t
________________________________________________________________________________o
______________________________________________________________________________o
____________________________________________________________________________t
______________________________________________________________________.
____________________________________________________________________p___a
__________________________________________________________________o
________________________________________________________________h___r
______________________________________________________________s___o
____________________________________________________________k___f
__________________________________________________________r
________________________________________________________o___h
______________________________________________________w___t
________________________________________________________o
__________________________________________________s___o
________________________________________________'___t
______________________________________________l
____________________________________________i___a
__________________________________________v
________________________________________e___d_______.
______________________________________d___n_______s
________________________________________a___.___s
__________________________________e_______e___e
________________________________h___,___d___c
______________________________t___e___a___c
________________________________y___p___u
__________________________e___e___s___s
________________________r
______________________a___n___a___s
________________________a_______e
__________________s_______e___h
________________d___r___d___c
______________n___o___a___a
____________a___f___p___e
__________h_______s___t
____________e
______e___y___a___e
____l___e_______r
__d_______l___u
I___n___l___l
__A___a___i
____C___a
______F

コンソールアプリとして作成しました。

文字列の配列をlist>型に変換して、座標を付加したうえで、座標変換をしています。
コードは以下の通りです。

let dispSlopeLines (strLst:list) =
let cordinatedChars =
strLst
|> List.map(fun str -> List.ofArray (str.ToCharArray()))
|> List.mapi(fun r lst -> lst |> List.mapi (fun c ele -> (ele,(r,c))))//座標の付加
|> List.concat
|> List.map (fun (ele,(r,c)) -> (ele,(r-c,r+c)))//座標変換

let minRow =
cordinatedChars
|> List.map (fun (_,(r,_)) -> r)
|> List.min

cordinatedChars
|> List.map(fun (ele,(r,c)) -> (ele,(r - minRow,c)))//行が0から始まるように変換
|> List.map (fun (ele,(newR,newC)) ->
System.Console.SetCursorPosition(newC,newR)
System.Console.Write(ele.ToString()))
|>ignore

System.Console.Read()
|>ignore

let main () =
let sample = ["Idle hands are the devil's workshop.";
"An eye for an eye, and a tooth for a tooth.";
"Call a spade a spade.";
"Failure teaches success."]

dispSlopeLines sample

do main()
スポンサーサイト

テーマ : プログラミング
ジャンル : コンピュータ

trackback


この記事にトラックバックする(FC2ブログユーザー)

Slope Lines

【F#】Slope Lines

コメントの投稿

非公開コメント

プロフィール

T GYOUTEN

Author:T GYOUTEN
F#と英単語とフリーソフトと読書に興味があります。
ホームページでフリーソフトも公開しています。どぞ御贔屓に。

最新記事
最新コメント
最新トラックバック
月別アーカイブ
カテゴリ
フリーエリア
フリーエリア
blogram投票ボタン
検索フォーム
RSSリンクの表示
リンク
ブロとも申請フォーム

この人とブロともになる

QRコード
QRコード
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。