
Untitled
By: a guest on
Sep 19th, 2015 | syntax:
C | size: 1.76 KB | views:
61 | expires: Never
#include <stdio.h>
#include <string.h>
int main(int argc, char *argv[])
{
char code[10000];
if(argc == 1) {
strcpy(code, "++++++++[>++++[>++>+++>+++>+<<<<-]>+>+>->>+[<]<-]>>.>---.+++++++..+++.>>.<-.<.+++.------.--------.>>+.>++."); /*write your code here if it's too much of a pain in the CLI*/
}
else if(argc != 2) {
printf("%s: Write your code all at once, without spaces.\n", argv[1]);
return 1;
}
else {
strcpy(code, argv[1]);
}
int ptr = 0;
int array[30000];
int i = 0;
int jumps = 0;
while(code[i] != '\0') {
char letter = code[i];
switch(letter) {
case '>':
ptr++;
break;
case '<':
ptr--;
break;
case '+':
array[ptr]++;
break;
case '-':
array[ptr]--;
break;
case '[':
if(array[ptr] == 0) {
jumps = 0;
for(int x = i+1; code[x] != '\0'; x++) {
if(code[x] == '[') {
jumps++;
}
if(code[x] == ']') {
if(jumps == 0) {
i = x;
break;
}
else {
jumps--;
}
}
}
}
break;
case ']':
if(array[ptr] != 0) {
jumps = 0;
/*printf("in");*/
for(int x = i-1; code[x] != '\0'; x--) {
/*printf("%c",argv[1][x]);*/
if(code[x] == ']') {
jumps++;
}
if(code[x] == '[') {
if(jumps == 0) {
i = x;
/*printf("%d, %d",i,x);*/
break;
}
else {
jumps--;
}
}
}
/*printf("out");*/
}
break;
case '.':
printf("%d",array[ptr]);
break;
case ',':
printf("NOT ACCEPTING INPUT FOR NOW. F U.\n");
return 1;
break;
default:
printf("Invalid code.\n");
return 1;
}
i++;
}
}