IDlang

From Esolang
Jump to navigation Jump to search

IDlang is language derived from BF.

Commands

Command Meaning
+ increment current cell
- decrement current cell
> move pointer to the right
< move pointer to the left
. output cell as number.(why you need outputing cells as characters?)
, input number and store it in current cell
! skip every instruction until next ! if 0
? skip every instruction until next ? if 0
^ jump to start of program if cell not 0

IDmini

IDmini is minimazisation of IDlang

Step 1. Combining input and output(8 instructions)

+-<>;!?^

; is , when 0 and . otherwise

Step 2. Combining > and +(7 instructions)

}-<;!?^

} is >+ in previous step

Step 3. - deleted(6 instructions)

}<;!?^

You don't need - when cell is 8 bits

Step 4. Combining } and !(5 instructions)

<;)?^

) is }!

Step 5. Deleting ?(4 instructions)

<;)^

) will now skip next instruction if 0, so ? is unnesesary

Step 6. Deleting ^(3 instructions)

<;)

After executing program will be run command ^ So command list is:

< move pointer to the left
; if cell is 0 input, else output
) move pointer to the right, increment cell and if it is more than 255 set to 0. Skip next instruction if 0
end of the program if cell is not 0 back to start of program

BITlang

BITlang is another minimisation of IDlang.

Step 1. make cells 1-bit long(8 instructions)

*<>.,!?^

No explanation needed.

Step 2. memory-mapped IO(7 instructions)

*<>;!?^

if cell is not zero input number and store it in next 8 cells. If cell is zero output next 8 bits.

Step 3. Make ! skip next command(6 instructions)

*<>;!^

! is now skip only next command, so ? is not necessary

Step 4. Combine * and >(5 instructions)

<>;!^

> is *> in previous step

Step 5. Combine < and !(4 instructions)

>;{^

{ is a <! in previous step

Step 6. Combine { and ^(3 instructions)

>;]

] is interpretetated as ^ if there isn't another ] after. Otherwise it is interpreted as {.

Translation from 1-bit IDlang

From 1-bit IDLang to BITlang:

1-bit IDlang BITlang
> >]] >
< ]] followed by space
* >]] followed by space
! and ? >]] >]] after every command
^ ]

From BITlang to 1-bit IDlang:

BITlang 1-bit IDlang
> *>
] ^ if there isn't another ] after it. If there is, then <!