@jpetit/toolkit 3.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (192) hide show
  1. package/.prettierignore +11 -0
  2. package/.prettierrc.json +9 -0
  3. package/.vscode/settings.json +26 -0
  4. package/README.md +22 -0
  5. package/assets/lua/fixCodeBlocks.lua +19 -0
  6. package/assets/lua/removeEnvs.lua +20 -0
  7. package/assets/lua/removeHtmlOnly.lua +11 -0
  8. package/assets/problems/graphics/japanese-flag.pbm/README.md +14 -0
  9. package/assets/problems/graphics/japanese-flag.pbm/award.png +0 -0
  10. package/assets/problems/graphics/japanese-flag.pbm/handler.yml +2 -0
  11. package/assets/problems/graphics/japanese-flag.pbm/problem.ca.tex +21 -0
  12. package/assets/problems/graphics/japanese-flag.pbm/problem.ca.yml +3 -0
  13. package/assets/problems/graphics/japanese-flag.pbm/sample-1.inp +1 -0
  14. package/assets/problems/graphics/japanese-flag.pbm/sample-2.inp +1 -0
  15. package/assets/problems/graphics/japanese-flag.pbm/solution.cc +25 -0
  16. package/assets/problems/graphics/japanese-flag.pbm/solution.py +11 -0
  17. package/assets/problems/graphics/tortuga.pbm/README.md +13 -0
  18. package/assets/problems/graphics/tortuga.pbm/award.png +0 -0
  19. package/assets/problems/graphics/tortuga.pbm/handler.yml +2 -0
  20. package/assets/problems/graphics/tortuga.pbm/problem.ca.tex +23 -0
  21. package/assets/problems/graphics/tortuga.pbm/problem.ca.yml +3 -0
  22. package/assets/problems/graphics/tortuga.pbm/sample.inp +0 -0
  23. package/assets/problems/graphics/tortuga.pbm/solution.py +11 -0
  24. package/assets/problems/standard/campanar-de-la-torrassa.pbm/README.md +15 -0
  25. package/assets/problems/standard/campanar-de-la-torrassa.pbm/award.html +1 -0
  26. package/assets/problems/standard/campanar-de-la-torrassa.pbm/award.png +0 -0
  27. package/assets/problems/standard/campanar-de-la-torrassa.pbm/campanar.eps +1113 -0
  28. package/assets/problems/standard/campanar-de-la-torrassa.pbm/campanar.png +0 -0
  29. package/assets/problems/standard/campanar-de-la-torrassa.pbm/generate.cc +10 -0
  30. package/assets/problems/standard/campanar-de-la-torrassa.pbm/handler.yml +2 -0
  31. package/assets/problems/standard/campanar-de-la-torrassa.pbm/problem.ca.tex +59 -0
  32. package/assets/problems/standard/campanar-de-la-torrassa.pbm/problem.ca.yml +3 -0
  33. package/assets/problems/standard/campanar-de-la-torrassa.pbm/problem.en.tex +52 -0
  34. package/assets/problems/standard/campanar-de-la-torrassa.pbm/problem.en.yml +4 -0
  35. package/assets/problems/standard/campanar-de-la-torrassa.pbm/sample.inp +7 -0
  36. package/assets/problems/standard/campanar-de-la-torrassa.pbm/slow.cc +29 -0
  37. package/assets/problems/standard/campanar-de-la-torrassa.pbm/solution.cc +48 -0
  38. package/assets/problems/standard/campanar-de-la-torrassa.pbm/test-1.inp +12 -0
  39. package/assets/problems/standard/campanar-de-la-torrassa.pbm/test-2.inp +100000 -0
  40. package/assets/problems/standard/campanar-de-la-torrassa.pbm/test-2.ops +1 -0
  41. package/assets/problems/standard/campanar-de-la-torrassa.pbm/test-b.inp +0 -0
  42. package/assets/problems/standard/maximum-of-2-integers.pbm/README.md +11 -0
  43. package/assets/problems/standard/maximum-of-2-integers.pbm/handler.yml +1 -0
  44. package/assets/problems/standard/maximum-of-2-integers.pbm/problem.ca.tex +17 -0
  45. package/assets/problems/standard/maximum-of-2-integers.pbm/problem.ca.yml +3 -0
  46. package/assets/problems/standard/maximum-of-2-integers.pbm/problem.en.tex +16 -0
  47. package/assets/problems/standard/maximum-of-2-integers.pbm/problem.en.yml +4 -0
  48. package/assets/problems/standard/maximum-of-2-integers.pbm/sample-1.inp +1 -0
  49. package/assets/problems/standard/maximum-of-2-integers.pbm/sample-2.inp +1 -0
  50. package/assets/problems/standard/maximum-of-2-integers.pbm/sample-3.inp +1 -0
  51. package/assets/problems/standard/maximum-of-2-integers.pbm/solution.c +18 -0
  52. package/assets/problems/standard/maximum-of-2-integers.pbm/solution.cc +13 -0
  53. package/assets/problems/standard/maximum-of-2-integers.pbm/solution.java +16 -0
  54. package/assets/problems/standard/maximum-of-2-integers.pbm/solution.py +5 -0
  55. package/assets/problems/standard/maximum-of-2-integers.pbm/test-1.inp +1 -0
  56. package/assets/problems/standard/maximum-of-2-integers.pbm/test-2.inp +1 -0
  57. package/assets/problems/standard/maximum-of-2-integers.pbm/test-3.inp +1 -0
  58. package/assets/problems/standard/maximum-of-2-integers.pbm/test-4.inp +1 -0
  59. package/assets/problems/standard/maximum-of-2-integers.pbm/test-5.inp +1 -0
  60. package/assets/problems/standard/treasures-in-a-map.pbm/README.md +12 -0
  61. package/assets/problems/standard/treasures-in-a-map.pbm/atzar.cc +85 -0
  62. package/assets/problems/standard/treasures-in-a-map.pbm/award.png +0 -0
  63. package/assets/problems/standard/treasures-in-a-map.pbm/generate-1.cc +26 -0
  64. package/assets/problems/standard/treasures-in-a-map.pbm/generate-2.cc +26 -0
  65. package/assets/problems/standard/treasures-in-a-map.pbm/generate-3.cc +26 -0
  66. package/assets/problems/standard/treasures-in-a-map.pbm/generate-4.cc +26 -0
  67. package/assets/problems/standard/treasures-in-a-map.pbm/handler.yml +1 -0
  68. package/assets/problems/standard/treasures-in-a-map.pbm/problem.ca.tex +40 -0
  69. package/assets/problems/standard/treasures-in-a-map.pbm/problem.ca.yml +3 -0
  70. package/assets/problems/standard/treasures-in-a-map.pbm/problem.en.tex +40 -0
  71. package/assets/problems/standard/treasures-in-a-map.pbm/problem.en.yml +4 -0
  72. package/assets/problems/standard/treasures-in-a-map.pbm/random-1.inp +24 -0
  73. package/assets/problems/standard/treasures-in-a-map.pbm/random-2.inp +27 -0
  74. package/assets/problems/standard/treasures-in-a-map.pbm/random-3.inp +38 -0
  75. package/assets/problems/standard/treasures-in-a-map.pbm/random-4.inp +50 -0
  76. package/assets/problems/standard/treasures-in-a-map.pbm/sample-1.inp +9 -0
  77. package/assets/problems/standard/treasures-in-a-map.pbm/sample-2.inp +6 -0
  78. package/assets/problems/standard/treasures-in-a-map.pbm/sample-3.inp +7 -0
  79. package/assets/problems/standard/treasures-in-a-map.pbm/solution.cc +38 -0
  80. package/assets/problems/standard/treasures-in-a-map.pbm/test-1.inp +5 -0
  81. package/assets/problems/standard/treasures-in-a-map.pbm/test-2.inp +6 -0
  82. package/assets/problems/standard/treasures-in-a-map.pbm/test-3.inp +6 -0
  83. package/assets/problems/standard/treasures-in-a-map.pbm/test-4.inp +9 -0
  84. package/assets/problems/standard/treasures-in-a-map.pbm/test-5.inp +10 -0
  85. package/assets/problems/standard/treasures-in-a-map.pbm/test-6.inp +9 -0
  86. package/assets/problems/standard/treasures-in-a-map.pbm/test-7.inp +12 -0
  87. package/assets/problems/standard/treasures-in-a-map.pbm/test-8.inp +3 -0
  88. package/assets/problems/standard/treasures-in-a-map.pbm/test-9.inp +37 -0
  89. package/assets/problems/standard/treasures-in-a-map.pbm/test-91.inp +52 -0
  90. package/assets/problems/standard/treasures-in-a-map.pbm/test-92.inp +25 -0
  91. package/assets/problems/standard/treasures-in-a-map.pbm/test-93.inp +3 -0
  92. package/assets/sty/judgeit.ca.sty +54 -0
  93. package/assets/sty/judgeit.de.sty +61 -0
  94. package/assets/sty/judgeit.en.sty +60 -0
  95. package/assets/sty/judgeit.es.sty +54 -0
  96. package/assets/sty/judgeit.fr.sty +59 -0
  97. package/assets/sty/judgeit.sty +307 -0
  98. package/assets/sty/picins.sty +579 -0
  99. package/assets.zip +0 -0
  100. package/eslint.config.mjs +31 -0
  101. package/lib/ai.ts +138 -0
  102. package/lib/assets.ts +31 -0
  103. package/lib/cleaner.ts +58 -0
  104. package/lib/compilers/_frompython.ts +388 -0
  105. package/lib/compilers/base.ts +97 -0
  106. package/lib/compilers/gcc.ts +47 -0
  107. package/lib/compilers/gxx.ts +47 -0
  108. package/lib/compilers/index.ts +61 -0
  109. package/lib/compilers/python3.ts +67 -0
  110. package/lib/data.ts +19 -0
  111. package/lib/doctor.ts +104 -0
  112. package/lib/generate.ts +333 -0
  113. package/lib/maker.ts +535 -0
  114. package/lib/settings.ts +42 -0
  115. package/lib/tui.ts +69 -0
  116. package/lib/utils.ts +83 -0
  117. package/package.json +56 -0
  118. package/problems/graphic.pbm/README.md +14 -0
  119. package/problems/graphic.pbm/award.png +0 -0
  120. package/problems/graphic.pbm/handler.yml +2 -0
  121. package/problems/graphic.pbm/problem.ca.html +13 -0
  122. package/problems/graphic.pbm/problem.ca.md +20 -0
  123. package/problems/graphic.pbm/problem.ca.tex +21 -0
  124. package/problems/graphic.pbm/problem.ca.txt +20 -0
  125. package/problems/graphic.pbm/problem.ca.yml +3 -0
  126. package/problems/graphic.pbm/sample-1.inp +1 -0
  127. package/problems/graphic.pbm/sample-2.inp +1 -0
  128. package/problems/graphic.pbm/solution.py +11 -0
  129. package/problems/maxim2.pbm/Main.java +13 -0
  130. package/problems/maxim2.pbm/distillation.yml +7 -0
  131. package/problems/maxim2.pbm/distilled-01.inp +1 -0
  132. package/problems/maxim2.pbm/distilled-02.inp +1 -0
  133. package/problems/maxim2.pbm/distilled-03.inp +1 -0
  134. package/problems/maxim2.pbm/distiller.yml +2 -0
  135. package/problems/maxim2.pbm/generate-inputs.py +9 -0
  136. package/problems/maxim2.pbm/handler.yml +2 -0
  137. package/problems/maxim2.pbm/ma-1.inp +1 -0
  138. package/problems/maxim2.pbm/ma-2.inp +1 -0
  139. package/problems/maxim2.pbm/ma-3.inp +1 -0
  140. package/problems/maxim2.pbm/ma-4.inp +1 -0
  141. package/problems/maxim2.pbm/ma-5.inp +1 -0
  142. package/problems/maxim2.pbm/per-doubles.inp +1 -0
  143. package/problems/maxim2.pbm/problem.ca.html +11 -0
  144. package/problems/maxim2.pbm/problem.ca.md +19 -0
  145. package/problems/maxim2.pbm/problem.ca.tex +17 -0
  146. package/problems/maxim2.pbm/problem.ca.txt +19 -0
  147. package/problems/maxim2.pbm/problem.ca.yml +3 -0
  148. package/problems/maxim2.pbm/problem.en.html +11 -0
  149. package/problems/maxim2.pbm/problem.en.md +19 -0
  150. package/problems/maxim2.pbm/problem.en.tex +16 -0
  151. package/problems/maxim2.pbm/problem.en.txt +19 -0
  152. package/problems/maxim2.pbm/problem.en.yml +4 -0
  153. package/problems/maxim2.pbm/sample-1.inp +1 -0
  154. package/problems/maxim2.pbm/sample-2.inp +1 -0
  155. package/problems/maxim2.pbm/sample-3.inp +1 -0
  156. package/problems/maxim2.pbm/solution.c +12 -0
  157. package/problems/maxim2.pbm/solution.cc +13 -0
  158. package/problems/maxim2.pbm/solution.java +13 -0
  159. package/problems/maxim2.pbm/solution.pas +9 -0
  160. package/problems/maxim2.pbm/solution.py +5 -0
  161. package/problems/maxim2.pbm/tags.yml +2 -0
  162. package/problems/maxim2.pbm/test_-1_-1.inp +1 -0
  163. package/problems/maxim2.pbm/test_-1_-2.inp +1 -0
  164. package/problems/maxim2.pbm/test_-1_0.inp +1 -0
  165. package/problems/maxim2.pbm/test_-1_1.inp +1 -0
  166. package/problems/maxim2.pbm/test_-2_-1.inp +1 -0
  167. package/problems/maxim2.pbm/test_-2_-2.inp +1 -0
  168. package/problems/maxim2.pbm/test_-2_0.inp +1 -0
  169. package/problems/maxim2.pbm/test_-2_1.inp +1 -0
  170. package/problems/maxim2.pbm/test_0_-1.inp +1 -0
  171. package/problems/maxim2.pbm/test_0_-2.inp +1 -0
  172. package/problems/maxim2.pbm/test_0_0.inp +1 -0
  173. package/problems/maxim2.pbm/test_0_1.inp +1 -0
  174. package/problems/maxim2.pbm/test_1_-1.inp +1 -0
  175. package/problems/maxim2.pbm/test_1_-2.inp +1 -0
  176. package/problems/maxim2.pbm/test_1_0.inp +1 -0
  177. package/problems/maxim2.pbm/test_1_1.inp +1 -0
  178. package/test.ts +3 -0
  179. package/toolkit/ai.ts +30 -0
  180. package/toolkit/clean.ts +19 -0
  181. package/toolkit/compilers.ts +29 -0
  182. package/toolkit/create-jutge-ai.ts +101 -0
  183. package/toolkit/create-template.ts +51 -0
  184. package/toolkit/create-wizard.ts +4 -0
  185. package/toolkit/create.ts +75 -0
  186. package/toolkit/doctor.ts +17 -0
  187. package/toolkit/index.ts +28 -0
  188. package/toolkit/init.ts +66 -0
  189. package/toolkit/make.ts +60 -0
  190. package/toolkit/verify.ts +19 -0
  191. package/tsconfig.json +38 -0
  192. package/types/zip.d.ts +4 -0
@@ -0,0 +1,11 @@
1
+ data
2
+ prisma
3
+ .next
4
+ .cache
5
+ package-lock.json
6
+ public
7
+ node_modules
8
+ next-env.d.ts
9
+ next.config.ts
10
+ yarn.lock
11
+ problems
@@ -0,0 +1,9 @@
1
+ {
2
+ "semi": false,
3
+ "singleQuote": true,
4
+ "trailingComma": "all",
5
+ "tabWidth": 4,
6
+ "useTabs": false,
7
+ "arrowParens": "always",
8
+ "printWidth": 120
9
+ }
@@ -0,0 +1,26 @@
1
+ {
2
+ "editor.defaultFormatter": "esbenp.prettier-vscode",
3
+ "[javascript]": {
4
+ "editor.defaultFormatter": "esbenp.prettier-vscode"
5
+ },
6
+ "editor.tabSize": 4,
7
+ "editor.insertSpaces": true,
8
+ "editor.indentSize": "tabSize",
9
+ "editor.detectIndentation": false,
10
+ "files.exclude": {
11
+ "**/node_modules": true,
12
+ "**/.next": true,
13
+ "**/data/quizzes": true,
14
+ "**/prisma/generated": true
15
+ },
16
+ "explorer.sortOrder": "filesFirst",
17
+ "[c]": {
18
+ "editor.defaultFormatter": "ms-vscode.cpptools"
19
+ },
20
+ "[java]": {
21
+ "editor.defaultFormatter": "redhat.java"
22
+ },
23
+ "[cpp]": {
24
+ "editor.defaultFormatter": "ms-vscode.cpptools"
25
+ }
26
+ }
package/README.md ADDED
@@ -0,0 +1,22 @@
1
+ # new-jutge-toolkit
2
+
3
+ To install dependencies:
4
+
5
+ ```bash
6
+ bun install
7
+ ```
8
+
9
+ To run and get help:
10
+
11
+ ```bash
12
+ bun run toolkit
13
+ ```
14
+
15
+ Other development commands:
16
+
17
+ ```bash
18
+ bun run build # build an executable
19
+ bun run lint # run linter
20
+ bun run format # format code
21
+ bun run depcheck # analyze dependencies
22
+ ```
@@ -0,0 +1,19 @@
1
+ -- This function runs on every CodeBlock element.
2
+ function CodeBlock(el)
3
+ -- Check if a 'language' attribute exists (from the lstlisting options).
4
+ if el.attributes.language then
5
+ -- Get the language name from the attribute.
6
+ -- We convert it to lowercase, as is standard for Markdown code fences.
7
+ local lang = el.attributes.language:lower()
8
+
9
+ -- A Markdown code block's language is determined by its first class.
10
+ -- We replace all existing classes with a new list containing only our language.
11
+ el.classes = pandoc.List{lang}
12
+
13
+ -- We clear all other attributes (like morekeywords) to keep the output clean.
14
+ el.attributes = {}
15
+ end
16
+
17
+ -- Return the modified (or original) element.
18
+ return el
19
+ end
@@ -0,0 +1,20 @@
1
+ -- A set of environment names to be removed completely.
2
+ -- Add the names of your custom environments to this list.
3
+ local environments_to_remove = {
4
+ latexonly = true,
5
+ ignora = true
6
+ }
7
+
8
+ -- This function is called for every 'Div' element in the document.
9
+ -- Pandoc parses LaTeX environments like \begin{solution}...\end{solution}
10
+ -- into Div elements with the environment name as a class.
11
+ function Div(div)
12
+ -- Check if the Div has a class and if that class is in our removal list.
13
+ if div.classes[1] and environments_to_remove[div.classes[1]] then
14
+ -- If it is, return an empty list to remove it from the output.
15
+ return {}
16
+ else
17
+ -- Otherwise, return nil to leave it unchanged.
18
+ return nil
19
+ end
20
+ end
@@ -0,0 +1,11 @@
1
+ -- This function is called for every 'Div' element in the document.
2
+ function Div(el)
3
+ -- Check if the Div has the class 'htmlonly'.
4
+ if el.classes:includes('htmlonly') then
5
+ -- If it does, return the content of the block,
6
+ -- without its wrapper
7
+ return el.content
8
+ end
9
+ -- For all other Divs, return them unchanged.
10
+ return el
11
+ end
@@ -0,0 +1,14 @@
1
+ # Japanese flag
2
+
3
+ ## Features
4
+
5
+ - Graphic problem: write an image
6
+ - Solutions in multiple programming languages: Python3 and C++
7
+ - Use of the `turtle` module
8
+ - Use of the `cairo` library
9
+ - Award in `.png`
10
+ - No input to be read
11
+
12
+ ## Abstract
13
+
14
+ Draw a Japanese flag.
@@ -0,0 +1,2 @@
1
+ handler: graphic
2
+ solution: Python3
@@ -0,0 +1,21 @@
1
+
2
+ \Problem{Bandera del Japó}
3
+
4
+ \Statement
5
+
6
+ Feu un programa que dibuixi la bandera del Japó.
7
+
8
+
9
+ \Input
10
+
11
+ Aquest problema no té entrada.
12
+
13
+
14
+ \Output
15
+
16
+ Cal generar una imatge $(600, 400)$ de fons \q{White},
17
+ i amb un cercle centrat de diàmetre 300 i color \q{Crimson}.
18
+
19
+
20
+ \Sample
21
+
@@ -0,0 +1,3 @@
1
+ email: roura@lsi.upc.edu
2
+ title: Bandera del Japó
3
+ author: Salvador Roura
@@ -0,0 +1 @@
1
+ Aquest problema no te entrada.
@@ -0,0 +1 @@
1
+ De debo, aqui l'entrada no importa.
@@ -0,0 +1,25 @@
1
+ #include <cairommconfig.h>
2
+ #include <cairomm/context.h>
3
+ #include <cairomm/surface.h>
4
+
5
+ using namespace Cairo;
6
+ using namespace std;
7
+
8
+ int main() {
9
+ RefPtr<ImageSurface> surface = ImageSurface::create(FORMAT_ARGB32, 600, 400);
10
+
11
+ RefPtr<Context> cr = Context::create(surface);
12
+
13
+ cr->save();
14
+ cr->set_source_rgb(1, 1, 1);
15
+ cr->paint();
16
+ cr->restore();
17
+
18
+ cr->save();
19
+ cr->set_source_rgb(220.0/255, 20.0/255, 60.0/255);
20
+ cr->arc(300, 200, 150, 0, 2 * M_PI);
21
+ cr->fill();
22
+ cr->restore();
23
+
24
+ surface->write_to_png("output.png");
25
+ }
@@ -0,0 +1,11 @@
1
+ from PIL import Image, ImageDraw
2
+
3
+
4
+ img = Image.new('RGB', (600, 400), 'White')
5
+ dib = ImageDraw.Draw(img)
6
+
7
+
8
+ dib.ellipse([150, 50, 449, 349], 'Crimson')
9
+
10
+
11
+ img.save("output.png")
@@ -0,0 +1,13 @@
1
+ # Square with turtle graphics
2
+
3
+ ## Features
4
+
5
+ - Graphic problem: write an image
6
+ - Python3 solution
7
+ - Use of the `turtle` module
8
+ - Award in `.png`
9
+ - No input to be read
10
+
11
+ ## Abstract
12
+
13
+ Draw a square.
@@ -0,0 +1,2 @@
1
+ handler: graphic
2
+ solution: Python3
@@ -0,0 +1,23 @@
1
+
2
+ \Problem{Tortuga --- Quadrat}
3
+
4
+ \Statement
5
+
6
+ Feu un programa que dibuixi un quadrat de mida 100 amb la cantonada inferior esquerra
7
+ situada a l'orígen de la tortuga.
8
+
9
+ \medskip
10
+
11
+ Només podeu utilitzar les comandes
12
+ \texttt{forward},
13
+ \texttt{right},
14
+ \texttt{left},
15
+ \texttt{done} del mòdul \texttt{turtle}.
16
+ Recordeu acabar el dibuix amb \texttt{done()}.
17
+
18
+ \medskip
19
+
20
+ En aquest problema no hi ha entrada.
21
+
22
+ \Sample
23
+
@@ -0,0 +1,3 @@
1
+ email: jpetit@cs.upc.edu
2
+ title: Tortuga - Quadrat
3
+ author: Jordi Petit
@@ -0,0 +1,11 @@
1
+ from turtle_pil import *
2
+
3
+ fd(100)
4
+ lt(90)
5
+ fd(100)
6
+ lt(90)
7
+ fd(100)
8
+ lt(90)
9
+ fd(100)
10
+
11
+ done()
@@ -0,0 +1,15 @@
1
+ # The bell tower of La Torrassa
2
+
3
+ ## Features
4
+
5
+ - Standard problem: read input and write output
6
+ - Statements in multiple languages
7
+ - Graphics in the statement
8
+ - Awards in .`png` and `.html`
9
+ - `.ops` file to increase time limit
10
+ - Simple simulation too slow (`slow.cc` solution included)
11
+ - `loosy` checker that converts PEs to ACs
12
+
13
+ ## Abstract
14
+
15
+ Count the number of bell rings during a certain lapse of time.
@@ -0,0 +1 @@
1
+ <p>Problem solved, congratulations!</p>