スポンサーサイト

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

F#雑記 toggleCASE

 Anarchy_Golfの次の問題をF#でやってました  
 
問題は 
「例えばisUpperCaseをisUPPERcaseに 
setDataWidthHeightComponentCountをsetDATAwidthHEIGHTcomponentCOUNT 
に変換するような関数を定義せよ」 
というような問題です。 
 
次の様に関数を定義します。 
 
> open System 
let toggleCase (str:string) = 
    let rec tcSub (convFArr:(char->char)[]) toggle_count (chrLst:list<char>) (res:list<char>)= 
        match chrLst with 
        |ch1::ch2::tail when Char.IsLower ch1 && Char.IsUpper ch2 
                    -> tcSub convFArr (toggle_count + 1) (ch2::tail) ((convFArr.[toggle_count % 2] ch1)::res)  
        |ch ::tail  ->  tcSub convFArr toggle_count tail ((convFArr.[toggle_count % 2] ch)::res)  
        | _         ->  new String(Array.ofList(List.rev res)) 
     
    let charList = List.ofArray(str.ToCharArray()) 
    tcSub [|Char.ToLower;Char.ToUpper|] 0 charList [];; 
 
val toggleCase : string -> System.String 
 
では使用してみます。 
 
> toggleCase "dnsQueryPacketForHostName";; 
val it : String = "dnsQUERYpacketFORhostNAME" 
スポンサーサイト

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

trackback


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

toggleCASE

【F#】toggleCASE

コメントの投稿

非公開コメント

プロフィール

T GYOUTEN

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

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

この人とブロともになる

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