Execute Brain****/D: Difference between revisions
Content added Content deleted
(Version 3 D updated) |
(Updated third D entry) |
||
Line 177: | Line 177: | ||
===Version 3=== |
===Version 3=== |
||
Faster |
Faster version, code generated at compile-time, run at run-time: |
||
⚫ | |||
⚫ | |||
⚫ | |||
string r; |
string r; |
||
foreach (c; code) |
foreach (immutable c; code) |
||
switch (c) { |
switch (c) { |
||
case '>': r ~= "i++; assert(i < m.length);"; break; |
case '>': r ~= "i++; assert(i < m.length);"; break; |
||
Line 190: | Line 188: | ||
case '[': r ~= "while (m[i]) {"; break; |
case '[': r ~= "while (m[i]) {"; break; |
||
case ']': r ~= "}"; break; |
case ']': r ~= "}"; break; |
||
case '.': r ~= " |
case '.': r ~= "m[i].putchar;"; break; |
||
case ',': r ~= "{ int d = getchar |
case ',': r ~= "{ int d = getchar; |
||
if (d == EOF) exit(1); |
if (d == EOF) exit(1); |
||
m[i] = cast(char)d; }"; break; |
m[i] = cast(char)d; }"; break; |
||
Line 200: | Line 198: | ||
void main() { |
void main() { |
||
⚫ | |||
char[30_000] m = '\0'; |
char[30_000] m = '\0'; |
||
size_t i; |
size_t i; |