Added lot of junk laying around on harvie.cz
[mirrors/Programs.git] / php / skripty / php_brainfuck.php
diff --git a/php/skripty/php_brainfuck.php b/php/skripty/php_brainfuck.php
new file mode 100644 (file)
index 0000000..8b24838
--- /dev/null
@@ -0,0 +1,28 @@
+<?php\r
+\r
+$code = "++++++++[>+++++++++<-]>.<+++++[>++++++<-]>-.+++++++..+++.<++++++++[>>++++<<-]>>.<<++++[>------<-]>.<++++[>++++++<-]>.+++.------.--------.>+.";\r
+\r
+$buffer = "";\r
+$pos = 0;\r
+$while = array(); // array($i, ...)\r
+for ($i=0; $i < strlen($code); $i++) {\r
+    switch ($code{$i}) {\r
+        case '>': $pos++; break;\r
+        case '<': $pos--; break;\r
+        case '+': $buffer{$pos} = chr(ord($buffer{$pos}) + 1); break;\r
+        case '-': $buffer{$pos} = chr(ord($buffer{$pos}) - 1); break;\r
+        case '.': echo $buffer{$pos}; break;\r
+        case ',': $buffer{$pos} = fgetc(STDIN); break;\r
+        case '[': if (ord($buffer{$pos})) $while[] = $i; else for ($depth=1; $depth; $i++) {\r
+            if ($code{$i+1} == '[') $depth++;\r
+            elseif ($code{$i+1} == ']') $depth--;\r
+        }\r
+        break;\r
+        case ']': $i = array_pop($while) - 1; break;\r
+        default: echo "Unrecognized character.\n"; exit(1);\r
+    }\r
+}\r
+\r
+echo("\n\n");\r
+\r
+?>\r
This page took 0.092424 seconds and 4 git commands to generate.