# [Brainfuck][1], Score = 93 (`]`). > Move the pointer to the right. < Move the pointer to the left. + Increment the memory cell at the pointer. - Decrement the memory cell at the pointer. . Output the character signified by the cell at the pointer. , Input a character and store it in the cell at the pointer. [ Jump past the matching ] if the cell at the pointer is 0. ] Jump back to the matching [ if the cell at the pointer is nonzero. I/O is not required for Turing completeness, so `.` and `,` are optional: a canonical Turing machine leaves its calculated answer on the tape. However, I believe all other commands are required, so the highest codepoint the language uses, `]`, *is* required. There are a number of trivially-similar languages. I'll cover these here as well, unless people feel they are genuinely worthy of separate answers. I have assumed for each language that their commands are case-sensitive unless otherwise stated. You only need one of the two BF instructions `-` and `+` for Turing completeness. And if the tape/memory is limited and wraps around, then we only require one of `<` and `>`, too. I've updated the below lists to take these into account. ## Identical to BF for our purposes: ### [ASCII art-][2], Score = 93 (`]`). ### [BFFB][3], Score = 93 (`]`) Requires code be a palindrome but uses the same characters as BF. ### [LolKek][4], Score = 93 (`]`). ### [Pi][5], Score = 93 (`]`). ### [ReverseFuck][6], Score = 93 (`]`). ### [RRF][7], Score = 93 (`]`). ### [BF-][8], Score = 93 (`]`). . ## [TrivialBrainfuckSubstitution][9]s: ### [???][10], Score = <strike>59 (`;`)</strike> 45 (`-`) Not quite a trivial substitution, but close enough. Omitted `?`, `;` and `.` as unnecessary for TC. ### [Alphuck!][11], Score = 115 (`s`). ### [And then][12], Score = 122 (`z` from required preamble). ### [Anguish][13], Score = <strike>98 (`U+2062`)</strike> 97 (`U+2061`). Omitted `U+2062` as unnecessary for TC. ### [ASCII art][14], Score = 124 (`|`). ### [Blub][15], Score = 117 (`u` from `Blub? Blub!`). ### [BrainFNORD][16], Score = <strike>115 (`s` in `eris`)</strike> 112 (`p` in `pineal`). Omitted `eris` and `fnord` as unnecessary for TC. ### [btjzxgquartfrqifjlv][17] , Score = 90 (`Z` of `ZXG`). ### [Colonoscopy][18], Score = 123 (`}` of `}}`). ### [Fluffle Puff][19], Score = <strike>116 (`t`)</strike> 115 (`s` of `*gasp*`). ### [FuckbeEs][20], Score = 115 (`s`). ### [Fuckfuck][21], Score = 116 (`t` of `b..t`). ### [GERMAN][22], Score = 85 (`U` of `ADDITION` or `SUBTRAKTION`). ### [Headsecks][23], Score = 7 (`U+07`). ### [Integral][24], Score = 120 (`x` of the polynomial expressions). ### [LMBC][25], Score = 125 (`}` of `n\n\\n\>\<" }*/ continue;`). ### [Morsefuck][26], Score = 46 (`.`). ### [Omam][27], Score = 46 (`y` of `this ship will carry`). ### [Oof][28], Score = 111 (`o` of `oooooof`). ### [Ook!][29], Score = 107 (`k` of `Ook? Ook!`). ### [oOo CODE][30], Score = 111 (`o` of `OOo`). ### [Pikalang][31], Score = 117 (`u` from `chu`). ### [POGAACK][32], Score = 112 (`p` from `poock?`). ### [PPAP++][33], Score = 86 (`V` from `I HAVE AN APPLE,` or `I HAVE PINEAPPLE,`). ### [Revolution 9][34], Score = <strike>121 (`y` from `if you become naked`) </strike> 118 (`v` from `Revolution 1`). ### [RISBF][35], Score = 47 (`/` of `/+`) ### [Roadrunner][36], Score = 112 (`p` from `MEEp`). ### [Ternary][37], Score = 50 (`2` from `02`). ### [There Once was a Fish Named Fred][38], Score = <strike>119 (`w` from `was`)</strike> 114 (`r` from `Fred`). ### [tinyBF][39], Score = 124 (`|`). ### [Unibrain][40], Score = 48 (`0`, needs at least 1 alphanumeric). ### [VerboseFuck][41], Score = 125 (`}` of `}; [... etc]`). ### [wepmlrio][42], Score = 119 (`w`). ### [Wordfuck][43], Score = 32 (` ` space) or 33 (`!`) depends if chars < 32 are considered words. ### [ZZZ][44], Score = 122 (`z` from `z-z`). . ## [Turing tarpits][45]: ### [Braincrash][46], Score = 33 (`!`). ### [Placement][47], Score = 63 (`?`). . ## Binary: ### [Binaryfuck][48], Score = 255 (`U+FF`) *or better???* ### [Brainfoctal][49], Score = 255 (`U+FF`) *or better???* ### [CompressedFuck][50], Score = 255 (`U+FF`) *or better???* ### [ShaFuck][51], Score = 255 (`U+FF`) *or better???* ### [Triplet][52], Score = 255 (`U+FF`) *or better???* ### [ZeroBF][53], Score = 255 (`U+FF`) *or better???* Now, arguably, the score could be 49 (`1`), or 1 (`U+01`), or 255 (`U+FF`), or whatever. I pick 255. These each replace the 8 BF command characters with their 3-bit binary equivalents, to give an octal number from 0 to 8. This converts the program to a binary stream of ones and zeroes, which can be represented as ASCII `1` and `0` characters, or as byte values, or as bit values, or as any base you like, hence the three possible scores. The reason for my score of 255 for the bit-values version of binary BF programs is that `]` typically maps to `111`, so three of them in a row gives you a byte of all 1s, or 255. It could be argued that you COULD write a Turing machine in these languages which never used three `]` commands in a row. So my score may be less generous than it need be. You can prove this, if you like! :D Until then, I'm scoring them 255. Well, in the case of ShaFuck, it's more complicated, but still... I don't have proof that it doesn't require a 0xFF byte somewhere, so I'm giving it a score of 255 until proven otherwise. ### [Golunar][54], Score = 59 (`9`) *or better???* So this is an interesting one. It takes a Unary program (well, any of the above "single character" solutions, and converts it to a decimal string. In this way it is much like the other "binary" options, except it's explicitly stated to be a decimal number, one presumes in ascii. That means that, if it could be proven that any program (or at least *a* Turing machine program) could be written in Unary that had a length that was describable without any 9s, the score would be able to drop, perhaps even as low as 49 (`1`). ## Replacement by sequences of a single character: ### [A][55], Score = 65 (`A`). ### [Ecstatic][56], Score = 33 (`!`). ### [Ellipsis][57], Score = 46 (`.`) or 38 (`U+2026` ellipsis). ### [Lenguage][58], Score = 0 (`U+00`). ### [MGIFOS][59], Score = 42 (`*`). ### [Unary][60], Score = 48 (`0`) or 0 (`U+00`). These are really just the binary options above, taken as a number that describes the length of a string made by repeating a single character. ## Other weird stuff: ### [BF-RLE][61], Score = 93 (`]`) to 247 (U+F7BFBFBF). Run-length encoded BF. There are various methods. Base-10 prefix or suffix methods, or indeed any standard base up to 36 gets the same score as regular BF (because `]` is above the uppercase range). Base 37 then typically uses the lowercase range, for a score of 97, and each additional base up to base 62 gets one worse. Bases above 62 need additional non-alphanumeric characters, but these can be selected from those below the lowercase range until those run out at base 114 (assuming 8 characters remain reserved for the BF code itself), and they then get worse by one for each base increase to base-128. After that point, UTF-8 can be used to slow the rise of the limit so that it never hits 255 for any base within the limit for UTF-8's ability to represent (some 4 million). ## I dunno: ### [K-on Fuck][62] ### [( ͡° ͜ʖ ͡°)fuck][63] These use extended characters I can't be arsed to look up. [1]: https://esolangs.org/wiki/Brainfuck [2]: https://esolangs.org/wiki/ASCII_art- [3]: https://esolangs.org/wiki/BFFB [4]: https://esolangs.org/wiki/LolKek [5]: https://esolangs.org/wiki/Pi [6]: https://esolangs.org/wiki/ReverseFuck [7]: https://esolangs.org/wiki/RRF [8]: https://esolangs.org/wiki/Brainfuck_minus_- [9]: https://esolangs.org/wiki/TrivialBrainfuckSubstitution [10]: https://esolangs.org/wiki/%3F%3F%3F [11]: https://esolangs.org/wiki/Alphuck [12]: https://esolangs.org/wiki/And_then [13]: http://blogs.perl.org/users/zoffix_znet/2016/05/anguish-invisible-programming-language-and-invisible-data-theft.html [14]: https://esolangs.org/wiki/ASCII_art [15]: https://esolangs.org/wiki/Blub [16]: https://esolangs.org/wiki/BrainFNORD [17]: https://esolangs.org/wiki/Btjzxgquartfrqifjlv [18]: https://esolangs.org/wiki/Colonoscopy [19]: https://esolangs.org/wiki/Fluffle_Puff [20]: https://esolangs.org/wiki/FuckbeEs [21]: https://esolangs.org/wiki/Fuckfuck [22]: https://esolangs.org/wiki/GERMAN [23]: https://esolangs.org/wiki/Headsecks [24]: https://esolangs.org/wiki/Integral [25]: https://esolangs.org/wiki/LMBC [26]: https://esolangs.org/wiki/Morsefuck [27]: https://esolangs.org/wiki/Omam [28]: https://esolangs.org/wiki/Oof [29]: https://esolangs.org/wiki/Ook! [30]: https://esolangs.org/wiki/OOo_CODE [31]: https://esolangs.org/wiki/Pikalang [32]: https://esolangs.org/wiki/POGAACK [33]: https://github.com/izumariu/ppap-bf [34]: https://esolangs.org/wiki/Revolution_9 [35]: https://esolangs.org/wiki/RISBF [36]: https://esolangs.org/wiki/Roadrunner [37]: https://esolangs.org/wiki/Ternary [38]: https://esolangs.org/wiki/There_Once_was_a_Fish_Named_Fred [39]: https://esolangs.org/wiki/TinyBF [40]: https://esolangs.org/wiki/Unibrain [41]: https://esolangs.org/wiki/VerboseFuck [42]: https://esolangs.org/wiki/Wepmlrio [43]: https://esolangs.org/wiki/Wordfuck [44]: https://esolangs.org/wiki/ZZZ [45]: https://esolangs.org/wiki/Turing_tarpit [46]: https://esolangs.org/wiki/Braincrash [47]: https://esolangs.org/wiki/Placement [48]: https://esolangs.org/wiki/Binaryfuck [49]: https://esolangs.org/wiki/Brainfoctal [50]: https://esolangs.org/wiki/CompressedFuck [51]: https://esolangs.org/wiki/ShaFuck [52]: https://esolangs.org/wiki/Triplet [53]: https://esolangs.org/wiki/ZeroBF [54]: https://esolangs.org/wiki/Golunar [55]: https://esolangs.org/wiki/A [56]: https://esolangs.org/wiki/Ecstatic [57]: https://esolangs.org/wiki/Ellipsis [58]: https://esolangs.org/wiki/Lenguage [59]: https://esolangs.org/wiki/MGIFOS [60]: https://esolangs.org/wiki/Unary [61]: https://esolangs.org/wiki/BF-RLE [62]: https://esolangs.org/wiki/K-on_Fuck [63]: https://esolangs.org/wiki/(_%CD%A1%C2%B0_%CD%9C%CA%96_%CD%A1%C2%B0)fuck