# Teg

Teg is an esolang based on strings invented by User:A. It has condensability as well as minimalism and legibility in mind. Normally, it is used to code golf, but it might be used in other circumstances. (By the way, it is a Text derivative.) What differs between this and other esolangs is:

• Alphanumerical characters are automatically printed (including quotation marks)
• There are readable and straightforward `if` statements, `for` and `while` loops(at least better than Keg)
• A few commands should be remembered
• And so on...

## Simple documentation

```[]:evaluate operator. Note that this prevents a block of Teg code to be printed.

a?b:c:If a is not 0, return b. Otherwise, return c.
a?b:If a is not 0, return b.

f(i:end){block}:For loop. Sequentially set i into values from 0 to end while executing block. For example: if end is 5, i will be set to 0, 1, 2, 3, 4, and 5.
f(i:begin,end){block}:Also a for loop. Like the one above, sets i into values from begin to end.
f(i:begin,end,step){block}:Yet another variation of the for loop. Sets i into values from begin to end with a step. For example: if begin=0 and end=8 and step=2, i will be set to 0, 2, 4, 6, and 8. Another example: if begin=8 and end=0 and step=-2, i will be set to 8, 6, 4, 2, and 0.

=: define a variable(or possibly a macro).

==: check if equal

!=: check if not equal

>: greater than

<: less than

>=: greater than or equal

<=: less than or equal

!: bitwise NOT

&: bitwise AND

|: bitwise OR

-: subtract

*: multiply

/: divide

%: find the remainder

^: to the power of

:x:: input a variable(macro?) x

`x`: switch between integer and character variables
```

## Examples

### 99 bottles of beer

This non-cheating version is a lot shorter than the cheating version of Keg.

```b= bottle[i!=1?s] of beer
f(i:99,1){[i][b] on the wall,
[i][b].
Take one down, pass it around,
i?[i-1]:no more[b] on the wall.}
```

### Hello, world!

```Hello, World!
```

```Q
```

### Cat program

`w(1){:q:[q]}`

### FizzBuzz program

```f(i:z){!i%3?!i%5?FizzBuzz:Fizz:!i%5?Buzz:[i]
}
```

### Fibonacci sequence

```a=1;b=1;w(1){[a] a=a+b;t=a;a=b;b=t}
```

```c(i);w(1){>>:i:i=="d"?[a=a-1]:i=="i"?[a=a+1]:i=="o"?[a]:i=="s"?[a=a*a]}
```:c:f(i:c,1){a=a*i}[a]
```:c:c?w(1){1}:0