diff --git a/.gitignore b/.gitignore index e7de573..8cd0df3 100644 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,2 @@ .vscode -.idea -dist-newstyle -a.out -out.o -out.asm +.idea \ No newline at end of file diff --git a/examples/euler-1.zorth b/examples/euler-1.zorth new file mode 100644 index 0000000..7974d91 --- /dev/null +++ b/examples/euler-1.zorth @@ -0,0 +1,18 @@ +: over swap dup rot rot ; +: rem over over / * - ; + + +0 1 +begin + dup 1000 < +while + dup 3 rem 0 = if + dup rot + swap + else dup 5 rem 0 = if + dup rot + swap + else fi + fi + 1+ +repeat + +drop . diff --git a/examples/euler-2.zorth b/examples/euler-2.zorth new file mode 100644 index 0000000..0700573 --- /dev/null +++ b/examples/euler-2.zorth @@ -0,0 +1,14 @@ +: over swap dup rot rot ; +: rem over over / * - ; + +1 2 +begin + over 4000000 < +while + over 2 rem 0 = if + over mem @ + mem swap ! + else fi + dup rot + +repeat + +mem @ . diff --git a/examples/euler-3.zorth b/examples/euler-3.zorth new file mode 100644 index 0000000..44de1b2 --- /dev/null +++ b/examples/euler-3.zorth @@ -0,0 +1,38 @@ +: over swap dup rot rot ; +: rem over over / * - ; +: false 0 ; +: true 1 ; + +: palindrome? + mem 0 ! + dup begin + dup 0 > + while + dup 10 rem mem @ 10 * + mem swap ! + 10 / + repeat + drop + mem @ = +; + +: ans mem 8 + ; + +1 begin + dup 999 < +while + 1 begin + dup 999 < + while + over over * + dup palindrome? if + dup ans @ > if ans swap ! else drop fi + else + drop + fi + 1+ + repeat + drop + 1+ +repeat + +ans @ . diff --git a/examples/rule110.zorth b/examples/rule110.zorth index c16afa3..a646bd7 100644 --- a/examples/rule110.zorth +++ b/examples/rule110.zorth @@ -21,41 +21,45 @@ 0 = if 0 = if - 32 display 0 = if ( 0 0 0 ) + 32 display swap dup 0 ! else ( 0 0 1 ) + 35 display swap dup 1 ! fi else - 35 display 0 = if ( 0 1 0 ) + 35 display swap dup 1 ! else ( 0 1 1 ) + 35 display swap dup 1 ! fi fi else 0 = if - 32 display 0 = if ( 1 0 0 ) + 32 display swap dup 0 ! else ( 1 0 1 ) + 35 display swap dup 1 ! fi else - 35 display 0 = if ( 1 1 0 ) + 35 display swap dup 1 ! else ( 1 1 1 ) + 32 display swap dup 0 ! fi fi