Merge branch 'master' of ssh://github.com/engineer-man/piston
This commit is contained in:
commit
f358b58cb6
|
@ -199,6 +199,13 @@
|
||||||
"php5"
|
"php5"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"name": "prolog",
|
||||||
|
"aliases": [
|
||||||
|
"prolog",
|
||||||
|
"plg"
|
||||||
|
]
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"name": "python3",
|
"name": "python3",
|
||||||
"aliases": [
|
"aliases": [
|
||||||
|
|
|
@ -283,6 +283,22 @@ MIX_ENV=prod mix escript.build --force
|
||||||
echo 'export PATH=$PATH:/opt/05AB1E/05AB1E' >> /opt/.profile
|
echo 'export PATH=$PATH:/opt/05AB1E/05AB1E' >> /opt/.profile
|
||||||
source /opt/.profile
|
source /opt/.profile
|
||||||
|
|
||||||
|
|
||||||
|
# install prolog
|
||||||
|
# final binary: /opt/swipl/swipl-<version>/build/src/swipl
|
||||||
|
cd /opt && mkdir swipl && cd swipl
|
||||||
|
SUB_DIR=swipl-8.2.4
|
||||||
|
wget https://www.swi-prolog.org/download/stable/src/$SUB_DIR.tar.gz
|
||||||
|
tar -xf $SUB_DIR.tar.gz
|
||||||
|
rm $SUB_DIR.tar.gz
|
||||||
|
cd $SUB_DIR
|
||||||
|
mkdir build
|
||||||
|
cd build
|
||||||
|
cmake -DSWIPL_PACKAGES_JAVA=OFF -DSWIPL_PACKAGES_X=OFF -DMULTI_THREADED=OFF -G Ninja ..
|
||||||
|
ninja
|
||||||
|
echo "export PATH=\$PATH:/opt/swipl/$SUB_DIR/build/src" >> /opt/.profile
|
||||||
|
source /opt/.profile
|
||||||
|
|
||||||
# create runnable users and apply limits
|
# create runnable users and apply limits
|
||||||
for i in {1..150}; do
|
for i in {1..150}; do
|
||||||
useradd -M runner$i
|
useradd -M runner$i
|
||||||
|
|
|
@ -1,4 +1,36 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
cd /tmp/$1
|
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
|
||||||
|
|
||||||
|
# Merging args.args and stdin.stdin for emkc challenges
|
||||||
|
cat stdin.stdin >> args.args
|
||||||
|
|
||||||
|
# execution
|
||||||
|
timeout -s KILL 3 ./binary < args.args
|
||||||
|
|
|
@ -0,0 +1,9 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
cd /tmp/$1
|
||||||
|
|
||||||
|
sed 's/^.*$/:- forall((Goal = (\0), call(Goal)), (write(Goal), nl))./' input.input |
|
||||||
|
cat code.code - > code.pl
|
||||||
|
|
||||||
|
timeout -s KILL 3 swipl -g true -t halt code.pl
|
||||||
|
|
|
@ -2,5 +2,5 @@
|
||||||
|
|
||||||
cd /tmp/$1
|
cd /tmp/$1
|
||||||
cp code.code main.zig
|
cp code.code main.zig
|
||||||
timeout -s KILL 10 zig build-exe main.zig
|
timeout -s KILL 10 zig build-exe main.zig && \
|
||||||
timeout -s KILL 3 xargs -a args.args -d '\n' ./main
|
timeout -s KILL 3 xargs -a args.args -d '\n' ./main
|
||||||
|
|
|
@ -52,6 +52,8 @@ echo -n 'testing perl = '
|
||||||
../../cli/execute perl perl.pl
|
../../cli/execute perl perl.pl
|
||||||
echo -n 'testing php = '
|
echo -n 'testing php = '
|
||||||
../../cli/execute php php.php
|
../../cli/execute php php.php
|
||||||
|
echo -n 'testing prolog = '
|
||||||
|
../../cli/execute prolog prolog.pl
|
||||||
echo -n 'testing python2 = '
|
echo -n 'testing python2 = '
|
||||||
../../cli/execute python2 python2.py
|
../../cli/execute python2 python2.py
|
||||||
echo -n 'testing python3 = '
|
echo -n 'testing python3 = '
|
||||||
|
|
|
@ -0,0 +1 @@
|
||||||
|
:- write('good'), nl.
|
|
@ -105,6 +105,10 @@ echo 'php'
|
||||||
lxc-attach --clear-env -n piston -- /bin/bash -l -c "php -v"
|
lxc-attach --clear-env -n piston -- /bin/bash -l -c "php -v"
|
||||||
echo '---'
|
echo '---'
|
||||||
|
|
||||||
|
echo 'prolog'
|
||||||
|
lxc-attach --clear-env -n piston -- /bin/bash -l -c "swipl --version"
|
||||||
|
echo '---'
|
||||||
|
|
||||||
echo 'python2'
|
echo 'python2'
|
||||||
lxc-attach --clear-env -n piston -- /bin/bash -l -c "python -V"
|
lxc-attach --clear-env -n piston -- /bin/bash -l -c "python -V"
|
||||||
echo '---'
|
echo '---'
|
||||||
|
|
Loading…
Reference in New Issue