some stuff
This commit is contained in:
268
W1/calculator.fsx
Normal file
268
W1/calculator.fsx
Normal file
@ -0,0 +1,268 @@
|
|||||||
|
(* ABSTRACT SYNTAX *)
|
||||||
|
|
||||||
|
type VALUE = INT of int
|
||||||
|
|
||||||
|
type BINOP = BPLUS | BMINUS | BTIMES
|
||||||
|
|
||||||
|
type RANGEOP = RSUM | RPROD | RMAX | RARGMAX
|
||||||
|
|
||||||
|
type EXP =
|
||||||
|
| CONSTANT of VALUE
|
||||||
|
| VARIABLE of string
|
||||||
|
| OPERATE of BINOP * EXP * EXP
|
||||||
|
| LET_IN of string * EXP * EXP
|
||||||
|
| OVER of RANGEOP * string * EXP * EXP * EXP
|
||||||
|
|
||||||
|
(* A list mapping variable names to their values. *)
|
||||||
|
type SymTab = (string * VALUE) list
|
||||||
|
|
||||||
|
(* Inserts a variable into the variable table. *)
|
||||||
|
let bind v k vtab = (v, k) :: vtab : SymTab
|
||||||
|
|
||||||
|
(* Lookup a the value of a variable. *)
|
||||||
|
let rec lookup v = function
|
||||||
|
| (v', k) :: vtab -> if v = v' then k else lookup v vtab
|
||||||
|
| (_ : SymTab) -> failwith ("unbound variable : " + v)
|
||||||
|
|
||||||
|
(* HELP FUNCTIONS *)
|
||||||
|
let VALUEtoint = function INT x -> x
|
||||||
|
|
||||||
|
(* EVALUATION *)
|
||||||
|
|
||||||
|
(*****************************************************
|
||||||
|
* TODO: Task 2: complete the definition of `eval`. You may also
|
||||||
|
* define any auxiliary functions as you see fit, to help express `eval`
|
||||||
|
* as cleanly and concisely as possible.
|
||||||
|
****************************************************)
|
||||||
|
|
||||||
|
(* The evaluation function. *)
|
||||||
|
let rec eval (vtab : SymTab) (e : EXP) : VALUE =
|
||||||
|
match e with
|
||||||
|
| CONSTANT n -> n
|
||||||
|
| VARIABLE v ->
|
||||||
|
lookup v vtab
|
||||||
|
| OPERATE (op, e1, e2) ->
|
||||||
|
let exp1 = VALUEtoint (eval vtab e1)
|
||||||
|
let exp2 = VALUEtoint (eval vtab e2)
|
||||||
|
match op with
|
||||||
|
| BPLUS -> INT (exp1 + exp2)
|
||||||
|
| BMINUS -> INT (exp1 - exp2)
|
||||||
|
| BTIMES -> INT (exp1 * exp2)
|
||||||
|
| LET_IN (var, e1, e2) ->
|
||||||
|
let exp1 = eval vtab e1
|
||||||
|
let vtab = bind var exp1 vtab
|
||||||
|
eval vtab e2
|
||||||
|
| OVER (rop, var, e1, e2, e3) ->
|
||||||
|
let exp1 = VALUEtoint (eval vtab e1)
|
||||||
|
let exp2 = VALUEtoint (eval vtab e2)
|
||||||
|
let results = [
|
||||||
|
for i in exp1..exp2 ->
|
||||||
|
let vtab = bind var (INT i) vtab
|
||||||
|
eval vtab e3
|
||||||
|
]
|
||||||
|
match rop with
|
||||||
|
| RSUM -> List.fold (fun (INT acc) (INT elem) -> INT (acc + elem)) (INT 0) results
|
||||||
|
| RPROD -> List.fold (fun (INT acc) (INT elem) -> INT (acc * elem)) (INT 1) results
|
||||||
|
| RMAX -> List.fold (fun (INT acc) (INT elem) -> INT (max acc elem)) results[0] results
|
||||||
|
| RARGMAX ->
|
||||||
|
let max_elem = List.fold (fun (INT acc) (INT elem) -> INT (max acc elem)) results[0] results
|
||||||
|
INT ((List.findIndex ((=) max_elem) results) + exp1)
|
||||||
|
|
||||||
|
|
||||||
|
(* YOU SHOULDN'T NEED TO MODIFY ANYTHING IN THE REMAINDER OF THIS FILE,
|
||||||
|
BUT YOU ARE WELCOME TO LOOK AT IT. *)
|
||||||
|
|
||||||
|
(* LEXER
|
||||||
|
**********
|
||||||
|
* A lexer, is a program which reads a stream/list of chars,
|
||||||
|
* and transforms them into a list of tokens.
|
||||||
|
**********
|
||||||
|
* This example code is very simple and naive, but it should not
|
||||||
|
* introduce anything which you have not seen on the PoP course.
|
||||||
|
* Furhter more, we hope that you will read it, and get an intuition
|
||||||
|
* about what is going on
|
||||||
|
**********
|
||||||
|
*)
|
||||||
|
|
||||||
|
type TOKEN =
|
||||||
|
| NUM of int | ID of string
|
||||||
|
| PLUS | MULT | MINUS | EQ
|
||||||
|
| LPAR | RPAR | LET | IN
|
||||||
|
| SUM | PROD | MAX | ARGMAX | OF | TO
|
||||||
|
|
||||||
|
let explode (s : string) = [for c in s -> c]
|
||||||
|
let isA t c = List.exists (fun c' -> c = c') t
|
||||||
|
|
||||||
|
let digit = ['0'..'9']
|
||||||
|
let letter = ['a'..'z']
|
||||||
|
let symbol = explode "+-*/=()"
|
||||||
|
let whitespace = explode " \t\n"
|
||||||
|
|
||||||
|
let keyword = ["let"; "in"; "sum"; "prod"; "max"; "argmax"; "of"; "to"]
|
||||||
|
|
||||||
|
let rec lex = function
|
||||||
|
| (c :: _) as cs when c |> isA digit -> lexNum "" cs
|
||||||
|
| (c :: _) as cs when c |> isA letter -> lexWord "" cs
|
||||||
|
| (c :: cs) when c |> isA symbol -> lexSymbol c :: lex cs
|
||||||
|
| (c :: cs) when c |> isA whitespace -> lex cs
|
||||||
|
| (c :: cs) -> failwith ("invalid character : " + string c)
|
||||||
|
| (_ : char list) -> ([] : TOKEN list)
|
||||||
|
|
||||||
|
and lexNum s = function
|
||||||
|
| (c :: cs) when c |> isA digit -> lexNum (s + string c) cs
|
||||||
|
| cs -> (NUM (System.Int32.Parse s)) :: lex cs
|
||||||
|
|
||||||
|
and lexWord s = function
|
||||||
|
| (c :: cs) when c |> isA (letter @ digit) -> lexWord (s + string c) cs
|
||||||
|
| cs ->
|
||||||
|
(if s |> isA keyword then getKeyWord s else ID s) :: lex cs
|
||||||
|
|
||||||
|
and lexSymbol = function
|
||||||
|
| '+' -> PLUS
|
||||||
|
| '-' -> MINUS
|
||||||
|
| '*' -> MULT
|
||||||
|
| '=' -> EQ
|
||||||
|
| '(' -> LPAR
|
||||||
|
| ')' -> RPAR
|
||||||
|
| sym -> failwith ("Unknown Symbol : " + string sym)
|
||||||
|
|
||||||
|
and getKeyWord = function
|
||||||
|
| "let" -> LET
|
||||||
|
| "in" -> IN
|
||||||
|
| "sum" -> SUM
|
||||||
|
| "prod" -> PROD
|
||||||
|
| "max" -> MAX
|
||||||
|
| "argmax" -> ARGMAX
|
||||||
|
| "to" -> TO
|
||||||
|
| "of" -> OF
|
||||||
|
| word -> failwith ("Invalid Keyword : " + word)
|
||||||
|
|
||||||
|
(* PARSER
|
||||||
|
**********
|
||||||
|
* A parser transforms the list of tokens to an abstract syntax tree,
|
||||||
|
* which reprecents the syntax of an expression.
|
||||||
|
**********
|
||||||
|
* The example code uses a somewhat ad hoc approach.
|
||||||
|
* Later on in the course, we will see more systematic ways of
|
||||||
|
* constructing parsers.
|
||||||
|
*)
|
||||||
|
|
||||||
|
|
||||||
|
(* Returns tail of ts, assuming head of ts equals t *)
|
||||||
|
let expect t ts =
|
||||||
|
match ts with
|
||||||
|
| t' :: ts1 when t' = t -> ts1
|
||||||
|
| _ -> failwith "parse error"
|
||||||
|
|
||||||
|
(* Each parser function returns the expression parsed from the beginning
|
||||||
|
of the token list, together with any remaining tokens. *)
|
||||||
|
|
||||||
|
let rec parse_exp ts =
|
||||||
|
match ts with
|
||||||
|
| LET :: ID v :: EQ :: ts1 ->
|
||||||
|
let (e1, ts2) = parse_exp ts1
|
||||||
|
let ts3 = expect IN ts2
|
||||||
|
let (e2, ts4) = parse_exp ts3
|
||||||
|
(LET_IN (v,e1,e2), ts4)
|
||||||
|
| r :: ID v :: EQ :: ts1 when r |> isA [SUM; PROD; MAX; ARGMAX] ->
|
||||||
|
let (e1, ts2) = parse_exp ts1
|
||||||
|
let ts3 = expect TO ts2
|
||||||
|
let (e2, ts4) = parse_exp ts3
|
||||||
|
let ts5 = expect OF ts4
|
||||||
|
let (e3, ts6) = parse_exp ts5
|
||||||
|
let rop = match r with
|
||||||
|
| SUM -> RSUM
|
||||||
|
| PROD -> RPROD
|
||||||
|
| MAX -> RMAX
|
||||||
|
| ARGMAX -> RARGMAX
|
||||||
|
| _ -> failwith ("Unknown range operation : " + string r)
|
||||||
|
(OVER (rop, v, e1, e2, e3), ts6)
|
||||||
|
| _ -> parse_arith ts
|
||||||
|
|
||||||
|
and parse_arith ts =
|
||||||
|
let (e1, ts1) = parse_term ts
|
||||||
|
parse_terms e1 ts1
|
||||||
|
and parse_terms e1 ts =
|
||||||
|
match ts with
|
||||||
|
| PLUS :: ts1 -> let (e2, ts2) = parse_term ts1
|
||||||
|
parse_terms (OPERATE (BPLUS, e1,e2)) ts2
|
||||||
|
| MINUS :: ts1 -> let (e2, ts2) = parse_term ts1
|
||||||
|
parse_terms (OPERATE (BMINUS, e1,e2)) ts2
|
||||||
|
| _ -> (e1, ts)
|
||||||
|
|
||||||
|
and parse_term ts =
|
||||||
|
let (e1, ts1) = parse_factor ts
|
||||||
|
parse_factors e1 ts1
|
||||||
|
and parse_factors e1 ts =
|
||||||
|
match ts with
|
||||||
|
| MULT :: ts1 -> let (e2, ts2) = parse_factor ts1
|
||||||
|
parse_factors (OPERATE (BTIMES, e1,e2)) ts2
|
||||||
|
| _ -> (e1, ts)
|
||||||
|
|
||||||
|
and parse_factor ts =
|
||||||
|
match ts with
|
||||||
|
| ID v :: ts1 -> (VARIABLE v, ts1)
|
||||||
|
| NUM n :: ts1 -> (CONSTANT (INT n), ts1)
|
||||||
|
| LPAR :: ts1 ->
|
||||||
|
let (e, ts2) = parse_exp ts1
|
||||||
|
let ts3 = expect RPAR ts2
|
||||||
|
(e, ts3)
|
||||||
|
| _ -> failwith ("parse error")
|
||||||
|
|
||||||
|
let parse ts =
|
||||||
|
let (e, ts1) = parse_exp ts
|
||||||
|
if ts1 = [] then e else failwith "parse error"
|
||||||
|
|
||||||
|
(*************
|
||||||
|
* When interpreting code, we lex it into tokens, parse the tokens into an
|
||||||
|
* abstract syntax tree, and evaluate the tree into some value.
|
||||||
|
* The definition of what it means to be a value, and an expression (tree),
|
||||||
|
* can be found in the parser.
|
||||||
|
*************
|
||||||
|
* In this code, the evaluation of such a tree has been reprecented, should
|
||||||
|
* be implemented in the below function [eval] {~_^}
|
||||||
|
*)
|
||||||
|
|
||||||
|
(* FOR RUNNING A PROGRAM *)
|
||||||
|
let run program = (lex >> parse >> eval []) (explode program)
|
||||||
|
|
||||||
|
(* Tests *)
|
||||||
|
let eval_test_constant = (eval [] (CONSTANT (INT 4)) = INT 4)
|
||||||
|
|
||||||
|
//let eval_test_lookup = (eval [("x", INT 4)] (VARIABLE "x") = INT 4)
|
||||||
|
|
||||||
|
let program0 = "1 - 2 - 3"
|
||||||
|
|
||||||
|
let program1 = "let x = 4 in x + 3"
|
||||||
|
|
||||||
|
let program2 = ("let x0 = 2 in \
|
||||||
|
let x1 = x0 * x0 in \
|
||||||
|
let x2 = x1 * x1 in x2 * x2")
|
||||||
|
|
||||||
|
let program3 = "sum x = 1 to 4 of x*x"
|
||||||
|
let program4 = "max x = 0 to 10 of 5 * x - x * x"
|
||||||
|
let program5 = "argmax x = 0 to 10 of 5 * x - x * x"
|
||||||
|
|
||||||
|
(*
|
||||||
|
let eval_test_arithmetic = (run program0 = INT -4)
|
||||||
|
let eval_test_let = (run program1 = INT 7)
|
||||||
|
let eval_test_nested_let = (run program2 = INT 30)
|
||||||
|
let eval_test_max = (run program4 = INT 6)
|
||||||
|
let eval_test_argmax = (run program4 = INT 2)
|
||||||
|
*)
|
||||||
|
|
||||||
|
(* THIS FUNCTION CALLS RUN ON USER INPUT IN AN INTERACTIVE LOOP *)
|
||||||
|
let interpreter () =
|
||||||
|
let mutable running = true
|
||||||
|
printfn "Welcome to the calculator! Type \"exit\" to stop."
|
||||||
|
while running do
|
||||||
|
printf "Input an expression : "
|
||||||
|
let program = System.Console.ReadLine()
|
||||||
|
try
|
||||||
|
if program = "" then ()
|
||||||
|
else if program = "exit" then running <- false
|
||||||
|
else printfn "Evaluation result : %A" (run program)
|
||||||
|
with
|
||||||
|
| Failure (msg) -> printfn "%s" msg
|
||||||
|
|
||||||
|
interpreter ()
|
5
W1/report/main.aux
Normal file
5
W1/report/main.aux
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
\relax
|
||||||
|
\@writefile{toc}{\contentsline {section}{\numberline {Task 1}}{1}{}\protected@file@percent }
|
||||||
|
\@writefile{toc}{\contentsline {section}{\numberline {Task 2}}{1}{}\protected@file@percent }
|
||||||
|
\@writefile{toc}{\contentsline {section}{\numberline {Task 3}}{1}{}\protected@file@percent }
|
||||||
|
\gdef \@abspage@last{1}
|
20
W1/report/main.fdb_latexmk
Normal file
20
W1/report/main.fdb_latexmk
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
# Fdb version 3
|
||||||
|
["pdflatex"] 1651237923 "/home/nikolaj/Code/Datalogi/2022B4-IPS/IPS_W-assignments/W1/main.tex" "main.pdf" "main" 1651237923
|
||||||
|
"/home/nikolaj/Code/Datalogi/2022B4-IPS/IPS_W-assignments/W1/main.tex" 1651237922 364 e3b792744da3753f628354d9558911dc ""
|
||||||
|
"/usr/share/texmf-dist/fonts/map/fontname/texfonts.map" 1647844622 3524 cb3e574dea2d1052e39280babc910dc8 ""
|
||||||
|
"/usr/share/texmf-dist/fonts/tfm/public/cm/cmbx12.tfm" 1647844622 1324 c910af8c371558dc20f2d7822f66fe64 ""
|
||||||
|
"/usr/share/texmf-dist/fonts/tfm/public/cm/cmr12.tfm" 1647844622 1288 655e228510b4c2a1abe905c368440826 ""
|
||||||
|
"/usr/share/texmf-dist/fonts/type1/public/amsfonts/cm/cmbx12.pfb" 1647844622 32080 340ef9bf63678554ee606688e7b5339d ""
|
||||||
|
"/usr/share/texmf-dist/fonts/type1/public/amsfonts/cm/cmr10.pfb" 1647844622 35752 024fb6c41858982481f6968b5fc26508 ""
|
||||||
|
"/usr/share/texmf-dist/tex/latex/base/article.cls" 1647844622 20144 8a7de377ae7a11ee924a7499611f5a9d ""
|
||||||
|
"/usr/share/texmf-dist/tex/latex/base/size10.clo" 1647844622 8448 96f18c76bf608a36ee6fbf021ac1dd32 ""
|
||||||
|
"/usr/share/texmf-dist/tex/latex/l3backend/l3backend-pdftex.def" 1647844622 29921 d0acc05a38bd4aa3af2017f0b7c137ce ""
|
||||||
|
"/usr/share/texmf-dist/web2c/texmf.cnf" 1647844622 39911 2da6c67557ec033436fe5418a70a8a61 ""
|
||||||
|
"/var/lib/texmf/fonts/map/pdftex/updmap/pdftex.map" 1650359669 4408072 42ceaa83bae76aebad711d3f3dd7f55f ""
|
||||||
|
"/var/lib/texmf/web2c/pdftex/pdflatex.fmt" 1650359660 2924504 ea4c5c72b0c4652da661684b3e043938 ""
|
||||||
|
"main.aux" 1651237923 311 d89453a43fde1809b6531a97b3ddf7d3 "pdflatex"
|
||||||
|
"main.tex" 1651237922 364 e3b792744da3753f628354d9558911dc ""
|
||||||
|
(generated)
|
||||||
|
"main.aux"
|
||||||
|
"main.log"
|
||||||
|
"main.pdf"
|
43
W1/report/main.fls
Normal file
43
W1/report/main.fls
Normal file
@ -0,0 +1,43 @@
|
|||||||
|
PWD /home/nikolaj/Code/Datalogi/2022B4-IPS/IPS_W-assignments/W1
|
||||||
|
INPUT /usr/share/texmf-dist/web2c/texmf.cnf
|
||||||
|
INPUT /var/lib/texmf/web2c/pdftex/pdflatex.fmt
|
||||||
|
INPUT /home/nikolaj/Code/Datalogi/2022B4-IPS/IPS_W-assignments/W1/main.tex
|
||||||
|
OUTPUT main.log
|
||||||
|
INPUT /usr/share/texmf-dist/tex/latex/base/article.cls
|
||||||
|
INPUT /usr/share/texmf-dist/tex/latex/base/article.cls
|
||||||
|
INPUT /usr/share/texmf-dist/tex/latex/base/article.cls
|
||||||
|
INPUT /usr/share/texmf-dist/tex/latex/base/article.cls
|
||||||
|
INPUT /usr/share/texmf-dist/tex/latex/base/article.cls
|
||||||
|
INPUT /usr/share/texmf-dist/tex/latex/base/article.cls
|
||||||
|
INPUT /usr/share/texmf-dist/tex/latex/base/article.cls
|
||||||
|
INPUT /usr/share/texmf-dist/tex/latex/base/article.cls
|
||||||
|
INPUT /usr/share/texmf-dist/tex/latex/base/article.cls
|
||||||
|
INPUT /usr/share/texmf-dist/tex/latex/base/article.cls
|
||||||
|
INPUT /usr/share/texmf-dist/tex/latex/base/article.cls
|
||||||
|
INPUT /usr/share/texmf-dist/tex/latex/base/size10.clo
|
||||||
|
INPUT /usr/share/texmf-dist/tex/latex/base/size10.clo
|
||||||
|
INPUT /usr/share/texmf-dist/tex/latex/base/size10.clo
|
||||||
|
INPUT /usr/share/texmf-dist/tex/latex/base/size10.clo
|
||||||
|
INPUT /usr/share/texmf-dist/tex/latex/l3backend/l3backend-pdftex.def
|
||||||
|
INPUT /usr/share/texmf-dist/tex/latex/l3backend/l3backend-pdftex.def
|
||||||
|
INPUT /usr/share/texmf-dist/tex/latex/l3backend/l3backend-pdftex.def
|
||||||
|
INPUT /usr/share/texmf-dist/tex/latex/l3backend/l3backend-pdftex.def
|
||||||
|
INPUT /usr/share/texmf-dist/tex/latex/l3backend/l3backend-pdftex.def
|
||||||
|
INPUT /usr/share/texmf-dist/tex/latex/l3backend/l3backend-pdftex.def
|
||||||
|
INPUT /usr/share/texmf-dist/tex/latex/l3backend/l3backend-pdftex.def
|
||||||
|
INPUT /usr/share/texmf-dist/tex/latex/l3backend/l3backend-pdftex.def
|
||||||
|
INPUT /usr/share/texmf-dist/tex/latex/l3backend/l3backend-pdftex.def
|
||||||
|
INPUT /usr/share/texmf-dist/tex/latex/l3backend/l3backend-pdftex.def
|
||||||
|
INPUT /usr/share/texmf-dist/tex/latex/l3backend/l3backend-pdftex.def
|
||||||
|
INPUT ./main.aux
|
||||||
|
INPUT main.aux
|
||||||
|
INPUT main.aux
|
||||||
|
OUTPUT main.aux
|
||||||
|
INPUT /usr/share/texmf-dist/fonts/map/fontname/texfonts.map
|
||||||
|
INPUT /usr/share/texmf-dist/fonts/tfm/public/cm/cmr12.tfm
|
||||||
|
INPUT /usr/share/texmf-dist/fonts/tfm/public/cm/cmbx12.tfm
|
||||||
|
OUTPUT main.pdf
|
||||||
|
INPUT /var/lib/texmf/fonts/map/pdftex/updmap/pdftex.map
|
||||||
|
INPUT main.aux
|
||||||
|
INPUT /usr/share/texmf-dist/fonts/type1/public/amsfonts/cm/cmbx12.pfb
|
||||||
|
INPUT /usr/share/texmf-dist/fonts/type1/public/amsfonts/cm/cmr10.pfb
|
64
W1/report/main.log
Normal file
64
W1/report/main.log
Normal file
@ -0,0 +1,64 @@
|
|||||||
|
This is pdfTeX, Version 3.141592653-2.6-1.40.23 (TeX Live 2021/Arch Linux) (preloaded format=pdflatex 2022.4.19) 29 APR 2022 15:12
|
||||||
|
entering extended mode
|
||||||
|
restricted \write18 enabled.
|
||||||
|
file:line:error style messages enabled.
|
||||||
|
%&-line parsing enabled.
|
||||||
|
**/home/nikolaj/Code/Datalogi/2022B4-IPS/IPS_W-assignments/W1/main.tex
|
||||||
|
(/home/nikolaj/Code/Datalogi/2022B4-IPS/IPS_W-assignments/W1/main.tex
|
||||||
|
LaTeX2e <2021-11-15> patch level 1
|
||||||
|
L3 programming layer <2022-02-24> (/usr/share/texmf-dist/tex/latex/base/article.cls
|
||||||
|
Document Class: article 2021/10/04 v1.4n Standard LaTeX document class
|
||||||
|
(/usr/share/texmf-dist/tex/latex/base/size10.clo
|
||||||
|
File: size10.clo 2021/10/04 v1.4n Standard LaTeX file (size option)
|
||||||
|
)
|
||||||
|
\c@part=\count185
|
||||||
|
\c@section=\count186
|
||||||
|
\c@subsection=\count187
|
||||||
|
\c@subsubsection=\count188
|
||||||
|
\c@paragraph=\count189
|
||||||
|
\c@subparagraph=\count190
|
||||||
|
\c@figure=\count191
|
||||||
|
\c@table=\count192
|
||||||
|
\abovecaptionskip=\skip47
|
||||||
|
\belowcaptionskip=\skip48
|
||||||
|
\bibindent=\dimen138
|
||||||
|
) (/usr/share/texmf-dist/tex/latex/l3backend/l3backend-pdftex.def
|
||||||
|
File: l3backend-pdftex.def 2022-02-07 L3 backend support: PDF output (pdfTeX)
|
||||||
|
\l__color_backend_stack_int=\count193
|
||||||
|
\l__pdf_internal_box=\box50
|
||||||
|
) (./main.aux)
|
||||||
|
\openout1 = `main.aux'.
|
||||||
|
|
||||||
|
LaTeX Font Info: Checking defaults for OML/cmm/m/it on input line 5.
|
||||||
|
LaTeX Font Info: ... okay on input line 5.
|
||||||
|
LaTeX Font Info: Checking defaults for OMS/cmsy/m/n on input line 5.
|
||||||
|
LaTeX Font Info: ... okay on input line 5.
|
||||||
|
LaTeX Font Info: Checking defaults for OT1/cmr/m/n on input line 5.
|
||||||
|
LaTeX Font Info: ... okay on input line 5.
|
||||||
|
LaTeX Font Info: Checking defaults for T1/cmr/m/n on input line 5.
|
||||||
|
LaTeX Font Info: ... okay on input line 5.
|
||||||
|
LaTeX Font Info: Checking defaults for TS1/cmr/m/n on input line 5.
|
||||||
|
LaTeX Font Info: ... okay on input line 5.
|
||||||
|
LaTeX Font Info: Checking defaults for OMX/cmex/m/n on input line 5.
|
||||||
|
LaTeX Font Info: ... okay on input line 5.
|
||||||
|
LaTeX Font Info: Checking defaults for U/cmr/m/n on input line 5.
|
||||||
|
LaTeX Font Info: ... okay on input line 5.
|
||||||
|
[1
|
||||||
|
|
||||||
|
{/var/lib/texmf/fonts/map/pdftex/updmap/pdftex.map}] (./main.aux) )
|
||||||
|
Here is how much of TeX's memory you used:
|
||||||
|
404 strings out of 478276
|
||||||
|
7535 string characters out of 5853013
|
||||||
|
298976 words of memory out of 5000000
|
||||||
|
18691 multiletter control sequences out of 15000+600000
|
||||||
|
469864 words of font info for 30 fonts, out of 8000000 for 9000
|
||||||
|
1141 hyphenation exceptions out of 8191
|
||||||
|
34i,5n,38p,193b,107s stack positions out of 5000i,500n,10000p,200000b,80000s
|
||||||
|
</usr/share/texmf-dist/fonts/type1/public/amsfonts/cm/cmbx12.pfb></usr/share/texmf-dist/fonts/type1/public/amsfonts/cm/cmr10.pfb>
|
||||||
|
Output written on main.pdf (1 page, 28488 bytes).
|
||||||
|
PDF statistics:
|
||||||
|
18 PDF objects out of 1000 (max. 8388607)
|
||||||
|
10 compressed objects within 1 object stream
|
||||||
|
0 named destinations out of 1000 (max. 500000)
|
||||||
|
1 words of extra memory for PDF output out of 10000 (max. 10000000)
|
||||||
|
|
BIN
W1/report/main.pdf
Normal file
BIN
W1/report/main.pdf
Normal file
Binary file not shown.
BIN
W1/report/main.synctex.gz
Normal file
BIN
W1/report/main.synctex.gz
Normal file
Binary file not shown.
16
W1/report/main.tex
Normal file
16
W1/report/main.tex
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
\documentclass[a4paper]{article}
|
||||||
|
|
||||||
|
\renewcommand{\thesection}{Task \arabic{section}}
|
||||||
|
|
||||||
|
\begin{document}
|
||||||
|
\section{}
|
||||||
|
\begin{enumerate}
|
||||||
|
\item I am a DIKU Computer Science BSc, general profile
|
||||||
|
\item I have little to no proficiency with F\#
|
||||||
|
\item I have mininal knowledge of assembly programming
|
||||||
|
\item
|
||||||
|
\end{enumerate}
|
||||||
|
|
||||||
|
\section{}
|
||||||
|
\section{}
|
||||||
|
\end{document}
|
Reference in New Issue
Block a user