User:Tommyaweosme/2 bits 1 byte

From Esolang
Jump to navigation Jump to search
<h1>2 Bits, 1 Byte Intrepreter</h1>
<p>Please enter your byte.</p>
<p>Output: <text id="output"></text></p>
<input id="code">
<button onclick="document.getElementById('output').innerHTML=run()">Submit</button>
<script>
    function run(){
        const code = [];
        const source = document.getElementById("code").value;
        code.push(source[0] + source[1]);
        code.push(source[2] + source[3]);
        code.push(source[4] + source[5]);
        code.push(source[6] + source[7]);
        let n = 0;
        let turns = 0;
        let inc = 1;
        while (1){
            turns = turns + 1
            inc = 1
            if (turns > 25){
                return("Infinite loop detected.");
            };
            if (n == 4){
                return "";
            };
            if (code[n] == 11){
                return code.join("");
            };
            if (code[n] == 01){
                code[toaddress(code[n+1])] = act(code[toaddress(code[n+1])]);
                inc = 2;
            };
            if (code[n] == 10){
                n = toaddress(code[n+1])-1;
            };
            n = n + inc
        };
    };
    function act(x){
        if (x == 00){
            return 11;
        };
        if (x == 01){
            return 10;
        };
        if (x == 10){
            return 00;
        };
        if (x = 11){
            return 01;
        };
    };
    function toaddress(x){
        if (x == 00){
            return 0;
        };
        if (x == 01){
            return 1;
        };
        if (x == 10){
            return 2;
        };
        if (x == 11){
            return 3;
        };
    };
</script>