# Talk:Tubes

## Turing completeness

I want to point out that Wolfram's 2 3 machine is not really suitable for proving most esolangs Turing complete, as the proof of its universality requires an infinite setup - it is not Turing complete in the usual sense for a TM. You might wish to implement some other Turing machine or Turing complete system with only finite setup required. --Ørjan 23:52, 11 June 2010 (UTC)

theoretical idea: if one would implement a time slicing thingy wich sets up an endless computable input on the tape whenever the head of the TM ecceds the area it has vistited before. This could simulate an endless input. (but it would be a computtation out of the TM. but to proofe a lnguega Turing complete it would be enough wouldn't it?)131.234.240.105 13:21, 15 June 2010 (UTC)
Probably. There is also the problem that the 2 3 machine has no specific halting state, so I believe you also need to do a complicated check for when the computation has finished. --Ørjan 14:07, 15 June 2010 (UTC)
Actually, Alex Smith just told me that with the latest version of his proof, halt checking for the 2,3 machine is just checking if you go off the left end of the tape. --Ørjan 16:00, 15 June 2010 (UTC)

Yaeh i'f been thinking about that, too. but most other turing complete systems are need a huge effort. the implementation of Wolframs 23 is just an example. I'll edit the article too clrea this.

If I would understand cyclic tag systems I would try to implement this, could be more easy. But before implementig this I'd need to understand it ^^ User:Rm minusrf slash

Yeah I've had success with Bitwise Cyclic Tag myself (see ///), it's pretty much the simplest TC model we have on the wiki I think, so it's a good choice unless some other model fits your language more directly. --Ørjan 23:33, 12 June 2010 (UTC)

would it be enought to show hwo to implement evry less-than-4-symbol single taped turning machine to show that tubes is turing complete? i would not have to implement it if I can show how to do it but not do it.

I think thats easyer than BTC --(this comment by 131.234.240.105 at 19:58, 13 June 2010 UTC; please sign your comments with ~~~~)

Certainly, even 2 symbols are enough, but note that this says nothing about the number of states. If you use Minsky's TM it has 4 symbols and 7 states, or it can be recoded with 2 symbols and 43 states. (According to Wikipedia, whose article on Universal Turing Machines contained an obvious error that I just edited - I'm not sure if the rest is correct. Wolfram's later improvements all (according to the main Turing Machine article) have the infinite setup problem I mentioned.)

I am very dubious that this really is simpler than BCT, however. --Ørjan 22:56, 13 June 2010 (UTC)

i think in tubes its way easyer beacuse the for BTC one would have to save the position of the first bit and the position of the last bit. And somewhere else the insturctions. but A TM can be directly implemented by haveing a single lien in the data be the tape of the tm and the sates are jsut switch constructs followed by instructions and paths leading to the next state. To get from one state to another i jsut move the data pointer upwards, so one can "fuse" the paths. And an intersection is easy, too.

anyway I am done with 5 of 7 states of minskys UTM. I'll be done till the end of the week ^^ (forgot to login rf minusrf slash)131.234.240.105 17:44, 15 June 2010 (UTC)

at the moment i am implementing (with focus in readable code) the rules i read from this picture: http://mathworld.wolfram.com/images/eps-gif/UniversalTuringMachine7-4Rules_900.gif on http://mathworld.wolfram.com/UniversalTuringMachine.html but I am not sure if i read th rules right. (thats the only diagram of minskys 4-7 i found on the internet..) this is the diagram I use to implement it:

```read|write|move|state
s1                   s5
0   |1    |-   |5    0   |2   |-   |6
1   |3    |-   |2    1   |1   |-   |5
2   |0    |+   |1    2   |0   |-   |5
3   |1    |+   |1    3   |halting state
s2                   s6
0   |2    |-   |2    0   |2   |-   |6
1   |3    |-   |2    1   |1   |-   |6
2   |0    |+   |1    2   |2   |-   |7
3   |3    |-   |2    3   |1   |+   |3
s3                   s7
0   |2    |+   |3    0   |3   |+   |1
1   |1    |+   |3    1   |3   |+   |7
2   |0    |+   |3    2   |2   |+   |7
3   |1    |-   |5    3   |1   |+   |4
s4
0   |2    |+   |4
1   |1    |+   |4
2   |0    |+   |4
3   |0    |-   |5
```

I hope this is correct Rm minusrf slash 22:24, 14 June 2010 (UTC)

What a confusing picture - using a 4 rows by 7 columns grid for a machine with 4 symbols and 7 states, but not with rows corresponding to symbols and columns to states! However, I tried decoding it and I get the same table as you do. --Ørjan 04:31, 16 June 2010 (UTC)
thanks for checking^^ I'm glad you got the same table as me Rm minusrf slash 09:26, 16 June 2010 (UTC)

I'm done! here is how my comented design looks like. I hope its free of bugs ^^

```This should be minskys 4 7 UTM implemented in tubes
┌───────────────┐
│          ┌──┬┬┘
├╖┌───◉◉─═─╜  ◉│
│││r2 w0 m+ s1◉└─────┐
│││r0 w1 m- s5◉      │
│└┼┬──◉───┐┌◉◉◉┐  ┌─┬┘
└┐││     ┌╛│  │└──◉┐│
▶┘││     └─╜  └┐  ◉││
s1││r3 w1 m+ s1│  ◉││
│└───◉◉──═───╜  ◉││
│      ┌─┐m-┌───┘││
│r1 w3 ╙╕│  │    ││
└───◉◉──┘│  ◉    ││
┌──────────┘s2◉    ││
│┌─────────◉◉◉◉───┐││
└┤ r2 w0 m+ s1◉   │││
└╖┌──◉◉──═───╜   │││
││         ┌───┬┘││
││ r0 w2 m-╙╕s2│ ││
s2└┼┬───◉◉────┘  │ ││
││        ┌──┬┘ ││
││r3 w3 m-╙╕ │  ││
│└─────────┘ │  ││
│        ┌───┘  ││
│r1 w3 m-╙╕     ││
└───◉◉────┘     ││
┌────────────────┐ ││
│r2 w0 m+ s3  ┌─┬┘ ││
│┌──◉◉──═─────╜ │  ││
║│r0 w2 m+ s3┌─┬┘  │└─┐
└┼┬──◉◉──═───╜ ◉┌──┴─┐│
s││r3 w1 m- s5 ◉╙╕   ││
3│└────────────◉◉┘   ││
│r1 w1 m+s3┌┬◉┘     ││
└──────═───╜└────┐  ││
┌────────────────┐│  ││
│r2 w0 m+ s4  ┌─┬┘│  ││
│┌──◉◉──═─────╜ │ │  ││
║│r0 w2 m+ s4┌─┬┘ │  │└┐
└┼┬──◉◉──═───╜ ◉┌◉◉◉◉┴┐│
s││r3 w0 m- s5 ◉╙╕│   │└┐
4│└────────────◉─┘└───◉┐│
│r1 w1 m+s4┌┬◉┘┌─────┘││
└───────═──╜│  │┌─────┘│
┌─────────┐ ┌◉──┘│ ┌────┘
│r2 w0┌──┬┘ │◉┌──┘ │
│m- s5╙╕ ◉  │└◉─┐┌─┘
│┌──◉◉─┘ ◉  │ │ ││
││r0 w2┌─◉◉─◉┐│ ││
║│m- s6╙╕└◉┐◉││ ││
└┼┬──◉◉─┘┌┬┘│││ ││
s││r3 end│└─┘││ ││
5│└▷┌────┘   ││ ││
│r1╙╕w1m-   ││ ││
└───┘ s5    ││ ││
┌──────◉◉◉┐  ││ ││
│r2 w2┌◉──◉──◉◉┐││
│m- s7╙╕┌┬┘  │││││
│┌─────┘│└─┐ │││││
││r0 w2┌┘┌┬┘ │││││
║│m- s6╙╕◉└──┘││││
└┼┬◉◉───┘◉ s3 ││││
s││r3 w1 ◉ m+ ││││
6│└◉─────◉─═──╜│││
│r1 w1┌─┘┌──┐ │││
│m- s6╙╕ │┌┬┘ │││
└──────┘ ││└──┘││
┌─────────┘└──┐ ││
│r2 w2 m+ s7┌┬┘ ││
│┌──────═───╜◉  ││
║│r0w3m+s1┌◉─◉◉─◉┘
└┼┬◉◉◉─═──╜┌◉◉◉─┘
s││r3w1m+s4◉ ◉
7│└◉◉───═──╜ │
│r1w3m+s7   │
└◉◉───═─────╜
```

## Problem with symbols

To me, the operator symbols appear as squares to me. They might need to be changed! --(this comment by Iconmaster at 17:32, 14 June 2010 UTC; please sign your comments with ~~~~)

The language is designed to look cool B-) If you got any suggestions wich signes look cool and are in your font, feel free to mention. To code I use Free mono. Its a monospaced font and free (as the names suggests) Rm minusrf slash 22:19, 14 June 2010 (UTC)

The symbols look "fine" to me. (The addition symbol ◉ is a bit cramped, and the line drawing characters could have lined up better, but the flow is quite understandable.) The wiki obviously uses Unicode, so it's everyone's own responsibility to have enough fonts to show the requisite characters (My impression is that Unicode is so huge that no one has everything, anyway :D). Since the language is clearly intended to use special symbols I think it may be hard to please everyone with every setup. Of course in another case it might be me who is bitching about missing characters. :) --Ørjan 00:54, 15 June 2010 (UTC)

On firefox it might hlelp to change the encoding to Unicode In my version it is View->Character encoding_->Unicode (Utf8) Rm minusrf slash 13:01, 16 June 2010 (UTC)

I sincerely doubt this, the wiki pages should already be saying which encoding they are, and the browser should automatically detect it. Iconmaster's problem (showing squares instead of the real characters) almost certainly isn't because he doesn't have Unicode (everyone with a modern GUI web browser does), but that his installed fonts don't contain all characters in the whole Unicode set. Also I have removed your added warning because that too is automatically converted by the wiki into Unicode (UTF-8) - when I explicitly force my browser to interpret the page as the single byte encoding Latin-1 rather than UTF-8, the original text shows up like your warning normally does, but the warning itself doesn't (instead it gets doubly UTF-8 encoded), making the warning meaningless for anyone who would actually have that problem. As far as I know, you cannot actually use anything other than UTF-8 on these wiki pages. --Ørjan 13:52, 16 June 2010 (UTC)

## Boxdrawing symols

```I just stared working on this projekt again. while Teesting I realised that there's a codec having the boxdraing symbols as single byte chars. and having al chars in the source been single byte would realy make things easier for me. But i don't realy know what codec it is... i think its something like Extendeed ASCII. but I don't know if  this codec is supported rather often.
.
if that codec is to rare, it would be bad to use.
.
anyway here how i disocvered that codec:
I was playing around and trying to read a UTF-8 formated .txt file with a testing C progam. and then i ran that program via cmd.exe (windows XP SP3). And in the Output i   saw the boxdrawing symbols I needed, BUT they had to be sngle byte chars in the codec used.
.
here is the C prrog I used for testing:
.
#include<stdio.h>
int main(){
FILE *ifile;
char cechotemp=0;
while (cechotemp!=EOF){
cechotemp=fgetc(ifile);
printf("%c",cechotemp);
}
fclose(ifile);
}
.
and here is the content of the file:
.
testing utf-8 format, for beein echoed by mylittle c prog.
here some multibyte chars: üöäß€µ
I'd love to send you the output, too, but i'm unable to c&p from cmd.exe
.
yours stfu&thnk (forgot me pasword, and dislikd the old name, got me a new acount)
```
Maybe you mean code page 437 or one of its variants? --Javamannen 23:12, 16 December 2010 (UTC)

## oncoming changes

Hi! I will change the language a little as I realised some things:

1. There can be up to 6 states in memory.

2. If there are 6 states in memory I will add a substraction operator as it would take five times the plus operator and thus taking way too much space.

3. I'll ad an Operator for linecrossing.

yours Stfu&thnk 12:57, 19 December 2010 (UTC)

## Boolfuck Translation

```Start | ▶
| ┌◉◉◉┐
+     | ┴─◉┐│┌
|    ║║║
|    └┴┘
.     | ◇
;     | ◆
<     |   ┐┌
| ┌═┘│
| └──┘
>     | ═
|  a  ┌┐
[     | ┐│  ║└
| ║║┌┬┘
| └┴┘b
| a┌┐
]     | ┴┘║┌
|   ├┘
|   ║
|   b
End   | ▷
```

Note that matching brackets have to have (a) and (b) connect. Example: +[.;] (Print 1 until input = 0)

```  ┌──────┐
│  ┌┐  │┌┐
▶┐│  ║└◇◆┴┘║┌▷
║║┌┬┘     ├┘
└┴┘│      ║
└──────┘
```

Tetrapyronia (talk) 03:27, 3 November 2020 (UTC) (p.s. Lucida Console is an actual monospace font that works with Tubes programs)