Merge pull request #77 from TitouanT/bf_new_executor
Fixes the brainfuck executor
This commit is contained in:
commit
0c4c6e7ad5
|
@ -1,4 +1,33 @@
|
|||
#!/bin/bash
|
||||
|
||||
cd /tmp/$1
|
||||
timeout -s KILL 3 xargs -a args.args -d '\n' brainfuck code.code < stdin.stdin
|
||||
sedarg="\
|
||||
s/+/P/g;\
|
||||
s/-/M/g;\
|
||||
s/>/++p;/g;\
|
||||
s/</--p;/g;\
|
||||
s/P/++*p;/g;\
|
||||
s/M/--*p;/g;\
|
||||
s/\\./putchar(*p);/g;\
|
||||
s/,/*p=(c=getchar())==EOF?0:c;/g;\
|
||||
s/\\[/while(*p){/g;\
|
||||
s/]/}/g\
|
||||
"
|
||||
|
||||
# compilation
|
||||
MEMSIZE=15
|
||||
cat <<EOF > code.c
|
||||
#include <stdio.h>
|
||||
|
||||
char mem[1<<$MEMSIZE];
|
||||
char *p = mem + (1<<$((MEMSIZE - 1)));
|
||||
int c;
|
||||
|
||||
int main() {
|
||||
$(timeout -s KILL 3 sed 's/[^][<>.,+-]//g' code.code | timeout -s KILL 3 sed $sedarg)
|
||||
}
|
||||
EOF
|
||||
timeout -s KILL 3 gcc -std=c11 -o binary code.c
|
||||
|
||||
# execution
|
||||
timeout -s KILL 3 ./binary < args.args < stdin.stdin
|
||||
|
|
Loading…
Reference in New Issue