diff --git a/jkva-freepascal/Dockerfile b/jkva-freepascal/Dockerfile new file mode 100644 index 0000000..61db66f --- /dev/null +++ b/jkva-freepascal/Dockerfile @@ -0,0 +1,19 @@ +FROM debian:stable + +MAINTAINER job@jobva.nl + +ENV LANG C.UTF-8 + +# Update deps +RUN apt-get update + +RUN DEBIAN_FRONTEND=noninteractive apt-get install -y fp-compiler-3.0.0 + +# Create working dir +RUN mkdir -p /var/app +COPY . /var/app +WORKDIR /var/app + +# Run raffler +RUN fpc /var/app/raffler.pas +CMD ["/var/app/raffler", "/var/names.txt"] diff --git a/jkva-freepascal/raffler.pas b/jkva-freepascal/raffler.pas new file mode 100644 index 0000000..7b61049 --- /dev/null +++ b/jkva-freepascal/raffler.pas @@ -0,0 +1,57 @@ +program Raffler; + +{$IFDEF FPC} + {$MODE OBJFPC} + {$I+} +{$ENDIF} + +uses + SysUtils; + +var + names : TextFile; + winner: String; + count : Integer = 0; + i : Integer = 0; + rnd : Integer = 0; + +begin + if (ParamCount = 0) then begin + writeln('ERROR: No filename supplied.'); + halt; + end; + + Assign(names, ParamStr(1)); + + try + reset(names); + while not eof(names) do begin + readln(names, winner); + inc(count); + end; + except + on E: EInOutError do begin + writeln('ERROR: handling input: ', E.Message); + halt; + end; + end; + + if (count = 0) then begin + writeln('ERROR: No names in file.'); + halt; + end; + + Randomize; + rnd := Random(count); + + reset(names); + + while i <= rnd do begin + readln(names, winner); + inc(i); + end; + + CloseFile(names); + + writeln('We have a winner: ', winner); +end.