فهرست منبع

вынес tri в отдельный пакет

kpmy 10 سال پیش
والد
کامیت
090b4dee08
8فایلهای تغییر یافته به همراه7 افزوده شده و 225 حذف شده
  1. 1 1
      ncl/base.go
  2. 1 1
      ncl/std/b2.go
  3. 1 1
      ncl/std/b3.go
  4. 1 1
      ncl/std/bn.go
  5. 1 1
      ncl/std/elems.go
  6. 1 1
      ncl/std/pins.go
  7. 1 1
      ncl/tool/x.go
  8. 0 218
      tri/tri.go

+ 1 - 1
ncl/base.go

@@ -10,7 +10,7 @@ NCL - Null Convention Logic, с троичной базой. Суть таков
 В силу итеративной природы программ, невозможно непрерывное отслеживание значения переменной. Отсюда имеем вероятность пропуска валидного значения, однако, на плате в реальном проекте всегда присутствуют постоянно валидные источники сигнала - пины питания и триггеры-ячейки памяти, и вся схема зависит от их состояния, и не может произвольно это состояние сменить.
 */
 import (
-	"sim3/tri"
+	"github.com/kpmy/trigo"
 )
 
 type PinCode int

+ 1 - 1
ncl/std/b2.go

@@ -2,9 +2,9 @@ package std
 
 import (
 	"fmt"
+	"github.com/kpmy/trigo"
 	"github.com/kpmy/ypk/halt"
 	"sim3/ncl"
-	"sim3/tri"
 )
 
 type any2 struct {

+ 1 - 1
ncl/std/b3.go

@@ -2,9 +2,9 @@ package std
 
 import (
 	"fmt"
+	"github.com/kpmy/trigo"
 	"github.com/kpmy/ypk/halt"
 	"sim3/ncl"
-	"sim3/tri"
 )
 
 type any3 struct {

+ 1 - 1
ncl/std/bn.go

@@ -1,9 +1,9 @@
 package std
 
 import (
+	"github.com/kpmy/trigo"
 	"github.com/kpmy/ypk/halt"
 	"sim3/ncl"
-	"sim3/tri"
 )
 
 type sw struct {

+ 1 - 1
ncl/std/elems.go

@@ -4,10 +4,10 @@ import (
 	"fmt"
 	"reflect"
 	//	"sim3/api"
+	"github.com/kpmy/trigo"
 	"github.com/kpmy/ypk/assert"
 	"github.com/kpmy/ypk/halt"
 	"sim3/ncl"
-	"sim3/tri"
 )
 
 type power struct {

+ 1 - 1
ncl/std/pins.go

@@ -2,10 +2,10 @@ package std
 
 import (
 	"fmt"
+	"github.com/kpmy/trigo"
 	"github.com/kpmy/ypk/assert"
 	"github.com/kpmy/ypk/halt"
 	"sim3/ncl"
-	"sim3/tri"
 	"sync"
 )
 

+ 1 - 1
ncl/tool/x.go

@@ -1,13 +1,13 @@
 package tool
 
 import (
+	"github.com/kpmy/trigo"
 	"github.com/kpmy/ypk/assert"
 	"gopkg.in/yaml.v2"
 	"hash/fnv"
 	"reflect"
 	"sim3/ncl"
 	"sim3/ncl/std"
-	"sim3/tri"
 )
 
 type Import func(...interface{}) ncl.Element

+ 0 - 218
tri/tri.go

@@ -1,218 +0,0 @@
-package tri
-
-/* троичная логика */
-var TRUE Trit = Trit{N: false, T: true}
-var FALSE Trit = Trit{N: false, T: false}
-var NIL Trit = Trit{N: true, T: false}
-
-type Trit struct {
-	N bool
-	T bool
-}
-
-func (t Trit) String() string {
-	if t.N {
-		return "%nil"
-	} else if t.T {
-		return "%true"
-	} else {
-		return "%false"
-	}
-}
-
-func False(t Trit) bool {
-	return t == FALSE
-}
-
-func True(t Trit) bool {
-	return t == TRUE
-}
-
-func Nil(t Trit) bool {
-	return t == NIL
-}
-
-func Not(t Trit) Trit {
-	if t == TRUE {
-		return FALSE
-	} else if t == FALSE {
-		return TRUE
-	} else if t == NIL {
-		return NIL
-	}
-	panic(0)
-}
-
-func Impl(p, q Trit) Trit {
-	if False(p) && False(q) {
-		return TRUE
-	} else if False(p) && True(q) {
-		return TRUE
-	} else if True(p) && False(q) {
-		return FALSE
-	} else if True(p) && True(q) {
-		return TRUE
-	} else if True(p) && Nil(q) {
-		return NIL
-	} else if Nil(p) && False(q) {
-		return NIL
-	} else if False(p) && Nil(q) {
-		return TRUE
-	} else if Nil(p) && Nil(q) {
-		return TRUE
-	} else if Nil(p) && True(q) {
-		return TRUE
-	}
-	panic(0)
-}
-
-func CNot(t Trit) Trit {
-	if t == TRUE {
-		return FALSE
-	} else if t == FALSE {
-		return NIL
-	} else {
-		return TRUE
-	}
-}
-
-func Or(p, q Trit) Trit {
-	return Impl(Impl(p, q), q)
-}
-
-func And(p, q Trit) Trit {
-	return Not(Or(Not(p), Not(q)))
-}
-
-func Eq(p, q Trit) Trit {
-	return And(Impl(p, q), Impl(q, p))
-}
-
-func This(x int) Trit {
-	if x == 1 {
-		return TRUE
-	} else if x == 0 {
-		return NIL
-	} else if x == -1 {
-		return FALSE
-	}
-	panic(0)
-}
-
-func Ord(t Trit) int {
-	if t == FALSE {
-		return -1
-	} else if t == NIL {
-		return 0
-	} else if t == TRUE {
-		return 1
-	}
-	panic(0)
-}
-
-func Sum3(p, q Trit) Trit {
-	switch Ord(p) {
-	case -1:
-		return q
-	case 0:
-		if False(q) {
-			return NIL
-		} else if Nil(q) {
-			return TRUE
-		} else {
-			return FALSE
-		}
-	case 1:
-		if False(q) {
-			return TRUE
-		} else if Nil(q) {
-			return FALSE
-		} else {
-			return NIL
-		}
-	default:
-		panic(0)
-	}
-}
-
-func Sum3r(p, q Trit) Trit {
-	return CNot(CNot(Sum3(p, q)))
-}
-
-func CarryS(p, q Trit) Trit {
-	switch Ord(p) {
-	case -1:
-		return FALSE
-	case 0:
-		if True(q) {
-			return NIL
-		} else {
-			return FALSE
-		}
-	case 1:
-		if False(q) {
-			return FALSE
-		} else {
-			return NIL
-		}
-	default:
-		panic(0)
-	}
-}
-
-func CarrySr(p, q Trit) Trit {
-	if False(p) && False(q) {
-		return FALSE
-	} else if True(p) && True(q) {
-		return TRUE
-	} else {
-		return NIL
-	}
-}
-
-func Mul3(p, q Trit) Trit {
-	switch Ord(p) {
-	case -1:
-		return FALSE
-	case 0:
-		return q
-	case 1:
-		if False(q) {
-			return FALSE
-		} else if Nil(q) {
-			return TRUE
-		} else {
-			return NIL
-		}
-	default:
-		panic(0)
-	}
-}
-
-func CarryM(p, q Trit) Trit {
-	if True(p) && True(q) {
-		return NIL
-	} else {
-		return FALSE
-	}
-}
-
-func Mul3r(p, q Trit) Trit {
-	if Nil(p) && Nil(q) {
-		return NIL
-	} else {
-		if p == q {
-			return TRUE
-		} else {
-			return FALSE
-		}
-	}
-}
-
-func Webb(p, q Trit) Trit {
-	return CNot(Or(p, q))
-}
-
-func Mod(t Trit) Trit {
-	return Or(t, Not(t))
-}