fork download
  1. import sys
  2.  
  3. command = {
  4. '.': 'putchar(*ptr);',
  5. ',': '*ptr=getchar();',
  6. '[': 'while (*ptr) {',
  7. ']': '}'
  8. }
  9.  
  10. repeatable = {
  11. '>': 'ptr += {};',
  12. '<': 'ptr -= {};',
  13. '+': '*ptr += {};',
  14. '-': '*ptr -= {};'
  15. }
  16.  
  17. print('#include <stdio.h>')
  18. print('\nchar array[30000];')
  19. print('\nint main() {')
  20. print('\tchar *ptr=array;')
  21.  
  22. op, cnt = None, 0
  23. indent = 1
  24. for c in sys.stdin.read():
  25. if c in repeatable.keys():
  26. if op is not None and op != c:
  27. print('\t'*indent, repeatable[op].format(cnt), sep='')
  28. op, cnt = c, 1
  29. else:
  30. op, cnt = c, cnt+1
  31. elif c in command.keys():
  32. if op is not None:
  33. print('\t'*indent, repeatable[op].format(cnt), sep='')
  34. op, cnt = None, 0
  35. if c == ']':
  36. indent -= 1
  37. print('\t'*indent, command[c], sep='')
  38. if c == '[':
  39. indent += 1
  40. if op is not None:
  41. print('\t'*indent, repeatable[op].format(cnt), sep='')
  42.  
  43. print('}')
Success #stdin #stdout 0.02s 9232KB
stdin
++++++++[>++++[>++>+++>+++>+<<<<-]>+>+>->>+[<]<-]>>.>---.+++++++..+++.>>.<-.<.+++.------.--------.>>+.>++.
stdout
#include <stdio.h>

char array[30000];

int main() {
	char *ptr=array;
	*ptr += 8;
	while (*ptr) {
		ptr += 1;
		*ptr += 4;
		while (*ptr) {
			ptr += 1;
			*ptr += 2;
			ptr += 1;
			*ptr += 3;
			ptr += 1;
			*ptr += 3;
			ptr += 1;
			*ptr += 1;
			ptr -= 4;
			*ptr -= 1;
		}
		ptr += 1;
		*ptr += 1;
		ptr += 1;
		*ptr += 1;
		ptr += 1;
		*ptr -= 1;
		ptr += 2;
		*ptr += 1;
		while (*ptr) {
			ptr -= 1;
		}
		ptr -= 1;
		*ptr -= 1;
	}
	ptr += 2;
	putchar(*ptr);
	ptr += 1;
	*ptr -= 3;
	putchar(*ptr);
	*ptr += 7;
	putchar(*ptr);
	putchar(*ptr);
	*ptr += 3;
	putchar(*ptr);
	ptr += 2;
	putchar(*ptr);
	ptr -= 1;
	*ptr -= 1;
	putchar(*ptr);
	ptr -= 1;
	putchar(*ptr);
	*ptr += 3;
	putchar(*ptr);
	*ptr -= 6;
	putchar(*ptr);
	*ptr -= 8;
	putchar(*ptr);
	ptr += 2;
	*ptr += 1;
	putchar(*ptr);
	ptr += 1;
	*ptr += 2;
	putchar(*ptr);
}