2017-05-11 18 views
0

で「char配列の配列」へ:SMLNJの「char配列の配列」から「文字のリスト配列」から変換「char型のリスト配列」私は次の変数に変換しようとしていますSML

- final "in1.txt"; 
val it = [|[#"S",#".",#".",#"."],[#".",#".",#".",#"."],[#"W",#".",#"X",#"W"], 
[#".",#".",#"X",#"E"]|] : char list array 

を。私がこれをやりたいのは、このデータをランダムに反復して、学校プロジェクトにDijkstraのようなアルゴリズムを実行できるようにする必要があるからです(このデータを反復可能にする効率的な方法があれば、耳)。これを行う方法はありますか?入力ファイルを読み込み、上記返す関数は、この(私はスタックオーバーフローでそれを見つけた)です:

fun linelist file = 
    let 
     open Char 
     open String 
     open List 
     val instr = TextIO.openIn file 
     val str = TextIO.inputAll instr 
    in 
     tokens isSpace str 
     before 
     TextIO.closeIn instr 
    end 

fun final file = 
    let 
     fun getsudo file = map explode (linelist file) 
    in 
     Array.fromList (getsudo file) 
    end 

して処理する必要のある入力ファイルは、以下のいずれかのようです:

S... 
.... 
W.XW 
..XE 

答えて

0

あなたはこの(宇宙宅配)地図を読むために別の方法を試したいかもしれません(Lakisを助けるために - はい私はあなたのクラスメートです)。

fun parse file = 
     let 
      fun next_String input = (TextIO.inputAll input) 
      val stream = TextIO.openIn file 
      val a = next_String stream 
      val lista = explode(a) 
     in 
      lista 
     end 

構文解析は、テキストファイルからすべての内容を取得し、文字列aに保存する関数です。次に、関数explode(SML NJのString Signatureの関数)は、listaというリストを作成します。リストの要素は、同じ順序で文字列aの文字です。

次に、リストの内容を配列に保存する別の関数を作成できます。 # "\ n"が出現するまで、配列の各行にはリストの文字が入ります。

関連する問題