We are currently working on new rules for what content should and shouldn't be allowed on this website, and are looking for feedback! See Esolang:2026 topicality proposal to view and give feedback on the current draft.

Bitwise Cyclic Teap

From Esolang
(Redirected from BCTp)
Jump to navigation Jump to search

Bitwise Cyclic Teap (BCTp) is an esolang invented by User:None1, it is a derivative of BCT where data is stored in a heap (a.k.a: priority queue) instead of a queue.

Commands

Command Execution
0 Delete the smallest data-bit.
1 Goto the next command (say x). If the smallest data-bit is 1, insert x into the data-heap.

Example

Code: 00111
Data-string: 101
IP: 0    Data-heap: 011
IP: 1    Data-heap: 11
IP: 2    Data-heap: 1
IP: 4    Data-heap: 11
IP: 1    Data-heap: 011
IP: 2    Data-heap: 11
IP: 4    Data-heap: 111
IP: 1    Data-heap: 0111
IP: 2    Data-heap: 111
IP: 4    Data-heap: 1111
IP: 1    Data-heap: 01111
IP: 2    Data-heap: 1111

Interpreter

Python

from time import sleep
from heapq import *


class CyclicList(list):
    def __getitem__(self, x):
        return super().__getitem__(x % self.__len__())


code = CyclicList(map(int, input("Code: ")))
data = list(map(int, input("Data-string: ")))
heapify(data)
ip = 0
while 1:
    print(f'IP: {ip%len(code)}\t Data-heap: {"".join(map(str,sorted(data)))}')
    if not code or not data:
        print("Halt!")
        break
    op = code[ip]
    if op:
        if data[0]:
            heappush(data,code[ip+1])
        ip += 2
    else:
        heappop(data)
        ip += 1
    sleep(0.2)

Computational class

Unknown, but probably very limited.

See also