Skip to content

Instantly share code, notes, and snippets.

@Nia-TN1012
Forked from Myoga1012/Abstract.md
Last active January 30, 2023 09:03
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Nia-TN1012/83526ab84bc7e0647aa7bd17a1636c3e to your computer and use it in GitHub Desktop.
Save Nia-TN1012/83526ab84bc7e0647aa7bd17a1636c3e 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 : Nia Tomonaka
// Twitter : https://twitter.com/nia_tn1012
// コマンドライン引数に俳句を半角スペースで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-2023 Nia T.N. Tech Lab. / Chronoir.net.
// 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
@Nia-TN1012
Copy link
Author

GitHubのアカウント統合のため、Myoga1012→Nia-TN1012に移行しました。

旧URL: https://gist.github.com/Myoga1012/388576661e0912b0e5a6

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment