s1
とs2
の2つの文字列を指定して、s2
がcaesar cipher of s1
かどうかをチェックするチェック機能を実装したいと思います。面はstring->string->bool
のように見える必要があります。ocamlのシーザー暗号チェック
問題は、String.length
以外の文字列関数を使用することができないため、どのように解決できますか?私は許可されていませんlist array
、iterations
。 recursions
とpattern matching
のみ
私を助けてください。また、上記の制限を持つモジュール関数以外の部分文字列関数をocamlで書く方法を教えてください。
これは宿題ですか?これまでに何を試しましたか? – chrisaycock
@padと私は文字が限られているので私の答えでコードを与えた。聞かせてS1、S2 = \t(*アルファベットマッピングテーブル*) \t文字列キー= "ABCD" \t(*マッピング*) \t文字列mapping_cipher = "CADB" \t String.lengthですs1の場合!= String.lengthですS2をチェック \t \t例外が発生します。 \t else \t \tと一致するs1。[0] –
(*キーストリングの中のある文字とキーストリングからインデックスiを取得し、s2。[0]とmapping_cipher。[i]を一致させると、ここにいくつかの関数と呼び出しを書くことはできますか? \t \t \t *) \t \t \t \t(* Iは、特定の文字列関数と反復せずに再帰的に文字列キーをナビゲートすることができますか? \t \t例えば、私はそれが形式はstring->はstring->ブール値を維持行うことができますどのように? \t \t私は再帰的にどのように呼び出すことができます再帰関数w string.subが許されないならば、s1とs2の残りの部分は? \t \tと私も知りませんs1。[0]それは文字列の操作でもあるため、合法になります。 \t \t \t \t \t \t *) –