Skip to content

Instantly share code, notes, and snippets.

@Myoga1012
Last active January 30, 2023 08:59
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save Myoga1012/388576661e0912b0e5a6 to your computer and use it in GitHub Desktop.
Save Myoga1012/388576661e0912b0e5a6 to your computer and use it in GitHub Desktop.
早速、F#で俳句プログラミングしてみたよっ!

このGistに上がっているF#ソースファイルの概要

  • Haiku.fs : Ver. 1.0, 始めての俳句プログラムです。
  • Haiku2.fs : Ver. 2.0, 俳句を縦書きで出力するプログラムです。
// とりあえず、シンプルなプログラム
// コマンドライン引数に俳句を半角スペースで5・7・5に区切って入力してから、実行します。
[<EntryPoint>]
let main argv =
argv |> Seq.iter( fun p -> p |> printfn "%s" )
0
// 俳句を縦書きで出力するプログラム
// Auther : Myoga Screw-bright
// Twitter : https://twitter.com/Myoga1012
// コマンドライン引数に俳句を半角スペースで5・7・5に区切って入力してから、実行します。
[<EntryPoint>]
let main argv =
// 文字数1番多い行の文字数を求めます。
let max = ( argv |> Seq.maxBy( fun a -> a.Length ) ).Length
// 各行は上で求めた文字数になるように、全角スペースで末尾をパディングします。
let argv2 = argv |> Array.map( fun a -> a.PadRight( max, ' ' ) )
// 文字列のを縦書きになるように並び替えて、出力します。
Array.init max ( fun i -> System.String( [| for j in 0..argv2.Length - 1 -> argv2.[j].[i] |] |> Array.rev ) )
|> Array.iter( fun v -> v |> printfn "%s" )
0
// Haiku2.fs
// Copyright (c) 2014-2015 Myoga-TN.net All Rights Reserved.
// This software is released under the MIT License.
// http://opensource.org/licenses/mit-license.php
// コマンドライン引数に俳句を半角スペースで5・7・5に区切って入力してから、実行します。
[<EntryPoint>]
let main argv =
// 文字数1番多い行の文字数を求めます。
let max = ( argv |> Seq.maxBy( fun a -> a.Length ) ).Length
// 各行は上で求めた文字数になるように、全角スペースで末尾をパディングします。
let argv2 = argv |> Array.map( fun a -> a.PadRight( max, ' ' ) )
// 文字列のを縦書きになるように並び替えて、出力します。
Array.init max ( fun i -> [| for j in 0..argv2.Length - 1 -> argv2.[j].[i] |] |> Array.rev )
|> Array.iter( fun v -> System.String( v ) |> printfn "%s" )
0
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment