Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
62
Task/Zig-zag-matrix/ATS/zig-zag-matrix.ats
Normal file
62
Task/Zig-zag-matrix/ATS/zig-zag-matrix.ats
Normal file
|
|
@ -0,0 +1,62 @@
|
|||
(* ****** ****** *)
|
||||
//
|
||||
#include
|
||||
"share/atspre_define.hats" // defines some names
|
||||
#include
|
||||
"share/atspre_staload.hats" // for targeting C
|
||||
#include
|
||||
"share/HATS/atspre_staload_libats_ML.hats" // for ...
|
||||
//
|
||||
(* ****** ****** *)
|
||||
//
|
||||
extern
|
||||
fun
|
||||
Zig_zag_matrix(n: int): void
|
||||
//
|
||||
(* ****** ****** *)
|
||||
|
||||
fun max(a: int, b: int): int =
|
||||
if a > b then a else b
|
||||
|
||||
fun movex(n: int, x: int, y: int): int =
|
||||
if y < n-1 then max(0, x-1) else x+1
|
||||
|
||||
fun movey(n: int, x: int, y: int): int =
|
||||
if y < n-1 then y+1 else y
|
||||
|
||||
fun zigzag(n: int, i: int, row: int, x: int, y: int): void =
|
||||
if i = n*n then ()
|
||||
else
|
||||
let
|
||||
val () = (if x = row then begin print i; print ','; end else ())
|
||||
//val () = (begin print x; print ' '; print y; print ' '; print i; print ' '; end)
|
||||
val nextX: int = if ((x+y) % 2) = 0 then movex(n, x, y) else movey(n, y, x)
|
||||
val nextY: int = if ((x+y) % 2) = 0 then movey(n, x, y) else movex(n, y, x)
|
||||
in
|
||||
zigzag(n, i+1, row, nextX, nextY)
|
||||
end
|
||||
|
||||
implement
|
||||
Zig_zag_matrix(n) =
|
||||
let
|
||||
fun loop(row: int): void =
|
||||
if row = n then () else
|
||||
let
|
||||
val () = zigzag(n, 0, row, 0, 0)
|
||||
val () = println!(" ")
|
||||
in
|
||||
loop(row + 1)
|
||||
end
|
||||
in
|
||||
loop(0)
|
||||
end
|
||||
|
||||
(* ****** ****** *)
|
||||
|
||||
implement
|
||||
main0() = () where
|
||||
{
|
||||
val () = Zig_zag_matrix(5)
|
||||
} (* end of [main0] *)
|
||||
|
||||
(* ****** ****** *)
|
||||
Loading…
Add table
Add a link
Reference in a new issue