-1
私はHaskellでBurrows-Wheeler変換を実装しています。すべての循環された文字列の組み合わせが生成され、変換の第1ステップとしてマトリックスに格納される。私はHaskell Listを使って行列を構築しています。リストには元の単語がリストの頭に、その循環的な組み合わせがテールに格納されます。Haskellのリストを変更して追加する
Here is an Example of a transformed word
私が最初に循環した文字列を出力する関数を書かれています。しかし、関数を再帰として呼び出すと、無限ループに直面します。ここで
は、私が何をしないのです機能
type BWT = [String] -- List of Strings for Burrows Wheeler matrix
samplebwt = ["BANANA$"] -- Sample input
rotateBWT:: BWT -> BWT
rotateBWT a = if (head (last a)) /= '$'
then [tail (head a) ++ [head (head a)]] ++ rotateBWT [tail (head a) ++ [head (head a)]]
else a
rotateBWT samplebwt
-- returns ["ANANA$B"]
--expected output ["ANANA$B", "NANA$BA", "ANA$BNA", "NA$BANA", "A$BANAN", "$BANANA"]
のですか?
をペンと紙で入力 – jberryman
あなたのコードは(すべての組み合わせを生成しますが最後のものを複製しますが)あなたが思っているコードを実行していないことは明らかです。 – user2407038