0

文字リスト リストの数値を変更できる関数を宣言しようとしています (以前の数独ゲームにまだ取り組んでいます)。changesudo : char list list -> int * int * char -> char list list changesudo xs (r,s,c) を呼び出せるようにする必要があります。ここで、xs は文字リスト リスト、r はリスト、s は位置です。 xs および c は char です。

これは私が持っているものです:

fun changesudo xs (r,s,c) = 
                            let 
                              val g = hd (List.take (List.drop 
                                                     (xs , (r-1)) , 1)); 
                              val h = (List.take(g , s-1)) @ [c] 
                                      @ List.drop(g , s);
                            in
                              (List.take (xs , (r-1)) @ [h] @ List.drop(xs , r)) 
                            end;

そして、これは 'a list list -> int * int * 'a -> 'a list list です - だから私はほとんどそこにいます。

どうすれば修正できますか?

この関数で文字リスト list を取得します

4

1 に答える 1

1

修正するものは何もありません。取得したタイプは、目的のタイプよりも一般的ですが、それは問題ではありません。

この型'a list list -> int * int * 'a -> 'a list listは、 の文字を変更するのに完全に機能しますchar list list。それが意味するのは、それを使用して の整数を変更することもできるということだけですint int list

つまり、achar list listchar * int * intタプルを入力すると、指定さchar list listれた位置の char が置換された a が出力されるため、希望どおりに動作します。

注意点: 意図的なものかどうかはわかりませんが、関数のインデックスは 1 です。つまり、最初のリストの最初の項目の位置(1,1)は not(0,0)です。

于 2010-10-18T14:40:38.090 に答える