@jutge.org/toolkit 4.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 (140) hide show
  1. package/README.md +5 -0
  2. package/assets/images/jutge-toolkit.png +0 -0
  3. package/assets/images/jutge.png +0 -0
  4. package/assets/lua/fixCodeBlocks.lua +19 -0
  5. package/assets/lua/removeEnvs.lua +20 -0
  6. package/assets/lua/removeHtmlOnly.lua +11 -0
  7. package/assets/problems/function/valid-date.pbm/README.md +11 -0
  8. package/assets/problems/function/valid-date.pbm/award.html +1 -0
  9. package/assets/problems/function/valid-date.pbm/award.png +0 -0
  10. package/assets/problems/function/valid-date.pbm/ca/handler.yml +3 -0
  11. package/assets/problems/function/valid-date.pbm/ca/main.c +13 -0
  12. package/assets/problems/function/valid-date.pbm/ca/main.cc +14 -0
  13. package/assets/problems/function/valid-date.pbm/ca/main.java +16 -0
  14. package/assets/problems/function/valid-date.pbm/ca/main.py +6 -0
  15. package/assets/problems/function/valid-date.pbm/ca/problem.ca.tex +40 -0
  16. package/assets/problems/function/valid-date.pbm/ca/problem.ca.yml +3 -0
  17. package/assets/problems/function/valid-date.pbm/ca/random.inp +113976 -0
  18. package/assets/problems/function/valid-date.pbm/ca/sample.inp +4 -0
  19. package/assets/problems/function/valid-date.pbm/ca/solution.c +15 -0
  20. package/assets/problems/function/valid-date.pbm/ca/solution.cc +16 -0
  21. package/assets/problems/function/valid-date.pbm/ca/solution.java +17 -0
  22. package/assets/problems/function/valid-date.pbm/ca/solution.py +13 -0
  23. package/assets/problems/function/valid-date.pbm/en/handler.yml +3 -0
  24. package/assets/problems/function/valid-date.pbm/en/main.c +13 -0
  25. package/assets/problems/function/valid-date.pbm/en/main.cc +14 -0
  26. package/assets/problems/function/valid-date.pbm/en/main.java +16 -0
  27. package/assets/problems/function/valid-date.pbm/en/main.py +7 -0
  28. package/assets/problems/function/valid-date.pbm/en/problem.en.tex +46 -0
  29. package/assets/problems/function/valid-date.pbm/en/problem.en.yml +4 -0
  30. package/assets/problems/function/valid-date.pbm/en/random.inp +108200 -0
  31. package/assets/problems/function/valid-date.pbm/en/sample.inp +4 -0
  32. package/assets/problems/function/valid-date.pbm/en/solution.c +15 -0
  33. package/assets/problems/function/valid-date.pbm/en/solution.cc +16 -0
  34. package/assets/problems/function/valid-date.pbm/en/solution.java +20 -0
  35. package/assets/problems/function/valid-date.pbm/en/solution.py +13 -0
  36. package/assets/problems/graphic/japanese-flag.pbm/README.md +14 -0
  37. package/assets/problems/graphic/japanese-flag.pbm/award.png +0 -0
  38. package/assets/problems/graphic/japanese-flag.pbm/handler.yml +2 -0
  39. package/assets/problems/graphic/japanese-flag.pbm/problem.ca.tex +21 -0
  40. package/assets/problems/graphic/japanese-flag.pbm/problem.ca.yml +3 -0
  41. package/assets/problems/graphic/japanese-flag.pbm/sample-1.inp +1 -0
  42. package/assets/problems/graphic/japanese-flag.pbm/sample-2.inp +1 -0
  43. package/assets/problems/graphic/japanese-flag.pbm/solution.cc +25 -0
  44. package/assets/problems/graphic/japanese-flag.pbm/solution.py +11 -0
  45. package/assets/problems/graphic/tortuga.pbm/README.md +13 -0
  46. package/assets/problems/graphic/tortuga.pbm/award.png +0 -0
  47. package/assets/problems/graphic/tortuga.pbm/handler.yml +2 -0
  48. package/assets/problems/graphic/tortuga.pbm/problem.ca.tex +23 -0
  49. package/assets/problems/graphic/tortuga.pbm/problem.ca.yml +3 -0
  50. package/assets/problems/graphic/tortuga.pbm/sample.inp +0 -0
  51. package/assets/problems/graphic/tortuga.pbm/solution.py +11 -0
  52. package/assets/problems/standard/campanar-de-la-torrassa.pbm/README.md +15 -0
  53. package/assets/problems/standard/campanar-de-la-torrassa.pbm/award.html +1 -0
  54. package/assets/problems/standard/campanar-de-la-torrassa.pbm/award.png +0 -0
  55. package/assets/problems/standard/campanar-de-la-torrassa.pbm/campanar.png +0 -0
  56. package/assets/problems/standard/campanar-de-la-torrassa.pbm/handler.yml +2 -0
  57. package/assets/problems/standard/campanar-de-la-torrassa.pbm/problem.ca.tex +59 -0
  58. package/assets/problems/standard/campanar-de-la-torrassa.pbm/problem.ca.yml +3 -0
  59. package/assets/problems/standard/campanar-de-la-torrassa.pbm/problem.en.tex +52 -0
  60. package/assets/problems/standard/campanar-de-la-torrassa.pbm/problem.en.yml +4 -0
  61. package/assets/problems/standard/campanar-de-la-torrassa.pbm/sample.inp +7 -0
  62. package/assets/problems/standard/campanar-de-la-torrassa.pbm/slow.cc +29 -0
  63. package/assets/problems/standard/campanar-de-la-torrassa.pbm/solution.cc +48 -0
  64. package/assets/problems/standard/campanar-de-la-torrassa.pbm/test-1.inp +12 -0
  65. package/assets/problems/standard/campanar-de-la-torrassa.pbm/test-2.inp +100000 -0
  66. package/assets/problems/standard/campanar-de-la-torrassa.pbm/test-2.ops +1 -0
  67. package/assets/problems/standard/campanar-de-la-torrassa.pbm/test-b.inp +0 -0
  68. package/assets/problems/standard/maximum-of-2-integers.pbm/README.md +11 -0
  69. package/assets/problems/standard/maximum-of-2-integers.pbm/handler.yml +1 -0
  70. package/assets/problems/standard/maximum-of-2-integers.pbm/problem.ca.tex +17 -0
  71. package/assets/problems/standard/maximum-of-2-integers.pbm/problem.ca.yml +3 -0
  72. package/assets/problems/standard/maximum-of-2-integers.pbm/problem.en.tex +16 -0
  73. package/assets/problems/standard/maximum-of-2-integers.pbm/problem.en.yml +4 -0
  74. package/assets/problems/standard/maximum-of-2-integers.pbm/sample-1.inp +1 -0
  75. package/assets/problems/standard/maximum-of-2-integers.pbm/sample-2.inp +1 -0
  76. package/assets/problems/standard/maximum-of-2-integers.pbm/sample-3.inp +1 -0
  77. package/assets/problems/standard/maximum-of-2-integers.pbm/solution.c +18 -0
  78. package/assets/problems/standard/maximum-of-2-integers.pbm/solution.cc +13 -0
  79. package/assets/problems/standard/maximum-of-2-integers.pbm/solution.java +16 -0
  80. package/assets/problems/standard/maximum-of-2-integers.pbm/solution.py +5 -0
  81. package/assets/problems/standard/maximum-of-2-integers.pbm/test-1.inp +1 -0
  82. package/assets/problems/standard/maximum-of-2-integers.pbm/test-2.inp +1 -0
  83. package/assets/problems/standard/maximum-of-2-integers.pbm/test-3.inp +1 -0
  84. package/assets/problems/standard/maximum-of-2-integers.pbm/test-4.inp +1 -0
  85. package/assets/problems/standard/maximum-of-2-integers.pbm/test-5.inp +1 -0
  86. package/assets/problems/standard/treasures-in-a-map.pbm/README.md +12 -0
  87. package/assets/problems/standard/treasures-in-a-map.pbm/atzar.cc +85 -0
  88. package/assets/problems/standard/treasures-in-a-map.pbm/award.png +0 -0
  89. package/assets/problems/standard/treasures-in-a-map.pbm/generate-1.cc +26 -0
  90. package/assets/problems/standard/treasures-in-a-map.pbm/generate-2.cc +26 -0
  91. package/assets/problems/standard/treasures-in-a-map.pbm/generate-3.cc +26 -0
  92. package/assets/problems/standard/treasures-in-a-map.pbm/generate-4.cc +26 -0
  93. package/assets/problems/standard/treasures-in-a-map.pbm/handler.yml +1 -0
  94. package/assets/problems/standard/treasures-in-a-map.pbm/problem.ca.tex +40 -0
  95. package/assets/problems/standard/treasures-in-a-map.pbm/problem.ca.yml +3 -0
  96. package/assets/problems/standard/treasures-in-a-map.pbm/problem.en.tex +40 -0
  97. package/assets/problems/standard/treasures-in-a-map.pbm/problem.en.yml +4 -0
  98. package/assets/problems/standard/treasures-in-a-map.pbm/random-1.inp +24 -0
  99. package/assets/problems/standard/treasures-in-a-map.pbm/random-2.inp +27 -0
  100. package/assets/problems/standard/treasures-in-a-map.pbm/random-3.inp +38 -0
  101. package/assets/problems/standard/treasures-in-a-map.pbm/random-4.inp +50 -0
  102. package/assets/problems/standard/treasures-in-a-map.pbm/sample-1.inp +9 -0
  103. package/assets/problems/standard/treasures-in-a-map.pbm/sample-2.inp +6 -0
  104. package/assets/problems/standard/treasures-in-a-map.pbm/sample-3.inp +7 -0
  105. package/assets/problems/standard/treasures-in-a-map.pbm/solution.cc +38 -0
  106. package/assets/problems/standard/treasures-in-a-map.pbm/test-1.inp +5 -0
  107. package/assets/problems/standard/treasures-in-a-map.pbm/test-2.inp +6 -0
  108. package/assets/problems/standard/treasures-in-a-map.pbm/test-3.inp +6 -0
  109. package/assets/problems/standard/treasures-in-a-map.pbm/test-4.inp +9 -0
  110. package/assets/problems/standard/treasures-in-a-map.pbm/test-5.inp +10 -0
  111. package/assets/problems/standard/treasures-in-a-map.pbm/test-6.inp +9 -0
  112. package/assets/problems/standard/treasures-in-a-map.pbm/test-7.inp +12 -0
  113. package/assets/problems/standard/treasures-in-a-map.pbm/test-8.inp +3 -0
  114. package/assets/problems/standard/treasures-in-a-map.pbm/test-9.inp +37 -0
  115. package/assets/problems/standard/treasures-in-a-map.pbm/test-91.inp +52 -0
  116. package/assets/problems/standard/treasures-in-a-map.pbm/test-92.inp +25 -0
  117. package/assets/problems/standard/treasures-in-a-map.pbm/test-93.inp +3 -0
  118. package/assets/prompts/creators/create-solution.tpl.txt +10 -0
  119. package/assets/prompts/creators/create-statement.tpl.txt +21 -0
  120. package/assets/prompts/creators/create-translation.tpl.txt +5 -0
  121. package/assets/prompts/creators/private-test-cases.txt +6 -0
  122. package/assets/prompts/creators/sample-test-cases.txt +6 -0
  123. package/assets/prompts/creators/system-prompt.txt +2 -0
  124. package/assets/prompts/examples/statement-coda.tex +7 -0
  125. package/assets/prompts/examples/statement.tex +19 -0
  126. package/assets/prompts/generators/efficiency.md +41 -0
  127. package/assets/prompts/generators/hard.md +47 -0
  128. package/assets/prompts/generators/random.md +39 -0
  129. package/assets/prompts/proglangs/cc.md +3 -0
  130. package/assets/prompts/proglangs/py.md +40 -0
  131. package/assets/python/pyexec.py +29 -0
  132. package/assets/sty/judgeit.ca.sty +54 -0
  133. package/assets/sty/judgeit.de.sty +61 -0
  134. package/assets/sty/judgeit.en.sty +60 -0
  135. package/assets/sty/judgeit.es.sty +54 -0
  136. package/assets/sty/judgeit.fr.sty +59 -0
  137. package/assets/sty/judgeit.sty +326 -0
  138. package/assets/sty/picins.sty +579 -0
  139. package/dist/index.js +4246 -0
  140. package/package.json +103 -0
package/README.md ADDED
@@ -0,0 +1,5 @@
1
+ # new-jutge-toolkit
2
+
3
+ This repository contains a toolkit for creating and managing programming exercises on the Jutge.org platform.
4
+
5
+ This new repository is intended to replace the previous `jutge-toolkit` repository, providing enhanced features and improved usability for educators and developers.
Binary file
Binary file
@@ -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,11 @@
1
+ # Valid date
2
+
3
+ ## Features
4
+
5
+ - Function problem: students must implement a function that solves the problem
6
+ - Statements in multiple languages in separate directories
7
+ - Awards in award.png and award.html files
8
+
9
+ ## Abstract
10
+
11
+ Write a function that takes three integers representing a day, month, and year, and tells if the date is valid or not.
@@ -0,0 +1,3 @@
1
+ handler: std
2
+ source_modifier: no_main
3
+ func_name: es_data_valida
@@ -0,0 +1,13 @@
1
+ #include <stdio.h>
2
+
3
+ int es_data_valida(int d, int m, int a);
4
+
5
+ int main()
6
+ {
7
+ int d, m, a;
8
+ while (scanf("%d %d %d", &d, &m, &a) > 0)
9
+ {
10
+ printf("%s\n", es_data_valida(d, m, a) ? "true" : "false");
11
+ }
12
+ return 0;
13
+ }
@@ -0,0 +1,14 @@
1
+ #include <iostream>
2
+ using namespace std;
3
+
4
+ bool es_data_valida(int d, int m, int a);
5
+
6
+ int main()
7
+ {
8
+ int d, m, a;
9
+ while (cin >> d >> m >> a)
10
+ {
11
+ cout << (es_data_valida(d, m, a) ? "true" : "false") << endl;
12
+ }
13
+ return 0;
14
+ }
@@ -0,0 +1,16 @@
1
+ import java.util.Scanner;
2
+
3
+ class Main {
4
+
5
+ public static void main(String[] args) {
6
+ final Scanner sc = new Scanner(System.in);
7
+ while (sc.hasNextInt()) {
8
+ int d = sc.nextInt();
9
+ int m = sc.nextInt();
10
+ int a = sc.nextInt();
11
+ System.out.println(Solution.esDataValida(d, m, a) ? "true" : "false");
12
+ }
13
+
14
+ }
15
+
16
+ }
@@ -0,0 +1,6 @@
1
+ from yogi import *
2
+
3
+ for d in tokens(int):
4
+ m = read(int)
5
+ a = read(int)
6
+ print("true" if es_data_valida(d, m, a) else "false")
@@ -0,0 +1,40 @@
1
+
2
+ \Problem{Dates vàlides}
3
+
4
+ \Statement
5
+
6
+ Feu una funció que indiqui si la data definida
7
+ amb un dia @d@, mes @m@ i any @a@ és vàlida o no.
8
+
9
+ \Interface
10
+ \begin{tabular}{rl}
11
+ \CPP &
12
+ \begin{lstlisting}[language=C++,morekeywords={string}]
13
+ bool es_data_valida(int d, int m, int a);
14
+ \end{lstlisting}
15
+ \\
16
+ C &
17
+ \begin{lstlisting}[language=C]
18
+ int es_data_valida(int d, int m, int a);
19
+ \end{lstlisting}
20
+ \\
21
+ Java &
22
+ \begin{lstlisting}[language=Java,morekeywords={String}]
23
+ public static boolean esDataValida(int d, int m, int a);
24
+ \end{lstlisting}
25
+ \\
26
+ Python &
27
+ \begin{lstlisting}[language=Python]
28
+ es_data_valida(d, m, a) # returns bool
29
+ \end{lstlisting}
30
+ \\
31
+ &
32
+ \begin{lstlisting}[language=Python]
33
+ es_data_valida(d: int, m: int, a: int) -> bool
34
+ \end{lstlisting}
35
+ \end{tabular}
36
+
37
+ \Precondition
38
+ El paràmetre @a@ està entre 1800 i 9999, ambdós inclosos.
39
+
40
+ \ObservationNoMain
@@ -0,0 +1,3 @@
1
+ email: jpetit@cs.upc.edu
2
+ title: Dates vàlides
3
+ author: Jordi Petit