diff options
| author | Shinya Sato <shinnya.sato@gmail.com> | 2022-08-28 20:44:20 +0900 |
|---|---|---|
| committer | Shinya Sato <shinnya.sato@gmail.com> | 2022-08-28 20:44:20 +0900 |
| commit | baa27f2adf0ad741add152bcbca6ffbd312ef066 (patch) | |
| tree | d4a345ec3cf0bcaccf1ac293cd6ad50802bf9224 /comparison/SML | |
| parent | e50f2cf8ccab628d0cc90823389355242a23a28a (diff) | |
| parent | b850b9d9e64c12a927bfc2692b4134b23ef79be5 (diff) | |
| download | inpla-baa27f2adf0ad741add152bcbca6ffbd312ef066.tar.gz inpla-baa27f2adf0ad741add152bcbca6ffbd312ef066.zip | |
Merge branch 'develop'
Diffstat (limited to 'comparison/SML')
| -rw-r--r-- | comparison/SML/Makefile | 2 | ||||
| -rw-r--r-- | comparison/SML/fib-38.sml | 5 | ||||
| -rw-r--r-- | comparison/SML/nqueen-12.sml | 33 |
3 files changed, 39 insertions, 1 deletions
diff --git a/comparison/SML/Makefile b/comparison/SML/Makefile index 14dca02..5e89840 100644 --- a/comparison/SML/Makefile +++ b/comparison/SML/Makefile @@ -1,5 +1,5 @@ COMMAND = sml -TARGET = dummy.sml ack3-11.sml fib38.sml bsort-20000.sml isort-20000.sml qsort-260000.sml msort-260000.sml +TARGET = dummy.sml nqueen-12.sml ack3-11.sml fib-38.sml bsort-20000.sml isort-20000.sml qsort-260000.sml msort-260000.sml BENCHMARK = bash ../tools/sptest_scripts.sh LOG = log.txt diff --git a/comparison/SML/fib-38.sml b/comparison/SML/fib-38.sml new file mode 100644 index 0000000..504d4ac --- /dev/null +++ b/comparison/SML/fib-38.sml @@ -0,0 +1,5 @@ +fun fib 0 = 0 +| fib 1 = 1 +| fib n = (fib (n-1)) + (fib (n-2)); + +fib 38; diff --git a/comparison/SML/nqueen-12.sml b/comparison/SML/nqueen-12.sml new file mode 100644 index 0000000..9605312 --- /dev/null +++ b/comparison/SML/nqueen-12.sml @@ -0,0 +1,33 @@ +fun member x [] = false +| member x (y::ys) = if x=y then true else (member x ys); + +(* check for (0,q) and (k, qpos[col=k]) where k=1... +http://www.nct9.ne.jp/m_hiroi/func/haskell06.html + 0 1 2 --> + *------------- + 1| . . . . . . + 2| . . . -3. . 5 - 3 = 2 + 3| . . -2. . . 5 - 2 = 3 + 4| . -1. . . . 5 - 1 = 4 + 5| Q . . . . . Q position is 5 + 6| . +1. . . . 5 + 1 = 6 + 7| . . +2. . . 5 + 2 = 7 + 8| . . . +3. . 5 + 2 = 8 + *------------- +*) +fun threat k m [] = false + | threat k m (x::xs) = + if (k = x-m) orelse (k = m-x) then true + else (threat (k+1) m xs); + + +fun queen1 0 b n = [] + | queen1 m b n = + if (member m b) orelse (threat 1 m b) then (queen1 (m-1) b n) + else if (length b) = (n-1) then [m::b]@(queen1 (m-1) b n) + else (queen1 n (m::b) n) @ (queen1 (m-1) b n); + +fun queen n = queen1 n [] n; + +val n = 12; +length (queen n); |
