5-logic
Description
+-------+ Adjacent Opposite | | ! @% #$ | ! | @ #! $% | % @ | # $@ %! | $ # | $ %# !@ | | % !$ @# +-------+
A value can be:
- 5-value: one of ! @ # $ %
- List: list of zero or more values inside square brackets. For example: [![Zero@@][[]]{2_0_Take}]
- Variable name: Name of a variable, first letter uppercase rest lowercase (only letters).
- Program code: A program code with curly brackets. Use semicolons to separate commands. Example: {A=!;B=%;2AB}
Commands:
- value - Return this value from this function
- var=value - Set a value of a variable
- \name - External system function
- /*comment*/ - Comment
- -var - Makes a new variable local to this block of program code and sub-calls
- --var - Same as above but initial value is argument of this function-call.
- value:code - For each element in list(value), execute code, element is argument, return value exits loop and returns from parent code. (Error if value is not a list or the name of a variable containing a list)
- ?value - Return this value from the function if previous line changed a value of a variable to a 5-value adjacent to its previous value. (Error if either value isn't a 5-value. Even error if new or old value is a variable name.)
Operators:
- 2xy - 2-logic on values. 2-logic on adjacent values = common opposite value. 2-logic on opposite values = common adjacent value. 2-logic on 2 same values = value.
- 3xyz - 3-logic on values. 3-logic on xyz = (x if x=2yz, y if y=2xz, z if z=2xy). 3-logic on xxy = y. 3-logic on xxx = x.
- `xy - Apply function x to argument y.
- +xy - Concatenate 2 lists.
- ^x - Include contents of a list inline. Example: 2^[!%] --> 2!% --> # and [!2^[###]!] --> [!2###!] --> [!##!]
- 0 - Uses argument of this function.
- 1 - Uses argument of parent function.
When evaluating parameters to 2 or 3, convert variable names to their values. If one or more parameters is a list, they must all be of the same length, then iterates through list in order using non-lists as well. For example: 2[ab]c = 2[ab][cc] and 3[[!@]$][%[$]]% --> [[3!%%3@%%][3$$%]] --> [[!@][%]] (If variables are undefined or lists of not matching size, or are program codes, then is error.)
For ^ and + commands, variable names are converted to values of variabled. Errors if 5-value or program-codes or undefined variabled.
For ` command, the function x is converted to its value if is a variable name. If x is a 5-value or a list or undefined variable, then is error.
Examples
If you want to use binary functions, and you use !=1 and @=0 then you can do:
NOT x = 22x$$ x XOR y = 3xy@ x AND y = 2!`{320$20@0}2$2xy x OR y = 2@`{320$20!0}2$2xy
For example:
Not={220$$}; A=`NotB;