スポンサーサイト

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

どう書く?org '('と')'の対応

 
お題は「'('と')'の対応」です。  
  
問題は次の通り  
 
入力の'('と')'の対応をとってください。  
ただし、コード中に'('と')'を含まないでください。 
 
コード中に'('と')'を含まないという制約をいかに実現するかという問題です。 
 
チェックする文字列を引数にして対応がとれているかどうかを返す関数checkを定義します。 
 
> let check inp = 
    let inpAsStr = string inp 
    let endIndex = inpAsStr.Length 
    let rec checkSub dif cur_index = 
        if dif < 0 then false 
        else 
            if cur_index = endIndex   then 
                if dif = 0 then 
                    true 
                else  
                    false 
            else  
                let cur_char =inpAsStr.Chars cur_index 
                let newDif = if cur_char = '\x28' then 
                                    dif + 1  
                             elif cur_char = '\x29' then 
                                    dif - 1 
                             else  
                                    dif 
                let newIndex = cur_index + 1 
                checkSub newDif newIndex 
    checkSub 0 0;; 
 
val check : obj -> bool 
 
> check "(()))";; 
val it : bool = false 
> check ")(";; 
val it : bool = false 
> check "(()())";; 
val it : bool = true 
 
では全コードです。 
 
let check inp = 
    let inpAsStr = string inp 
    let endIndex = inpAsStr.Length 
    let rec checkSub dif cur_index = 
        if dif < 0 then false 
        else 
            if cur_index = endIndex   then 
                if dif = 0 then 
                    true 
                else  
                    false 
            else  
                let cur_char =inpAsStr.Chars cur_index 
                let newDif = if cur_char = '\x28' then 
                                    dif + 1  
                             elif cur_char = '\x29' then 
                                    dif - 1 
                             else  
                                    dif 
                let newIndex = cur_index + 1 
                checkSub newDif newIndex 
    checkSub 0 0                        
 
[<EntryPoint>] 
let main args = 
   let result = check args.[0] 
   System.Console.Write result 
   0 
スポンサーサイト

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

コメントの投稿

非公開コメント

プロフィール

T GYOUTEN

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

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

この人とブロともになる

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