summaryrefslogtreecommitdiff
path: root/prolog
diff options
context:
space:
mode:
authorJure Žabkar <jure.zabkar@fri.uni-lj.si>2015-10-12 14:19:07 +0200
committerJure Žabkar <jure.zabkar@fri.uni-lj.si>2015-10-12 14:19:07 +0200
commit0a88716110994f789f764704a96791fdfb5fa288 (patch)
tree788c16ab578cf76eda358abc1d0587503d413a87 /prolog
parent1a7678b37a25a76aeaef7ebb225f85406b19f928 (diff)
parent5a01c2bb184152c6ccc3c536e9b857d247bc55ad (diff)
Merge branch 'master' of ssh://212.235.189.51:22122/codeq-problems
Conflicts: robot/problems/introduction/forward/en.py robot/problems/introduction/forward/sl.py
Diffstat (limited to 'prolog')
-rw-r--r--prolog/common.py2
-rw-r--r--prolog/problems/clp_fd/common.py2
-rw-r--r--prolog/problems/clp_fd/gcd_3/common.py1
-rw-r--r--prolog/problems/clp_fd/gcd_3/en.py1
-rw-r--r--prolog/problems/clp_fd/magic_1/common.py1
-rw-r--r--prolog/problems/clp_fd/magic_1/en.py1
-rw-r--r--prolog/problems/clp_fd/puzzle_abc_3/common.py1
-rw-r--r--prolog/problems/clp_fd/puzzle_abc_3/en.py1
-rw-r--r--prolog/problems/clp_fd/puzzle_beth_1/common.py1
-rw-r--r--prolog/problems/clp_fd/puzzle_beth_1/en.py1
-rw-r--r--prolog/problems/clp_fd/puzzle_momson_2/common.py1
-rw-r--r--prolog/problems/clp_fd/puzzle_momson_2/en.py1
-rw-r--r--prolog/problems/clp_fd/puzzle_ratio_2/common.py1
-rw-r--r--prolog/problems/clp_fd/puzzle_ratio_2/en.py1
-rw-r--r--prolog/problems/clp_fd/tobase_3/common.py1
-rw-r--r--prolog/problems/clp_fd/tobase_3/en.py1
-rw-r--r--prolog/problems/clp_r/bounding_box_3/common.py1
-rw-r--r--prolog/problems/clp_r/bounding_box_3/en.py1
-rw-r--r--prolog/problems/clp_r/center_3/common.py1
-rw-r--r--prolog/problems/clp_r/center_3/en.py1
-rw-r--r--prolog/problems/clp_r/common.py2
-rw-r--r--prolog/problems/clp_r/linear_opt_3/common.py1
-rw-r--r--prolog/problems/clp_r/linear_opt_3/en.py1
-rw-r--r--prolog/problems/clp_r/max_sum_2/common.py1
-rw-r--r--prolog/problems/clp_r/max_sum_2/en.py1
-rw-r--r--prolog/problems/clp_r/megabytes_2/common.py1
-rw-r--r--prolog/problems/clp_r/megabytes_2/en.py1
-rw-r--r--prolog/problems/clp_r/turkey_3/common.py1
-rw-r--r--prolog/problems/clp_r/turkey_3/en.py1
-rw-r--r--prolog/problems/dcg/ab_2/common.py1
-rw-r--r--prolog/problems/dcg/ab_2/en.py1
-rw-r--r--prolog/problems/dcg/common.py2
-rw-r--r--prolog/problems/dcg/digit_2/common.py1
-rw-r--r--prolog/problems/dcg/digit_2/en.py1
-rw-r--r--prolog/problems/dcg/expr_2/common.py1
-rw-r--r--prolog/problems/dcg/expr_2/en.py1
-rw-r--r--prolog/problems/dcg/expr_3/common.py1
-rw-r--r--prolog/problems/dcg/expr_3/en.py1
-rw-r--r--prolog/problems/dcg/flower_2/common.py1
-rw-r--r--prolog/problems/dcg/flower_2/en.py1
-rw-r--r--prolog/problems/dcg/number_2/common.py1
-rw-r--r--prolog/problems/dcg/number_2/en.py1
-rw-r--r--prolog/problems/dcg/number_3/common.py1
-rw-r--r--prolog/problems/dcg/number_3/en.py1
-rw-r--r--prolog/problems/dcg/number_proper_2/common.py1
-rw-r--r--prolog/problems/dcg/number_proper_2/en.py1
-rw-r--r--prolog/problems/dcg/paren_2/common.py1
-rw-r--r--prolog/problems/dcg/paren_2/en.py1
-rw-r--r--prolog/problems/dcg/paren_3/common.py1
-rw-r--r--prolog/problems/dcg/paren_3/en.py1
-rw-r--r--prolog/problems/denotational_semantics/algol_3/common.py1
-rw-r--r--prolog/problems/denotational_semantics/algol_3/en.py1
-rw-r--r--prolog/problems/denotational_semantics/algol_for_3/common.py1
-rw-r--r--prolog/problems/denotational_semantics/algol_for_3/en.py1
-rw-r--r--prolog/problems/denotational_semantics/algol_if_3/common.py1
-rw-r--r--prolog/problems/denotational_semantics/algol_if_3/en.py1
-rw-r--r--prolog/problems/denotational_semantics/common.py2
-rw-r--r--prolog/problems/denotational_semantics/prog_8puzzle_2/common.py1
-rw-r--r--prolog/problems/denotational_semantics/prog_8puzzle_2/en.py1
-rw-r--r--prolog/problems/denotational_semantics/prog_8puzzle_3/common.py1
-rw-r--r--prolog/problems/denotational_semantics/prog_8puzzle_3/en.py1
-rw-r--r--prolog/problems/denotational_semantics/prog_listswap_2/common.py1
-rw-r--r--prolog/problems/denotational_semantics/prog_listswap_2/en.py1
-rw-r--r--prolog/problems/denotational_semantics/prog_listswap_3/common.py1
-rw-r--r--prolog/problems/denotational_semantics/prog_listswap_3/en.py1
-rw-r--r--prolog/problems/family_relations/ancestor_2/common.py1
-rw-r--r--prolog/problems/family_relations/ancestor_2/en.py1
-rw-r--r--prolog/problems/family_relations/ancestor_2/sl.py1
-rw-r--r--prolog/problems/family_relations/aunt_2/common.py1
-rw-r--r--prolog/problems/family_relations/aunt_2/en.py1
-rw-r--r--prolog/problems/family_relations/aunt_2/sl.py1
-rw-r--r--prolog/problems/family_relations/brother_2/common.py1
-rw-r--r--prolog/problems/family_relations/brother_2/en.py1
-rw-r--r--prolog/problems/family_relations/brother_2/sl.py1
-rw-r--r--prolog/problems/family_relations/common.py2
-rw-r--r--prolog/problems/family_relations/connected_3/common.py1
-rw-r--r--prolog/problems/family_relations/connected_3/en.py1
-rw-r--r--prolog/problems/family_relations/cousin_2/common.py1
-rw-r--r--prolog/problems/family_relations/cousin_2/en.py1
-rw-r--r--prolog/problems/family_relations/cousin_2/sl.py1
-rw-r--r--prolog/problems/family_relations/descendant_2/common.py1
-rw-r--r--prolog/problems/family_relations/descendant_2/en.py1
-rw-r--r--prolog/problems/family_relations/descendant_2/sl.py1
-rw-r--r--prolog/problems/family_relations/father_2/common.py1
-rw-r--r--prolog/problems/family_relations/father_2/en.py1
-rw-r--r--prolog/problems/family_relations/father_2/sl.py1
-rw-r--r--prolog/problems/family_relations/grandparent_2/common.py1
-rw-r--r--prolog/problems/family_relations/grandparent_2/en.py1
-rw-r--r--prolog/problems/family_relations/grandparent_2/sl.py1
-rw-r--r--prolog/problems/family_relations/mother_2/common.py1
-rw-r--r--prolog/problems/family_relations/mother_2/en.py1
-rw-r--r--prolog/problems/family_relations/mother_2/sl.py1
-rw-r--r--prolog/problems/family_relations/sister_2/common.py1
-rw-r--r--prolog/problems/family_relations/sister_2/en.py1
-rw-r--r--prolog/problems/family_relations/sister_2/sl.py1
-rw-r--r--prolog/problems/license_plates/checklicenseplate_3/common.py1
-rw-r--r--prolog/problems/license_plates/checklicenseplate_3/en.py1
-rw-r--r--prolog/problems/license_plates/common.py2
-rw-r--r--prolog/problems/license_plates/firstminus_2/common.py1
-rw-r--r--prolog/problems/license_plates/firstminus_2/en.py1
-rw-r--r--prolog/problems/license_plates/genexp_2/common.py1
-rw-r--r--prolog/problems/license_plates/genexp_2/en.py1
-rw-r--r--prolog/problems/license_plates/getdigits_2/common.py1
-rw-r--r--prolog/problems/license_plates/getdigits_2/en.py1
-rw-r--r--prolog/problems/license_plates/joindigits_2/common.py1
-rw-r--r--prolog/problems/license_plates/joindigits_2/en.py1
-rw-r--r--prolog/problems/lists/common.py2
-rw-r--r--prolog/problems/lists/conc_3/common.py1
-rw-r--r--prolog/problems/lists/conc_3/en.py1
-rw-r--r--prolog/problems/lists/count_3/common.py1
-rw-r--r--prolog/problems/lists/count_3/en.py1
-rw-r--r--prolog/problems/lists/del_3/common.py1
-rw-r--r--prolog/problems/lists/del_3/en.py1
-rw-r--r--prolog/problems/lists/divide_3/common.py1
-rw-r--r--prolog/problems/lists/divide_3/en.py1
-rw-r--r--prolog/problems/lists/dup_2/common.py1
-rw-r--r--prolog/problems/lists/dup_2/en.py1
-rw-r--r--prolog/problems/lists/evenlen_1_+_oddlen_1/common.py1
-rw-r--r--prolog/problems/lists/evenlen_1_+_oddlen_1/en.py1
-rw-r--r--prolog/problems/lists/insert_3/common.py1
-rw-r--r--prolog/problems/lists/insert_3/en.py1
-rw-r--r--prolog/problems/lists/len_2/common.py1
-rw-r--r--prolog/problems/lists/len_2/en.py1
-rw-r--r--prolog/problems/lists/max_2/common.py1
-rw-r--r--prolog/problems/lists/max_2/en.py1
-rw-r--r--prolog/problems/lists/memb_2/common.py1
-rw-r--r--prolog/problems/lists/memb_2/en.py1
-rw-r--r--prolog/problems/lists/min_2/common.py1
-rw-r--r--prolog/problems/lists/min_2/en.py1
-rw-r--r--prolog/problems/lists/palindrome_1/common.py1
-rw-r--r--prolog/problems/lists/palindrome_1/en.py1
-rw-r--r--prolog/problems/lists/permute_2/common.py1
-rw-r--r--prolog/problems/lists/permute_2/en.py1
-rw-r--r--prolog/problems/lists/rev_2/common.py1
-rw-r--r--prolog/problems/lists/rev_2/en.py1
-rw-r--r--prolog/problems/lists/shiftleft_2/common.py1
-rw-r--r--prolog/problems/lists/shiftleft_2/en.py1
-rw-r--r--prolog/problems/lists/shiftright_2/common.py1
-rw-r--r--prolog/problems/lists/shiftright_2/en.py1
-rw-r--r--prolog/problems/lists/sublist_2/common.py1
-rw-r--r--prolog/problems/lists/sublist_2/en.py1
-rw-r--r--prolog/problems/lists/sum_2/common.py1
-rw-r--r--prolog/problems/lists/sum_2/en.py1
-rw-r--r--prolog/problems/old_exams/common.py1
-rw-r--r--prolog/problems/old_exams/pascal_3/common.py1
-rw-r--r--prolog/problems/old_exams/pascal_3/en.py1
-rw-r--r--prolog/problems/other/common.py1
-rw-r--r--prolog/problems/other/genlist_4/common.py1
-rw-r--r--prolog/problems/other/genlist_4/en.py1
-rw-r--r--prolog/problems/sets/common.py2
-rw-r--r--prolog/problems/sets/diff_3/common.py1
-rw-r--r--prolog/problems/sets/diff_3/en.py1
-rw-r--r--prolog/problems/sets/intersect_3/common.py1
-rw-r--r--prolog/problems/sets/intersect_3/en.py1
-rw-r--r--prolog/problems/sets/is_subset_2/common.py1
-rw-r--r--prolog/problems/sets/is_subset_2/en.py1
-rw-r--r--prolog/problems/sets/is_superset_2/common.py1
-rw-r--r--prolog/problems/sets/is_superset_2/en.py1
-rw-r--r--prolog/problems/sets/powerset_2/common.py1
-rw-r--r--prolog/problems/sets/powerset_2/en.py1
-rw-r--r--prolog/problems/sets/subset_2/common.py1
-rw-r--r--prolog/problems/sets/subset_2/en.py1
-rw-r--r--prolog/problems/sets/union_3/common.py1
-rw-r--r--prolog/problems/sets/union_3/en.py1
-rw-r--r--prolog/problems/sorting/common.py2
-rw-r--r--prolog/problems/sorting/is_sorted_1/common.py1
-rw-r--r--prolog/problems/sorting/is_sorted_1/en.py1
-rw-r--r--prolog/problems/sorting/isort_2/common.py1
-rw-r--r--prolog/problems/sorting/isort_2/en.py1
-rw-r--r--prolog/problems/sorting/pivoting_4/common.py1
-rw-r--r--prolog/problems/sorting/pivoting_4/en.py1
-rw-r--r--prolog/problems/sorting/quick_sort_2/common.py1
-rw-r--r--prolog/problems/sorting/quick_sort_2/en.py1
-rw-r--r--prolog/problems/sorting/sins_3/common.py1
-rw-r--r--prolog/problems/sorting/sins_3/en.py1
-rw-r--r--prolog/problems/sorting/slowest_sort_ever_2/common.py1
-rw-r--r--prolog/problems/sorting/slowest_sort_ever_2/en.py1
-rw-r--r--prolog/problems/trees/common.py2
-rw-r--r--prolog/problems/trees/deletebt_3/common.py1
-rw-r--r--prolog/problems/trees/deletebt_3/en.py1
-rw-r--r--prolog/problems/trees/depthbt_2/common.py1
-rw-r--r--prolog/problems/trees/depthbt_2/en.py1
-rw-r--r--prolog/problems/trees/insertbt_3/common.py1
-rw-r--r--prolog/problems/trees/insertbt_3/en.py1
-rw-r--r--prolog/problems/trees/maxt_2/common.py1
-rw-r--r--prolog/problems/trees/maxt_2/en.py1
-rw-r--r--prolog/problems/trees/memberbt_2/common.py1
-rw-r--r--prolog/problems/trees/memberbt_2/en.py1
-rw-r--r--prolog/problems/trees/membert_2/common.py1
-rw-r--r--prolog/problems/trees/membert_2/en.py1
-rw-r--r--prolog/problems/trees/mirrorbt_2/common.py1
-rw-r--r--prolog/problems/trees/mirrorbt_2/en.py1
-rw-r--r--prolog/problems/trees/numberbt_2/common.py1
-rw-r--r--prolog/problems/trees/numberbt_2/en.py1
-rw-r--r--prolog/problems/trees/tolistbt_2/common.py1
-rw-r--r--prolog/problems/trees/tolistbt_2/en.py1
196 files changed, 24 insertions, 183 deletions
diff --git a/prolog/common.py b/prolog/common.py
index 654ab81..1ab4522 100644
--- a/prolog/common.py
+++ b/prolog/common.py
@@ -4,6 +4,8 @@ import operator
import prolog.engine
from server.hints import Hint, HintSequence
+id = 1
+
hint_type = {
'no_hint': Hint('no_hint'),
'program_already_correct': Hint('program_already_correct'),
diff --git a/prolog/problems/clp_fd/common.py b/prolog/problems/clp_fd/common.py
new file mode 100644
index 0000000..3b1f9cf
--- /dev/null
+++ b/prolog/problems/clp_fd/common.py
@@ -0,0 +1,2 @@
+id = 8
+number = 7
diff --git a/prolog/problems/clp_fd/gcd_3/common.py b/prolog/problems/clp_fd/gcd_3/common.py
index a24926f..7cd6623 100644
--- a/prolog/problems/clp_fd/gcd_3/common.py
+++ b/prolog/problems/clp_fd/gcd_3/common.py
@@ -1,7 +1,6 @@
# coding=utf-8
id = 149
-group = 'clp_fd'
number = 61
visible = True
facts = None
diff --git a/prolog/problems/clp_fd/gcd_3/en.py b/prolog/problems/clp_fd/gcd_3/en.py
index d6c92b7..7953eb1 100644
--- a/prolog/problems/clp_fd/gcd_3/en.py
+++ b/prolog/problems/clp_fd/gcd_3/en.py
@@ -1,6 +1,5 @@
# coding=utf-8
-id = 149
name = 'gcd/3'
slug = 'greatest common divisor'
diff --git a/prolog/problems/clp_fd/magic_1/common.py b/prolog/problems/clp_fd/magic_1/common.py
index 93286e7..17a9199 100644
--- a/prolog/problems/clp_fd/magic_1/common.py
+++ b/prolog/problems/clp_fd/magic_1/common.py
@@ -1,7 +1,6 @@
# coding=utf-8
id = 151
-group = 'clp_fd'
number = 60
visible = True
facts = None
diff --git a/prolog/problems/clp_fd/magic_1/en.py b/prolog/problems/clp_fd/magic_1/en.py
index 04c1481..c8b5a1a 100644
--- a/prolog/problems/clp_fd/magic_1/en.py
+++ b/prolog/problems/clp_fd/magic_1/en.py
@@ -1,6 +1,5 @@
# coding=utf-8
-id = 151
name = 'magic/1'
slug = 'generate a 3x3 magic square'
diff --git a/prolog/problems/clp_fd/puzzle_abc_3/common.py b/prolog/problems/clp_fd/puzzle_abc_3/common.py
index 42463a6..1563e1f 100644
--- a/prolog/problems/clp_fd/puzzle_abc_3/common.py
+++ b/prolog/problems/clp_fd/puzzle_abc_3/common.py
@@ -1,7 +1,6 @@
# coding=utf-8
id = 153
-group = 'clp_fd'
number = 57
visible = True
facts = None
diff --git a/prolog/problems/clp_fd/puzzle_abc_3/en.py b/prolog/problems/clp_fd/puzzle_abc_3/en.py
index 3d70715..899b428 100644
--- a/prolog/problems/clp_fd/puzzle_abc_3/en.py
+++ b/prolog/problems/clp_fd/puzzle_abc_3/en.py
@@ -1,6 +1,5 @@
# coding=utf-8
-id = 153
name = 'puzzle_abc/3'
slug = 'age puzzle: abc'
diff --git a/prolog/problems/clp_fd/puzzle_beth_1/common.py b/prolog/problems/clp_fd/puzzle_beth_1/common.py
index 3321d52..bf81396 100644
--- a/prolog/problems/clp_fd/puzzle_beth_1/common.py
+++ b/prolog/problems/clp_fd/puzzle_beth_1/common.py
@@ -1,7 +1,6 @@
# coding=utf-8
id = 155
-group = 'clp_fd'
number = 56
visible = True
facts = None
diff --git a/prolog/problems/clp_fd/puzzle_beth_1/en.py b/prolog/problems/clp_fd/puzzle_beth_1/en.py
index fed373c..3dea18c 100644
--- a/prolog/problems/clp_fd/puzzle_beth_1/en.py
+++ b/prolog/problems/clp_fd/puzzle_beth_1/en.py
@@ -1,6 +1,5 @@
# coding=utf-8
-id = 155
name = 'puzzle_beth/1'
slug = 'age puzzle: beth'
diff --git a/prolog/problems/clp_fd/puzzle_momson_2/common.py b/prolog/problems/clp_fd/puzzle_momson_2/common.py
index 94e5aa2..9cef246 100644
--- a/prolog/problems/clp_fd/puzzle_momson_2/common.py
+++ b/prolog/problems/clp_fd/puzzle_momson_2/common.py
@@ -1,7 +1,6 @@
# coding=utf-8
id = 152
-group = 'clp_fd'
number = 58
visible = True
facts = None
diff --git a/prolog/problems/clp_fd/puzzle_momson_2/en.py b/prolog/problems/clp_fd/puzzle_momson_2/en.py
index cf97abf..b9b26cb 100644
--- a/prolog/problems/clp_fd/puzzle_momson_2/en.py
+++ b/prolog/problems/clp_fd/puzzle_momson_2/en.py
@@ -1,6 +1,5 @@
# coding=utf-8
-id = 152
name = 'puzzle_momson/2'
slug = 'age puzzle: mom & son'
diff --git a/prolog/problems/clp_fd/puzzle_ratio_2/common.py b/prolog/problems/clp_fd/puzzle_ratio_2/common.py
index baf7c02..73b9234 100644
--- a/prolog/problems/clp_fd/puzzle_ratio_2/common.py
+++ b/prolog/problems/clp_fd/puzzle_ratio_2/common.py
@@ -1,7 +1,6 @@
# coding=utf-8
id = 154
-group = 'clp_fd'
number = 59
visible = True
facts = None
diff --git a/prolog/problems/clp_fd/puzzle_ratio_2/en.py b/prolog/problems/clp_fd/puzzle_ratio_2/en.py
index 28fc999..2cb3039 100644
--- a/prolog/problems/clp_fd/puzzle_ratio_2/en.py
+++ b/prolog/problems/clp_fd/puzzle_ratio_2/en.py
@@ -1,6 +1,5 @@
# coding=utf-8
-id = 154
name = 'puzzle_ratio/2'
slug = 'age puzzle: ratio'
diff --git a/prolog/problems/clp_fd/tobase_3/common.py b/prolog/problems/clp_fd/tobase_3/common.py
index 3a29dbe..5d160d7 100644
--- a/prolog/problems/clp_fd/tobase_3/common.py
+++ b/prolog/problems/clp_fd/tobase_3/common.py
@@ -1,7 +1,6 @@
# coding=utf-8
id = 150
-group = 'clp_fd'
number = 62
visible = True
facts = None
diff --git a/prolog/problems/clp_fd/tobase_3/en.py b/prolog/problems/clp_fd/tobase_3/en.py
index a778ccb..c05ab2a 100644
--- a/prolog/problems/clp_fd/tobase_3/en.py
+++ b/prolog/problems/clp_fd/tobase_3/en.py
@@ -1,6 +1,5 @@
# coding=utf-8
-id = 150
name = 'tobase/3'
slug = 'convert numbers from/to the decimal system'
diff --git a/prolog/problems/clp_r/bounding_box_3/common.py b/prolog/problems/clp_r/bounding_box_3/common.py
index dc6b047..94be5ee 100644
--- a/prolog/problems/clp_r/bounding_box_3/common.py
+++ b/prolog/problems/clp_r/bounding_box_3/common.py
@@ -1,7 +1,6 @@
# coding=utf-8
id = 157
-group = 'clp_r'
number = 67
visible = True
facts = None
diff --git a/prolog/problems/clp_r/bounding_box_3/en.py b/prolog/problems/clp_r/bounding_box_3/en.py
index 714f8a4..8c6a9f7 100644
--- a/prolog/problems/clp_r/bounding_box_3/en.py
+++ b/prolog/problems/clp_r/bounding_box_3/en.py
@@ -1,6 +1,5 @@
# coding=utf-8
-id = 157
name = 'bounding_box/3'
slug = 'find the smallest bounding box'
diff --git a/prolog/problems/clp_r/center_3/common.py b/prolog/problems/clp_r/center_3/common.py
index 340cd7f..5391180 100644
--- a/prolog/problems/clp_r/center_3/common.py
+++ b/prolog/problems/clp_r/center_3/common.py
@@ -1,7 +1,6 @@
# coding=utf-8
id = 158
-group = 'clp_r'
number = 68
visible = True
facts = None
diff --git a/prolog/problems/clp_r/center_3/en.py b/prolog/problems/clp_r/center_3/en.py
index 2c1f882..ae5aeb8 100644
--- a/prolog/problems/clp_r/center_3/en.py
+++ b/prolog/problems/clp_r/center_3/en.py
@@ -1,6 +1,5 @@
# coding=utf-8
-id = 158
name = 'center/3'
slug = 'find central points'
diff --git a/prolog/problems/clp_r/common.py b/prolog/problems/clp_r/common.py
new file mode 100644
index 0000000..2238250
--- /dev/null
+++ b/prolog/problems/clp_r/common.py
@@ -0,0 +1,2 @@
+id = 9
+number = 8
diff --git a/prolog/problems/clp_r/linear_opt_3/common.py b/prolog/problems/clp_r/linear_opt_3/common.py
index 35f582d..f6e8840 100644
--- a/prolog/problems/clp_r/linear_opt_3/common.py
+++ b/prolog/problems/clp_r/linear_opt_3/common.py
@@ -1,7 +1,6 @@
# coding=utf-8
id = 159
-group = 'clp_r'
number = 63
visible = True
facts = None
diff --git a/prolog/problems/clp_r/linear_opt_3/en.py b/prolog/problems/clp_r/linear_opt_3/en.py
index 58530a9..848a30d 100644
--- a/prolog/problems/clp_r/linear_opt_3/en.py
+++ b/prolog/problems/clp_r/linear_opt_3/en.py
@@ -1,6 +1,5 @@
# coding=utf-8
-id = 159
name = 'linear_opt/3'
slug = 'linear optimization'
diff --git a/prolog/problems/clp_r/max_sum_2/common.py b/prolog/problems/clp_r/max_sum_2/common.py
index 71c3005..d025090 100644
--- a/prolog/problems/clp_r/max_sum_2/common.py
+++ b/prolog/problems/clp_r/max_sum_2/common.py
@@ -1,7 +1,6 @@
# coding=utf-8
id = 156
-group = 'clp_r'
number = 66
visible = True
facts = None
diff --git a/prolog/problems/clp_r/max_sum_2/en.py b/prolog/problems/clp_r/max_sum_2/en.py
index 6d0c1d2..eeff4cd 100644
--- a/prolog/problems/clp_r/max_sum_2/en.py
+++ b/prolog/problems/clp_r/max_sum_2/en.py
@@ -1,6 +1,5 @@
# coding=utf-8
-id = 156
name = 'max_sum/2'
slug = 'find maximal adjacent elements'
diff --git a/prolog/problems/clp_r/megabytes_2/common.py b/prolog/problems/clp_r/megabytes_2/common.py
index aefab2d..1f5bdd5 100644
--- a/prolog/problems/clp_r/megabytes_2/common.py
+++ b/prolog/problems/clp_r/megabytes_2/common.py
@@ -1,7 +1,6 @@
# coding=utf-8
id = 160
-group = 'clp_r'
number = 65
visible = True
facts = None
diff --git a/prolog/problems/clp_r/megabytes_2/en.py b/prolog/problems/clp_r/megabytes_2/en.py
index cb355f1..01fdfff 100644
--- a/prolog/problems/clp_r/megabytes_2/en.py
+++ b/prolog/problems/clp_r/megabytes_2/en.py
@@ -1,6 +1,5 @@
# coding=utf-8
-id = 160
name = 'megabytes/2'
slug = 'convert mebibytes to megabytes'
diff --git a/prolog/problems/clp_r/turkey_3/common.py b/prolog/problems/clp_r/turkey_3/common.py
index 42f4119..b7bc7f4 100644
--- a/prolog/problems/clp_r/turkey_3/common.py
+++ b/prolog/problems/clp_r/turkey_3/common.py
@@ -1,7 +1,6 @@
# coding=utf-8
id = 161
-group = 'clp_r'
number = 64
visible = True
facts = None
diff --git a/prolog/problems/clp_r/turkey_3/en.py b/prolog/problems/clp_r/turkey_3/en.py
index b6e1d55..979033d 100644
--- a/prolog/problems/clp_r/turkey_3/en.py
+++ b/prolog/problems/clp_r/turkey_3/en.py
@@ -1,6 +1,5 @@
# coding=utf-8
-id = 161
name = 'turkey/3'
slug = 'turkey feed'
diff --git a/prolog/problems/dcg/ab_2/common.py b/prolog/problems/dcg/ab_2/common.py
index f473a0b..b9109fc 100644
--- a/prolog/problems/dcg/ab_2/common.py
+++ b/prolog/problems/dcg/ab_2/common.py
@@ -1,7 +1,6 @@
# coding=utf-8
id = 162
-group = 'dcg'
number = 69
visible = True
facts = None
diff --git a/prolog/problems/dcg/ab_2/en.py b/prolog/problems/dcg/ab_2/en.py
index 20c8317..4dd81a5 100644
--- a/prolog/problems/dcg/ab_2/en.py
+++ b/prolog/problems/dcg/ab_2/en.py
@@ -1,6 +1,5 @@
# coding=utf-8
-id = 162
name = 'ab/2'
slug = 'a*b*'
diff --git a/prolog/problems/dcg/common.py b/prolog/problems/dcg/common.py
new file mode 100644
index 0000000..4992f2d
--- /dev/null
+++ b/prolog/problems/dcg/common.py
@@ -0,0 +1,2 @@
+id = 10
+number = 9
diff --git a/prolog/problems/dcg/digit_2/common.py b/prolog/problems/dcg/digit_2/common.py
index 5b31e04..571df40 100644
--- a/prolog/problems/dcg/digit_2/common.py
+++ b/prolog/problems/dcg/digit_2/common.py
@@ -1,7 +1,6 @@
# coding=utf-8
id = 164
-group = 'dcg'
number = 71
visible = True
facts = None
diff --git a/prolog/problems/dcg/digit_2/en.py b/prolog/problems/dcg/digit_2/en.py
index 3172a21..80b7be0 100644
--- a/prolog/problems/dcg/digit_2/en.py
+++ b/prolog/problems/dcg/digit_2/en.py
@@ -1,6 +1,5 @@
# coding=utf-8
-id = 164
name = 'digit/2'
slug = 'a decimal digit'
diff --git a/prolog/problems/dcg/expr_2/common.py b/prolog/problems/dcg/expr_2/common.py
index f5c4aa0..2420ebe 100644
--- a/prolog/problems/dcg/expr_2/common.py
+++ b/prolog/problems/dcg/expr_2/common.py
@@ -1,7 +1,6 @@
# coding=utf-8
id = 170
-group = 'dcg'
number = 77
visible = False
facts = None
diff --git a/prolog/problems/dcg/expr_2/en.py b/prolog/problems/dcg/expr_2/en.py
index d4b0dc9..88f1731 100644
--- a/prolog/problems/dcg/expr_2/en.py
+++ b/prolog/problems/dcg/expr_2/en.py
@@ -1,6 +1,5 @@
# coding=utf-8
-id = 170
name = 'expr/2'
slug = 'arithmetic expressions'
diff --git a/prolog/problems/dcg/expr_3/common.py b/prolog/problems/dcg/expr_3/common.py
index 651a1b9..10220a8 100644
--- a/prolog/problems/dcg/expr_3/common.py
+++ b/prolog/problems/dcg/expr_3/common.py
@@ -1,7 +1,6 @@
# coding=utf-8
id = 171
-group = 'dcg'
number = 78
visible = False
facts = None
diff --git a/prolog/problems/dcg/expr_3/en.py b/prolog/problems/dcg/expr_3/en.py
index 659503d..298ebeb 100644
--- a/prolog/problems/dcg/expr_3/en.py
+++ b/prolog/problems/dcg/expr_3/en.py
@@ -1,6 +1,5 @@
# coding=utf-8
-id = 171
name = 'expr/3'
slug = 'arithmetic expressions with meaning'
diff --git a/prolog/problems/dcg/flower_2/common.py b/prolog/problems/dcg/flower_2/common.py
index 5865da9..e28d10d 100644
--- a/prolog/problems/dcg/flower_2/common.py
+++ b/prolog/problems/dcg/flower_2/common.py
@@ -1,7 +1,6 @@
# coding=utf-8
id = 163
-group = 'dcg'
number = 70
visible = True
facts = None
diff --git a/prolog/problems/dcg/flower_2/en.py b/prolog/problems/dcg/flower_2/en.py
index 0267278..e7272c5 100644
--- a/prolog/problems/dcg/flower_2/en.py
+++ b/prolog/problems/dcg/flower_2/en.py
@@ -1,6 +1,5 @@
# coding=utf-8
-id = 163
name = 'flower/2'
slug = 'words like +++--+++'
diff --git a/prolog/problems/dcg/number_2/common.py b/prolog/problems/dcg/number_2/common.py
index 6d33e12..a05ca18 100644
--- a/prolog/problems/dcg/number_2/common.py
+++ b/prolog/problems/dcg/number_2/common.py
@@ -1,7 +1,6 @@
# coding=utf-8
id = 165
-group = 'dcg'
number = 72
visible = True
facts = None
diff --git a/prolog/problems/dcg/number_2/en.py b/prolog/problems/dcg/number_2/en.py
index 8e88655..29a4366 100644
--- a/prolog/problems/dcg/number_2/en.py
+++ b/prolog/problems/dcg/number_2/en.py
@@ -1,6 +1,5 @@
# coding=utf-8
-id = 165
name = 'number/2'
slug = 'numbers with potential leading zeros'
diff --git a/prolog/problems/dcg/number_3/common.py b/prolog/problems/dcg/number_3/common.py
index 0e6f2b0..2977392 100644
--- a/prolog/problems/dcg/number_3/common.py
+++ b/prolog/problems/dcg/number_3/common.py
@@ -1,7 +1,6 @@
# coding=utf-8
id = 167
-group = 'dcg'
number = 74
visible = True
facts = None
diff --git a/prolog/problems/dcg/number_3/en.py b/prolog/problems/dcg/number_3/en.py
index b73e16d..c2f9c3d 100644
--- a/prolog/problems/dcg/number_3/en.py
+++ b/prolog/problems/dcg/number_3/en.py
@@ -1,6 +1,5 @@
# coding=utf-8
-id = 167
name = 'number/3'
slug = 'numbers with meaning'
diff --git a/prolog/problems/dcg/number_proper_2/common.py b/prolog/problems/dcg/number_proper_2/common.py
index c6b535b..a3e3592 100644
--- a/prolog/problems/dcg/number_proper_2/common.py
+++ b/prolog/problems/dcg/number_proper_2/common.py
@@ -1,7 +1,6 @@
# coding=utf-8
id = 166
-group = 'dcg'
number = 73
visible = True
facts = None
diff --git a/prolog/problems/dcg/number_proper_2/en.py b/prolog/problems/dcg/number_proper_2/en.py
index 81ca5f6..8580ab7 100644
--- a/prolog/problems/dcg/number_proper_2/en.py
+++ b/prolog/problems/dcg/number_proper_2/en.py
@@ -1,6 +1,5 @@
# coding=utf-8
-id = 166
name = 'number_proper/2'
slug = 'numbers without leading zeros'
diff --git a/prolog/problems/dcg/paren_2/common.py b/prolog/problems/dcg/paren_2/common.py
index d5969a2..1d8f653 100644
--- a/prolog/problems/dcg/paren_2/common.py
+++ b/prolog/problems/dcg/paren_2/common.py
@@ -1,7 +1,6 @@
# coding=utf-8
id = 168
-group = 'dcg'
number = 75
visible = True
facts = None
diff --git a/prolog/problems/dcg/paren_2/en.py b/prolog/problems/dcg/paren_2/en.py
index 268b774..3041a67 100644
--- a/prolog/problems/dcg/paren_2/en.py
+++ b/prolog/problems/dcg/paren_2/en.py
@@ -1,6 +1,5 @@
# coding=utf-8
-id = 168
name = 'paren/2'
slug = 'properly nested parens'
diff --git a/prolog/problems/dcg/paren_3/common.py b/prolog/problems/dcg/paren_3/common.py
index 4cda182..a905149 100644
--- a/prolog/problems/dcg/paren_3/common.py
+++ b/prolog/problems/dcg/paren_3/common.py
@@ -1,7 +1,6 @@
# coding=utf-8
id = 169
-group = 'dcg'
number = 76
visible = True
facts = None
diff --git a/prolog/problems/dcg/paren_3/en.py b/prolog/problems/dcg/paren_3/en.py
index 737f0ef..56519ff 100644
--- a/prolog/problems/dcg/paren_3/en.py
+++ b/prolog/problems/dcg/paren_3/en.py
@@ -1,6 +1,5 @@
# coding=utf-8
-id = 169
name = 'paren/3'
slug = 'properly nested parens with meaning'
diff --git a/prolog/problems/denotational_semantics/algol_3/common.py b/prolog/problems/denotational_semantics/algol_3/common.py
index 1f5b196..cce9b69 100644
--- a/prolog/problems/denotational_semantics/algol_3/common.py
+++ b/prolog/problems/denotational_semantics/algol_3/common.py
@@ -1,7 +1,6 @@
# coding=utf-8
id = 176
-group = 'denotational_semantics'
number = 83
visible = True
facts = None
diff --git a/prolog/problems/denotational_semantics/algol_3/en.py b/prolog/problems/denotational_semantics/algol_3/en.py
index 5c79c41..c5da13e 100644
--- a/prolog/problems/denotational_semantics/algol_3/en.py
+++ b/prolog/problems/denotational_semantics/algol_3/en.py
@@ -1,6 +1,5 @@
# coding=utf-8
-id = 176
name = 'algol/3'
slug = 'interpreter for mini-algol'
diff --git a/prolog/problems/denotational_semantics/algol_for_3/common.py b/prolog/problems/denotational_semantics/algol_for_3/common.py
index bc0c3e8..4cf9373 100644
--- a/prolog/problems/denotational_semantics/algol_for_3/common.py
+++ b/prolog/problems/denotational_semantics/algol_for_3/common.py
@@ -1,7 +1,6 @@
# coding=utf-8
id = 178
-group = 'denotational_semantics'
number = 85
visible = True
facts = None
diff --git a/prolog/problems/denotational_semantics/algol_for_3/en.py b/prolog/problems/denotational_semantics/algol_for_3/en.py
index 53e5e2b..d4b8144 100644
--- a/prolog/problems/denotational_semantics/algol_for_3/en.py
+++ b/prolog/problems/denotational_semantics/algol_for_3/en.py
@@ -1,6 +1,5 @@
# coding=utf-8
-id = 178
name = 'algol_for/3'
slug = 'interpreter for mini-algol with for-statement'
diff --git a/prolog/problems/denotational_semantics/algol_if_3/common.py b/prolog/problems/denotational_semantics/algol_if_3/common.py
index fd750e0..0c52886 100644
--- a/prolog/problems/denotational_semantics/algol_if_3/common.py
+++ b/prolog/problems/denotational_semantics/algol_if_3/common.py
@@ -1,7 +1,6 @@
# coding=utf-8
id = 177
-group = 'denotational_semantics'
number = 84
visible = True
facts = None
diff --git a/prolog/problems/denotational_semantics/algol_if_3/en.py b/prolog/problems/denotational_semantics/algol_if_3/en.py
index f4ae00a..fae6c45 100644
--- a/prolog/problems/denotational_semantics/algol_if_3/en.py
+++ b/prolog/problems/denotational_semantics/algol_if_3/en.py
@@ -1,6 +1,5 @@
# coding=utf-8
-id = 177
name = 'algol_if/3'
slug = 'interpreter for mini-algol with if-statement'
diff --git a/prolog/problems/denotational_semantics/common.py b/prolog/problems/denotational_semantics/common.py
new file mode 100644
index 0000000..e2c420e
--- /dev/null
+++ b/prolog/problems/denotational_semantics/common.py
@@ -0,0 +1,2 @@
+id = 11
+number = 10
diff --git a/prolog/problems/denotational_semantics/prog_8puzzle_2/common.py b/prolog/problems/denotational_semantics/prog_8puzzle_2/common.py
index e48d03f..d994039 100644
--- a/prolog/problems/denotational_semantics/prog_8puzzle_2/common.py
+++ b/prolog/problems/denotational_semantics/prog_8puzzle_2/common.py
@@ -1,7 +1,6 @@
# coding=utf-8
id = 172
-group = 'denotational_semantics'
number = 81
visible = True
facts = None
diff --git a/prolog/problems/denotational_semantics/prog_8puzzle_2/en.py b/prolog/problems/denotational_semantics/prog_8puzzle_2/en.py
index d43a837..fc49742 100644
--- a/prolog/problems/denotational_semantics/prog_8puzzle_2/en.py
+++ b/prolog/problems/denotational_semantics/prog_8puzzle_2/en.py
@@ -1,6 +1,5 @@
# coding=utf-8
-id = 172
name = 'prog_8puzzle/2'
slug = '8-puzzle-solving language'
diff --git a/prolog/problems/denotational_semantics/prog_8puzzle_3/common.py b/prolog/problems/denotational_semantics/prog_8puzzle_3/common.py
index f86a0c4..15dce6b 100644
--- a/prolog/problems/denotational_semantics/prog_8puzzle_3/common.py
+++ b/prolog/problems/denotational_semantics/prog_8puzzle_3/common.py
@@ -1,7 +1,6 @@
# coding=utf-8
id = 173
-group = 'denotational_semantics'
number = 82
visible = True
facts = 'denotational_semantics_aux__predicates'
diff --git a/prolog/problems/denotational_semantics/prog_8puzzle_3/en.py b/prolog/problems/denotational_semantics/prog_8puzzle_3/en.py
index 346d579..1c23b18 100644
--- a/prolog/problems/denotational_semantics/prog_8puzzle_3/en.py
+++ b/prolog/problems/denotational_semantics/prog_8puzzle_3/en.py
@@ -1,6 +1,5 @@
# coding=utf-8
-id = 173
name = 'prog_8puzzle/3'
slug = '8-puzzle-solving language with semantics'
diff --git a/prolog/problems/denotational_semantics/prog_listswap_2/common.py b/prolog/problems/denotational_semantics/prog_listswap_2/common.py
index 9a7c586..1f8b655 100644
--- a/prolog/problems/denotational_semantics/prog_listswap_2/common.py
+++ b/prolog/problems/denotational_semantics/prog_listswap_2/common.py
@@ -1,7 +1,6 @@
# coding=utf-8
id = 175
-group = 'denotational_semantics'
number = 79
visible = True
facts = None
diff --git a/prolog/problems/denotational_semantics/prog_listswap_2/en.py b/prolog/problems/denotational_semantics/prog_listswap_2/en.py
index 2cf8fff..0f8e038 100644
--- a/prolog/problems/denotational_semantics/prog_listswap_2/en.py
+++ b/prolog/problems/denotational_semantics/prog_listswap_2/en.py
@@ -1,6 +1,5 @@
# coding=utf-8
-id = 175
name = 'prog_listswap/2'
slug = 'list-manipulation language'
diff --git a/prolog/problems/denotational_semantics/prog_listswap_3/common.py b/prolog/problems/denotational_semantics/prog_listswap_3/common.py
index 2b32618..a40be29 100644
--- a/prolog/problems/denotational_semantics/prog_listswap_3/common.py
+++ b/prolog/problems/denotational_semantics/prog_listswap_3/common.py
@@ -1,7 +1,6 @@
# coding=utf-8
id = 174
-group = 'denotational_semantics'
number = 80
visible = True
facts = 'denotational_semantics_aux__predicates'
diff --git a/prolog/problems/denotational_semantics/prog_listswap_3/en.py b/prolog/problems/denotational_semantics/prog_listswap_3/en.py
index 88a927a..5e85ce6 100644
--- a/prolog/problems/denotational_semantics/prog_listswap_3/en.py
+++ b/prolog/problems/denotational_semantics/prog_listswap_3/en.py
@@ -1,6 +1,5 @@
# coding=utf-8
-id = 174
name = 'prog_listswap/3'
slug = 'list-manipulation language with semantics'
diff --git a/prolog/problems/family_relations/ancestor_2/common.py b/prolog/problems/family_relations/ancestor_2/common.py
index 3226f34..7249ed8 100644
--- a/prolog/problems/family_relations/ancestor_2/common.py
+++ b/prolog/problems/family_relations/ancestor_2/common.py
@@ -8,7 +8,6 @@ from server.hints import Hint, HintSequence
import server.problems
id = 100
-group = 'family_relations'
number = 7
visible = True
facts = 'family_relations'
diff --git a/prolog/problems/family_relations/ancestor_2/en.py b/prolog/problems/family_relations/ancestor_2/en.py
index b390705..29fb253 100644
--- a/prolog/problems/family_relations/ancestor_2/en.py
+++ b/prolog/problems/family_relations/ancestor_2/en.py
@@ -1,6 +1,5 @@
# coding=utf-8
-id = 100
name = 'ancestor/2'
slug = 'the ancestor relation'
diff --git a/prolog/problems/family_relations/ancestor_2/sl.py b/prolog/problems/family_relations/ancestor_2/sl.py
index 76c2bea..d74ccc5 100644
--- a/prolog/problems/family_relations/ancestor_2/sl.py
+++ b/prolog/problems/family_relations/ancestor_2/sl.py
@@ -1,6 +1,5 @@
# coding=utf-8
-id = 100
name = 'ancestor/2'
slug = 'X je prednik od Y'
diff --git a/prolog/problems/family_relations/aunt_2/common.py b/prolog/problems/family_relations/aunt_2/common.py
index 2aeba9d..51bc99a 100644
--- a/prolog/problems/family_relations/aunt_2/common.py
+++ b/prolog/problems/family_relations/aunt_2/common.py
@@ -8,7 +8,6 @@ from server.hints import Hint, HintSequence
import server.problems
id = 98
-group = 'family_relations'
number = 5
visible = True
facts = 'family_relations'
diff --git a/prolog/problems/family_relations/aunt_2/en.py b/prolog/problems/family_relations/aunt_2/en.py
index 8d20d7e..25cac41 100644
--- a/prolog/problems/family_relations/aunt_2/en.py
+++ b/prolog/problems/family_relations/aunt_2/en.py
@@ -1,6 +1,5 @@
# coding=utf-8
-id = 98
name = 'aunt/2'
slug = 'the aunt relation'
diff --git a/prolog/problems/family_relations/aunt_2/sl.py b/prolog/problems/family_relations/aunt_2/sl.py
index 95fc6b2..2bf0ef6 100644
--- a/prolog/problems/family_relations/aunt_2/sl.py
+++ b/prolog/problems/family_relations/aunt_2/sl.py
@@ -1,6 +1,5 @@
# coding=utf-8
-id = 98
name = 'aunt/2'
slug = 'X je teta od Y'
diff --git a/prolog/problems/family_relations/brother_2/common.py b/prolog/problems/family_relations/brother_2/common.py
index 3fb685f..48b89fe 100644
--- a/prolog/problems/family_relations/brother_2/common.py
+++ b/prolog/problems/family_relations/brother_2/common.py
@@ -8,7 +8,6 @@ from server.hints import Hint, HintSequence
import server.problems
id = 97
-group = 'family_relations'
number = 4
visible = True
facts = 'family_relations'
diff --git a/prolog/problems/family_relations/brother_2/en.py b/prolog/problems/family_relations/brother_2/en.py
index 709b077..2daf78f 100644
--- a/prolog/problems/family_relations/brother_2/en.py
+++ b/prolog/problems/family_relations/brother_2/en.py
@@ -1,6 +1,5 @@
# coding=utf-8
-id = 97
name = 'brother/2'
slug = 'the brother relation'
diff --git a/prolog/problems/family_relations/brother_2/sl.py b/prolog/problems/family_relations/brother_2/sl.py
index f945026..96c6126 100644
--- a/prolog/problems/family_relations/brother_2/sl.py
+++ b/prolog/problems/family_relations/brother_2/sl.py
@@ -1,6 +1,5 @@
# coding=utf-8
-id = 97
name = 'brother/2'
slug = 'X je brat od Y'
diff --git a/prolog/problems/family_relations/common.py b/prolog/problems/family_relations/common.py
new file mode 100644
index 0000000..5aff819
--- /dev/null
+++ b/prolog/problems/family_relations/common.py
@@ -0,0 +1,2 @@
+id = 1
+number = 1
diff --git a/prolog/problems/family_relations/connected_3/common.py b/prolog/problems/family_relations/connected_3/common.py
index 1221713..9c0bef7 100644
--- a/prolog/problems/family_relations/connected_3/common.py
+++ b/prolog/problems/family_relations/connected_3/common.py
@@ -1,7 +1,6 @@
# coding=utf-8
id = 102
-group = 'family_relations'
number = 9
visible = True
facts = 'family_relations'
diff --git a/prolog/problems/family_relations/connected_3/en.py b/prolog/problems/family_relations/connected_3/en.py
index 5fe8edb..f50d60e 100644
--- a/prolog/problems/family_relations/connected_3/en.py
+++ b/prolog/problems/family_relations/connected_3/en.py
@@ -1,6 +1,5 @@
# coding=utf-8
-id = 102
name = 'connected/3'
slug = 'check if two people are connected in the family tree'
diff --git a/prolog/problems/family_relations/cousin_2/common.py b/prolog/problems/family_relations/cousin_2/common.py
index cd5cd38..8dc33b8 100644
--- a/prolog/problems/family_relations/cousin_2/common.py
+++ b/prolog/problems/family_relations/cousin_2/common.py
@@ -8,7 +8,6 @@ from server.hints import Hint, HintSequence
import server.problems
id = 99
-group = 'family_relations'
number = 6
visible = True
facts = 'family_relations'
diff --git a/prolog/problems/family_relations/cousin_2/en.py b/prolog/problems/family_relations/cousin_2/en.py
index 1399013..cf628db 100644
--- a/prolog/problems/family_relations/cousin_2/en.py
+++ b/prolog/problems/family_relations/cousin_2/en.py
@@ -1,6 +1,5 @@
# coding=utf-8
-id = 99
name = 'cousin/2'
slug = 'the cousin relation'
diff --git a/prolog/problems/family_relations/cousin_2/sl.py b/prolog/problems/family_relations/cousin_2/sl.py
index ebecf8d..7e3e7f0 100644
--- a/prolog/problems/family_relations/cousin_2/sl.py
+++ b/prolog/problems/family_relations/cousin_2/sl.py
@@ -1,6 +1,5 @@
# coding=utf-8
-id = 99
name = 'cousin/2'
slug = 'X je bratranec ali sestrična od Y'
diff --git a/prolog/problems/family_relations/descendant_2/common.py b/prolog/problems/family_relations/descendant_2/common.py
index 21de450..cfa1d37 100644
--- a/prolog/problems/family_relations/descendant_2/common.py
+++ b/prolog/problems/family_relations/descendant_2/common.py
@@ -8,7 +8,6 @@ from server.hints import Hint, HintSequence
import server.problems
id = 101
-group = 'family_relations'
number = 8
visible = True
facts = 'family_relations'
diff --git a/prolog/problems/family_relations/descendant_2/en.py b/prolog/problems/family_relations/descendant_2/en.py
index b0fccf2..74360f3 100644
--- a/prolog/problems/family_relations/descendant_2/en.py
+++ b/prolog/problems/family_relations/descendant_2/en.py
@@ -1,6 +1,5 @@
# coding=utf-8
-id = 101
name = 'descendant/2'
slug = 'the descendant relation'
diff --git a/prolog/problems/family_relations/descendant_2/sl.py b/prolog/problems/family_relations/descendant_2/sl.py
index fb60e76..5e81d26 100644
--- a/prolog/problems/family_relations/descendant_2/sl.py
+++ b/prolog/problems/family_relations/descendant_2/sl.py
@@ -1,6 +1,5 @@
# coding=utf-8
-id = 101
name = 'descendant/2'
slug = 'the descendant relation'
diff --git a/prolog/problems/family_relations/father_2/common.py b/prolog/problems/family_relations/father_2/common.py
index 50ac701..8eef44a 100644
--- a/prolog/problems/family_relations/father_2/common.py
+++ b/prolog/problems/family_relations/father_2/common.py
@@ -8,7 +8,6 @@ from server.hints import Hint, HintSequence
import server.problems
id = 181
-group = 'family_relations'
number = 2
visible = True
facts = 'family_relations'
diff --git a/prolog/problems/family_relations/father_2/en.py b/prolog/problems/family_relations/father_2/en.py
index 59857a8..722c016 100644
--- a/prolog/problems/family_relations/father_2/en.py
+++ b/prolog/problems/family_relations/father_2/en.py
@@ -1,6 +1,5 @@
# coding=utf-8
-id = 181
name = 'mother/2'
slug = 'the mother-child relation'
diff --git a/prolog/problems/family_relations/father_2/sl.py b/prolog/problems/family_relations/father_2/sl.py
index 67bf764..178fbc6 100644
--- a/prolog/problems/family_relations/father_2/sl.py
+++ b/prolog/problems/family_relations/father_2/sl.py
@@ -1,6 +1,5 @@
# coding=utf-8
-id = 181
name = 'father/2'
slug = 'X je oče od Y'
diff --git a/prolog/problems/family_relations/grandparent_2/common.py b/prolog/problems/family_relations/grandparent_2/common.py
index fec7734..ee7b25b 100644
--- a/prolog/problems/family_relations/grandparent_2/common.py
+++ b/prolog/problems/family_relations/grandparent_2/common.py
@@ -8,7 +8,6 @@ from server.hints import Hint, HintSequence, HintPopup
import server.problems
id = 95
-group = 'family_relations'
number = 30
visible = True
facts = 'family_relations'
diff --git a/prolog/problems/family_relations/grandparent_2/en.py b/prolog/problems/family_relations/grandparent_2/en.py
index 6fdeb70..c181ab5 100644
--- a/prolog/problems/family_relations/grandparent_2/en.py
+++ b/prolog/problems/family_relations/grandparent_2/en.py
@@ -1,6 +1,5 @@
# coding=utf-8
-id = 95
name = 'grandparent/2'
slug = 'the grandparent relation'
diff --git a/prolog/problems/family_relations/grandparent_2/sl.py b/prolog/problems/family_relations/grandparent_2/sl.py
index 35ff49e..a4440a6 100644
--- a/prolog/problems/family_relations/grandparent_2/sl.py
+++ b/prolog/problems/family_relations/grandparent_2/sl.py
@@ -1,6 +1,5 @@
# coding=utf-8
-id = 95
name = 'grandparent/2'
slug = 'X je dedek ali babica od Y'
diff --git a/prolog/problems/family_relations/mother_2/common.py b/prolog/problems/family_relations/mother_2/common.py
index 18b3027..e3a883f 100644
--- a/prolog/problems/family_relations/mother_2/common.py
+++ b/prolog/problems/family_relations/mother_2/common.py
@@ -8,7 +8,6 @@ from server.hints import Hint, HintSequence
import server.problems
id = 94
-group = 'family_relations'
number = 1
visible = True
facts = 'family_relations'
diff --git a/prolog/problems/family_relations/mother_2/en.py b/prolog/problems/family_relations/mother_2/en.py
index 108bb9b..722c016 100644
--- a/prolog/problems/family_relations/mother_2/en.py
+++ b/prolog/problems/family_relations/mother_2/en.py
@@ -1,6 +1,5 @@
# coding=utf-8
-id = 94
name = 'mother/2'
slug = 'the mother-child relation'
diff --git a/prolog/problems/family_relations/mother_2/sl.py b/prolog/problems/family_relations/mother_2/sl.py
index 9e384c0..b37c20c 100644
--- a/prolog/problems/family_relations/mother_2/sl.py
+++ b/prolog/problems/family_relations/mother_2/sl.py
@@ -1,6 +1,5 @@
# coding=utf-8
-id = 94
name = 'mother/2'
slug = 'X je mama od Y'
diff --git a/prolog/problems/family_relations/sister_2/common.py b/prolog/problems/family_relations/sister_2/common.py
index b2bf954..627648c 100644
--- a/prolog/problems/family_relations/sister_2/common.py
+++ b/prolog/problems/family_relations/sister_2/common.py
@@ -8,7 +8,6 @@ from server.hints import Hint, HintSequence
import server.problems
id = 96
-group = 'family_relations'
number = 3
visible = True
facts = 'family_relations'
diff --git a/prolog/problems/family_relations/sister_2/en.py b/prolog/problems/family_relations/sister_2/en.py
index 6b055e8..32bb9d9 100644
--- a/prolog/problems/family_relations/sister_2/en.py
+++ b/prolog/problems/family_relations/sister_2/en.py
@@ -1,6 +1,5 @@
# coding=utf-8
-id = 96
name = 'sister/2'
slug = 'the sister relation'
diff --git a/prolog/problems/family_relations/sister_2/sl.py b/prolog/problems/family_relations/sister_2/sl.py
index 1cb457d..d69b56c 100644
--- a/prolog/problems/family_relations/sister_2/sl.py
+++ b/prolog/problems/family_relations/sister_2/sl.py
@@ -1,6 +1,5 @@
# coding=utf-8
-id = 96
name = 'sister/2'
slug = 'X je sestra od Y'
diff --git a/prolog/problems/license_plates/checklicenseplate_3/common.py b/prolog/problems/license_plates/checklicenseplate_3/common.py
index 5dc1c3c..c37e210 100644
--- a/prolog/problems/license_plates/checklicenseplate_3/common.py
+++ b/prolog/problems/license_plates/checklicenseplate_3/common.py
@@ -1,7 +1,6 @@
# coding=utf-8
id = 148
-group = 'license_plates'
number = 55
visible = True
facts = None
diff --git a/prolog/problems/license_plates/checklicenseplate_3/en.py b/prolog/problems/license_plates/checklicenseplate_3/en.py
index 4e3e726..76270cd 100644
--- a/prolog/problems/license_plates/checklicenseplate_3/en.py
+++ b/prolog/problems/license_plates/checklicenseplate_3/en.py
@@ -1,6 +1,5 @@
# coding=utf-8
-id = 148
name = 'checkLicensePlate/3'
slug = 'check if the numbers in a license plate form an equation'
diff --git a/prolog/problems/license_plates/common.py b/prolog/problems/license_plates/common.py
new file mode 100644
index 0000000..3d15487
--- /dev/null
+++ b/prolog/problems/license_plates/common.py
@@ -0,0 +1,2 @@
+id = 7
+number = 6
diff --git a/prolog/problems/license_plates/firstminus_2/common.py b/prolog/problems/license_plates/firstminus_2/common.py
index ece4dd6..20376d2 100644
--- a/prolog/problems/license_plates/firstminus_2/common.py
+++ b/prolog/problems/license_plates/firstminus_2/common.py
@@ -1,7 +1,6 @@
# coding=utf-8
id = 147
-group = 'license_plates'
number = 54
visible = True
facts = None
diff --git a/prolog/problems/license_plates/firstminus_2/en.py b/prolog/problems/license_plates/firstminus_2/en.py
index 00bb198..cea521a 100644
--- a/prolog/problems/license_plates/firstminus_2/en.py
+++ b/prolog/problems/license_plates/firstminus_2/en.py
@@ -1,6 +1,5 @@
# coding=utf-8
-id = 147
name = 'firstMinus/2'
slug = 'negate the first element in a list of numbers'
diff --git a/prolog/problems/license_plates/genexp_2/common.py b/prolog/problems/license_plates/genexp_2/common.py
index 170722b..ecdc772 100644
--- a/prolog/problems/license_plates/genexp_2/common.py
+++ b/prolog/problems/license_plates/genexp_2/common.py
@@ -1,7 +1,6 @@
# coding=utf-8
id = 146
-group = 'license_plates'
number = 53
visible = True
facts = None
diff --git a/prolog/problems/license_plates/genexp_2/en.py b/prolog/problems/license_plates/genexp_2/en.py
index de168ec..2238f4d 100644
--- a/prolog/problems/license_plates/genexp_2/en.py
+++ b/prolog/problems/license_plates/genexp_2/en.py
@@ -1,6 +1,5 @@
# coding=utf-8
-id = 146
name = 'genexp/2'
slug = 'generate an arithmetic expression from a list'
diff --git a/prolog/problems/license_plates/getdigits_2/common.py b/prolog/problems/license_plates/getdigits_2/common.py
index 20be22e..82fe033 100644
--- a/prolog/problems/license_plates/getdigits_2/common.py
+++ b/prolog/problems/license_plates/getdigits_2/common.py
@@ -1,7 +1,6 @@
# coding=utf-8
id = 144
-group = 'license_plates'
number = 51
visible = True
facts = None
diff --git a/prolog/problems/license_plates/getdigits_2/en.py b/prolog/problems/license_plates/getdigits_2/en.py
index 6da7033..afc41d4 100644
--- a/prolog/problems/license_plates/getdigits_2/en.py
+++ b/prolog/problems/license_plates/getdigits_2/en.py
@@ -1,6 +1,5 @@
# coding=utf-8
-id = 144
name = 'getdigits/2'
slug = 'remove non-numeric elements from a list'
diff --git a/prolog/problems/license_plates/joindigits_2/common.py b/prolog/problems/license_plates/joindigits_2/common.py
index b89559f..9ebc037 100644
--- a/prolog/problems/license_plates/joindigits_2/common.py
+++ b/prolog/problems/license_plates/joindigits_2/common.py
@@ -1,7 +1,6 @@
# coding=utf-8
id = 145
-group = 'license_plates'
number = 52
visible = True
facts = None
diff --git a/prolog/problems/license_plates/joindigits_2/en.py b/prolog/problems/license_plates/joindigits_2/en.py
index 3a5ff41..c51f452 100644
--- a/prolog/problems/license_plates/joindigits_2/en.py
+++ b/prolog/problems/license_plates/joindigits_2/en.py
@@ -1,6 +1,5 @@
# coding=utf-8
-id = 145
name = 'joindigits/2'
slug = 'join adjacent numbers in a list'
diff --git a/prolog/problems/lists/common.py b/prolog/problems/lists/common.py
new file mode 100644
index 0000000..4788fc4
--- /dev/null
+++ b/prolog/problems/lists/common.py
@@ -0,0 +1,2 @@
+id = 2
+number = 2
diff --git a/prolog/problems/lists/conc_3/common.py b/prolog/problems/lists/conc_3/common.py
index ef23d67..e83c454 100644
--- a/prolog/problems/lists/conc_3/common.py
+++ b/prolog/problems/lists/conc_3/common.py
@@ -1,7 +1,6 @@
# coding=utf-8
id = 104
-group = 'lists'
number = 12
visible = True
facts = None
diff --git a/prolog/problems/lists/conc_3/en.py b/prolog/problems/lists/conc_3/en.py
index 184ca44..7399f7e 100644
--- a/prolog/problems/lists/conc_3/en.py
+++ b/prolog/problems/lists/conc_3/en.py
@@ -1,6 +1,5 @@
# coding=utf-8
-id = 104
name = 'conc/3'
slug = 'concatenate two lists'
diff --git a/prolog/problems/lists/count_3/common.py b/prolog/problems/lists/count_3/common.py
index bf6f688..8a85079 100644
--- a/prolog/problems/lists/count_3/common.py
+++ b/prolog/problems/lists/count_3/common.py
@@ -1,7 +1,6 @@
# coding=utf-8
id = 120
-group = 'lists'
number = 27
visible = True
facts = None
diff --git a/prolog/problems/lists/count_3/en.py b/prolog/problems/lists/count_3/en.py
index 9115940..c676dea 100644
--- a/prolog/problems/lists/count_3/en.py
+++ b/prolog/problems/lists/count_3/en.py
@@ -1,6 +1,5 @@
# coding=utf-8
-id = 120
name = 'count/3'
slug = 'find the number of occurrences of an element in list'
diff --git a/prolog/problems/lists/del_3/common.py b/prolog/problems/lists/del_3/common.py
index 81bbb75..755193c 100644
--- a/prolog/problems/lists/del_3/common.py
+++ b/prolog/problems/lists/del_3/common.py
@@ -1,7 +1,6 @@
# coding=utf-8
id = 105
-group = 'lists'
number = 11
visible = True
facts = None
diff --git a/prolog/problems/lists/del_3/en.py b/prolog/problems/lists/del_3/en.py
index 1e58ae5..d7e38e8 100644
--- a/prolog/problems/lists/del_3/en.py
+++ b/prolog/problems/lists/del_3/en.py
@@ -1,6 +1,5 @@
# coding=utf-8
-id = 105
name = 'del/3'
slug = 'delete an element from list'
diff --git a/prolog/problems/lists/divide_3/common.py b/prolog/problems/lists/divide_3/common.py
index 337f702..c5744cc 100644
--- a/prolog/problems/lists/divide_3/common.py
+++ b/prolog/problems/lists/divide_3/common.py
@@ -1,7 +1,6 @@
# coding=utf-8
id = 115
-group = 'lists'
number = 22
visible = True
facts = None
diff --git a/prolog/problems/lists/divide_3/en.py b/prolog/problems/lists/divide_3/en.py
index 657b013..fded262 100644
--- a/prolog/problems/lists/divide_3/en.py
+++ b/prolog/problems/lists/divide_3/en.py
@@ -1,6 +1,5 @@
# coding=utf-8
-id = 115
name = 'divide/3'
slug = 'split a list into parts of roughly equal length'
diff --git a/prolog/problems/lists/dup_2/common.py b/prolog/problems/lists/dup_2/common.py
index 7417006..e0a1001 100644
--- a/prolog/problems/lists/dup_2/common.py
+++ b/prolog/problems/lists/dup_2/common.py
@@ -1,7 +1,6 @@
# coding=utf-8
id = 110
-group = 'lists'
number = 17
visible = True
facts = None
diff --git a/prolog/problems/lists/dup_2/en.py b/prolog/problems/lists/dup_2/en.py
index f6354b3..c1d0c1a 100644
--- a/prolog/problems/lists/dup_2/en.py
+++ b/prolog/problems/lists/dup_2/en.py
@@ -1,6 +1,5 @@
# coding=utf-8
-id = 110
name = 'dup/2'
slug = 'duplicate the elements of a list'
diff --git a/prolog/problems/lists/evenlen_1_+_oddlen_1/common.py b/prolog/problems/lists/evenlen_1_+_oddlen_1/common.py
index aaca8ec..601cd33 100644
--- a/prolog/problems/lists/evenlen_1_+_oddlen_1/common.py
+++ b/prolog/problems/lists/evenlen_1_+_oddlen_1/common.py
@@ -1,7 +1,6 @@
# coding=utf-8
id = 116
-group = 'lists'
number = 23
visible = True
facts = None
diff --git a/prolog/problems/lists/evenlen_1_+_oddlen_1/en.py b/prolog/problems/lists/evenlen_1_+_oddlen_1/en.py
index 741c36a..1ac7990 100644
--- a/prolog/problems/lists/evenlen_1_+_oddlen_1/en.py
+++ b/prolog/problems/lists/evenlen_1_+_oddlen_1/en.py
@@ -1,6 +1,5 @@
# coding=utf-8
-id = 116
name = 'evenlen/1 + oddlen/1'
slug = 'check if the length of a list is even or odd'
diff --git a/prolog/problems/lists/insert_3/common.py b/prolog/problems/lists/insert_3/common.py
index df4e16e..4892f4d 100644
--- a/prolog/problems/lists/insert_3/common.py
+++ b/prolog/problems/lists/insert_3/common.py
@@ -1,7 +1,6 @@
# coding=utf-8
id = 106
-group = 'lists'
number = 13
visible = True
facts = None
diff --git a/prolog/problems/lists/insert_3/en.py b/prolog/problems/lists/insert_3/en.py
index 01a7d0a..6a3da54 100644
--- a/prolog/problems/lists/insert_3/en.py
+++ b/prolog/problems/lists/insert_3/en.py
@@ -1,6 +1,5 @@
# coding=utf-8
-id = 106
name = 'insert/3'
slug = 'insert an element into list'
diff --git a/prolog/problems/lists/len_2/common.py b/prolog/problems/lists/len_2/common.py
index 33fc223..7dbdc62 100644
--- a/prolog/problems/lists/len_2/common.py
+++ b/prolog/problems/lists/len_2/common.py
@@ -1,7 +1,6 @@
# coding=utf-8
id = 119
-group = 'lists'
number = 26
visible = True
facts = None
diff --git a/prolog/problems/lists/len_2/en.py b/prolog/problems/lists/len_2/en.py
index 325e28f..9de0060 100644
--- a/prolog/problems/lists/len_2/en.py
+++ b/prolog/problems/lists/len_2/en.py
@@ -1,6 +1,5 @@
# coding=utf-8
-id = 119
name = 'len/2'
slug = 'find the length of a list'
diff --git a/prolog/problems/lists/max_2/common.py b/prolog/problems/lists/max_2/common.py
index 73c39a2..0e8f031 100644
--- a/prolog/problems/lists/max_2/common.py
+++ b/prolog/problems/lists/max_2/common.py
@@ -1,7 +1,6 @@
# coding=utf-8
id = 109
-group = 'lists'
number = 16
visible = True
facts = None
diff --git a/prolog/problems/lists/max_2/en.py b/prolog/problems/lists/max_2/en.py
index 1f6aba7..f851cd9 100644
--- a/prolog/problems/lists/max_2/en.py
+++ b/prolog/problems/lists/max_2/en.py
@@ -1,6 +1,5 @@
# coding=utf-8
-id = 109
name = 'max/2'
slug = 'find the largest element in list'
diff --git a/prolog/problems/lists/memb_2/common.py b/prolog/problems/lists/memb_2/common.py
index 9e8b58e..3acbc15 100644
--- a/prolog/problems/lists/memb_2/common.py
+++ b/prolog/problems/lists/memb_2/common.py
@@ -1,7 +1,6 @@
# coding=utf-8
id = 103
-group = 'lists'
number = 10
visible = True
facts = None
diff --git a/prolog/problems/lists/memb_2/en.py b/prolog/problems/lists/memb_2/en.py
index 9b3c4d9..3fb20d3 100644
--- a/prolog/problems/lists/memb_2/en.py
+++ b/prolog/problems/lists/memb_2/en.py
@@ -1,6 +1,5 @@
# coding=utf-8
-id = 103
name = 'memb/2'
slug = 'find elements in list'
diff --git a/prolog/problems/lists/min_2/common.py b/prolog/problems/lists/min_2/common.py
index a5421d1..cc6ad9e 100644
--- a/prolog/problems/lists/min_2/common.py
+++ b/prolog/problems/lists/min_2/common.py
@@ -1,7 +1,6 @@
# coding=utf-8
id = 108
-group = 'lists'
number = 15
visible = True
facts = None
diff --git a/prolog/problems/lists/min_2/en.py b/prolog/problems/lists/min_2/en.py
index 0e5a907..2432be2 100644
--- a/prolog/problems/lists/min_2/en.py
+++ b/prolog/problems/lists/min_2/en.py
@@ -1,6 +1,5 @@
# coding=utf-8
-id = 108
name = 'min/2'
slug = 'find the smallest element'
diff --git a/prolog/problems/lists/palindrome_1/common.py b/prolog/problems/lists/palindrome_1/common.py
index 31998e2..5df4b87 100644
--- a/prolog/problems/lists/palindrome_1/common.py
+++ b/prolog/problems/lists/palindrome_1/common.py
@@ -1,7 +1,6 @@
# coding=utf-8
id = 112
-group = 'lists'
number = 19
visible = True
facts = None
diff --git a/prolog/problems/lists/palindrome_1/en.py b/prolog/problems/lists/palindrome_1/en.py
index 3e5f561..7f30f8e 100644
--- a/prolog/problems/lists/palindrome_1/en.py
+++ b/prolog/problems/lists/palindrome_1/en.py
@@ -1,6 +1,5 @@
# coding=utf-8
-id = 112
name = 'palindrome/1'
slug = 'check if list is a palindrome'
diff --git a/prolog/problems/lists/permute_2/common.py b/prolog/problems/lists/permute_2/common.py
index a1c66ff..2f37a3b 100644
--- a/prolog/problems/lists/permute_2/common.py
+++ b/prolog/problems/lists/permute_2/common.py
@@ -1,7 +1,6 @@
# coding=utf-8
id = 107
-group = 'lists'
number = 14
visible = True
facts = None
diff --git a/prolog/problems/lists/permute_2/en.py b/prolog/problems/lists/permute_2/en.py
index 048713e..29d287f 100644
--- a/prolog/problems/lists/permute_2/en.py
+++ b/prolog/problems/lists/permute_2/en.py
@@ -1,6 +1,5 @@
# coding=utf-8
-id = 107
name = 'permute/2'
slug = 'generate permutations of a list'
diff --git a/prolog/problems/lists/rev_2/common.py b/prolog/problems/lists/rev_2/common.py
index c31e25b..ba72492 100644
--- a/prolog/problems/lists/rev_2/common.py
+++ b/prolog/problems/lists/rev_2/common.py
@@ -1,7 +1,6 @@
# coding=utf-8
id = 111
-group = 'lists'
number = 18
visible = True
facts = None
diff --git a/prolog/problems/lists/rev_2/en.py b/prolog/problems/lists/rev_2/en.py
index c4800b6..fe36ec5 100644
--- a/prolog/problems/lists/rev_2/en.py
+++ b/prolog/problems/lists/rev_2/en.py
@@ -1,6 +1,5 @@
# coding=utf-8
-id = 111
name = 'rev/2'
slug = 'reverse a list'
diff --git a/prolog/problems/lists/shiftleft_2/common.py b/prolog/problems/lists/shiftleft_2/common.py
index f8e09f2..9a2fe0e 100644
--- a/prolog/problems/lists/shiftleft_2/common.py
+++ b/prolog/problems/lists/shiftleft_2/common.py
@@ -1,7 +1,6 @@
# coding=utf-8
id = 113
-group = 'lists'
number = 20
visible = True
facts = None
diff --git a/prolog/problems/lists/shiftleft_2/en.py b/prolog/problems/lists/shiftleft_2/en.py
index 72d55e5..a99b4a7 100644
--- a/prolog/problems/lists/shiftleft_2/en.py
+++ b/prolog/problems/lists/shiftleft_2/en.py
@@ -1,6 +1,5 @@
# coding=utf-8
-id = 113
name = 'shiftleft/2'
slug = 'shift a list left'
diff --git a/prolog/problems/lists/shiftright_2/common.py b/prolog/problems/lists/shiftright_2/common.py
index e443332..5358935 100644
--- a/prolog/problems/lists/shiftright_2/common.py
+++ b/prolog/problems/lists/shiftright_2/common.py
@@ -1,7 +1,6 @@
# coding=utf-8
id = 114
-group = 'lists'
number = 21
visible = True
facts = None
diff --git a/prolog/problems/lists/shiftright_2/en.py b/prolog/problems/lists/shiftright_2/en.py
index 3f20565..13384b0 100644
--- a/prolog/problems/lists/shiftright_2/en.py
+++ b/prolog/problems/lists/shiftright_2/en.py
@@ -1,6 +1,5 @@
# coding=utf-8
-id = 114
name = 'shiftright/2'
slug = 'shift a list right'
diff --git a/prolog/problems/lists/sublist_2/common.py b/prolog/problems/lists/sublist_2/common.py
index f9cef37..694bfcf 100644
--- a/prolog/problems/lists/sublist_2/common.py
+++ b/prolog/problems/lists/sublist_2/common.py
@@ -1,7 +1,6 @@
# coding=utf-8
id = 117
-group = 'lists'
number = 24
visible = True
facts = None
diff --git a/prolog/problems/lists/sublist_2/en.py b/prolog/problems/lists/sublist_2/en.py
index e17270b..e761e19 100644
--- a/prolog/problems/lists/sublist_2/en.py
+++ b/prolog/problems/lists/sublist_2/en.py
@@ -1,6 +1,5 @@
# coding=utf-8
-id = 117
name = 'sublist/2'
slug = 'generate sublists of a list'
diff --git a/prolog/problems/lists/sum_2/common.py b/prolog/problems/lists/sum_2/common.py
index 106f310..9c17e9c 100644
--- a/prolog/problems/lists/sum_2/common.py
+++ b/prolog/problems/lists/sum_2/common.py
@@ -1,7 +1,6 @@
# coding=utf-8
id = 118
-group = 'lists'
number = 25
visible = True
facts = None
diff --git a/prolog/problems/lists/sum_2/en.py b/prolog/problems/lists/sum_2/en.py
index fb47a1f..fc4cea8 100644
--- a/prolog/problems/lists/sum_2/en.py
+++ b/prolog/problems/lists/sum_2/en.py
@@ -1,6 +1,5 @@
# coding=utf-8
-id = 118
name = 'sum/2'
slug = 'find the sum of all elements in list'
diff --git a/prolog/problems/old_exams/common.py b/prolog/problems/old_exams/common.py
new file mode 100644
index 0000000..56857ba
--- /dev/null
+++ b/prolog/problems/old_exams/common.py
@@ -0,0 +1 @@
+id = 12
diff --git a/prolog/problems/old_exams/pascal_3/common.py b/prolog/problems/old_exams/pascal_3/common.py
index ebbc114..ddb3c6c 100644
--- a/prolog/problems/old_exams/pascal_3/common.py
+++ b/prolog/problems/old_exams/pascal_3/common.py
@@ -1,7 +1,6 @@
# coding=utf-8
id = 179
-group = 'old_exams'
number = 86
visible = False
facts = None
diff --git a/prolog/problems/old_exams/pascal_3/en.py b/prolog/problems/old_exams/pascal_3/en.py
index 0506004..bd17577 100644
--- a/prolog/problems/old_exams/pascal_3/en.py
+++ b/prolog/problems/old_exams/pascal_3/en.py
@@ -1,6 +1,5 @@
# coding=utf-8
-id = 179
name = 'pascal/3'
slug = 'pascal's triangle'
diff --git a/prolog/problems/other/common.py b/prolog/problems/other/common.py
new file mode 100644
index 0000000..50384ad
--- /dev/null
+++ b/prolog/problems/other/common.py
@@ -0,0 +1 @@
+id = 4
diff --git a/prolog/problems/other/genlist_4/common.py b/prolog/problems/other/genlist_4/common.py
index 83f4b0e..3d8f326 100644
--- a/prolog/problems/other/genlist_4/common.py
+++ b/prolog/problems/other/genlist_4/common.py
@@ -1,7 +1,6 @@
# coding=utf-8
id = 127
-group = 'other'
number = 34
visible = False
facts = None
diff --git a/prolog/problems/other/genlist_4/en.py b/prolog/problems/other/genlist_4/en.py
index 51ef8ea..bcdcefa 100644
--- a/prolog/problems/other/genlist_4/en.py
+++ b/prolog/problems/other/genlist_4/en.py
@@ -1,6 +1,5 @@
# coding=utf-8
-id = 127
name = 'genlist/4'
slug = 'generate a list of random numbers'
diff --git a/prolog/problems/sets/common.py b/prolog/problems/sets/common.py
new file mode 100644
index 0000000..104aa9d
--- /dev/null
+++ b/prolog/problems/sets/common.py
@@ -0,0 +1,2 @@
+id = 5
+number = 4
diff --git a/prolog/problems/sets/diff_3/common.py b/prolog/problems/sets/diff_3/common.py
index 82a6fe9..fee93b2 100644
--- a/prolog/problems/sets/diff_3/common.py
+++ b/prolog/problems/sets/diff_3/common.py
@@ -1,7 +1,6 @@
# coding=utf-8
id = 130
-group = 'sets'
number = 37
visible = True
facts = None
diff --git a/prolog/problems/sets/diff_3/en.py b/prolog/problems/sets/diff_3/en.py
index 7ce6944..47def00 100644
--- a/prolog/problems/sets/diff_3/en.py
+++ b/prolog/problems/sets/diff_3/en.py
@@ -1,6 +1,5 @@
# coding=utf-8
-id = 130
name = 'diff/3'
slug = 'find the difference of two sets'
diff --git a/prolog/problems/sets/intersect_3/common.py b/prolog/problems/sets/intersect_3/common.py
index b2250e6..501cdf3 100644
--- a/prolog/problems/sets/intersect_3/common.py
+++ b/prolog/problems/sets/intersect_3/common.py
@@ -1,7 +1,6 @@
# coding=utf-8
id = 129
-group = 'sets'
number = 36
visible = True
facts = None
diff --git a/prolog/problems/sets/intersect_3/en.py b/prolog/problems/sets/intersect_3/en.py
index def0ab5..fed5e34 100644
--- a/prolog/problems/sets/intersect_3/en.py
+++ b/prolog/problems/sets/intersect_3/en.py
@@ -1,6 +1,5 @@
# coding=utf-8
-id = 129
name = 'intersect/3'
slug = 'find the intersection of two sets'
diff --git a/prolog/problems/sets/is_subset_2/common.py b/prolog/problems/sets/is_subset_2/common.py
index 330ca21..4047146 100644
--- a/prolog/problems/sets/is_subset_2/common.py
+++ b/prolog/problems/sets/is_subset_2/common.py
@@ -1,7 +1,6 @@
# coding=utf-8
id = 132
-group = 'sets'
number = 39
visible = True
facts = None
diff --git a/prolog/problems/sets/is_subset_2/en.py b/prolog/problems/sets/is_subset_2/en.py
index b851d82..ad4804c 100644
--- a/prolog/problems/sets/is_subset_2/en.py
+++ b/prolog/problems/sets/is_subset_2/en.py
@@ -1,6 +1,5 @@
# coding=utf-8
-id = 132
name = 'is_subset/2'
slug = 'check if one set is a subset of another'
diff --git a/prolog/problems/sets/is_superset_2/common.py b/prolog/problems/sets/is_superset_2/common.py
index 356ca34..86e5dc7 100644
--- a/prolog/problems/sets/is_superset_2/common.py
+++ b/prolog/problems/sets/is_superset_2/common.py
@@ -1,7 +1,6 @@
# coding=utf-8
id = 131
-group = 'sets'
number = 38
visible = True
facts = None
diff --git a/prolog/problems/sets/is_superset_2/en.py b/prolog/problems/sets/is_superset_2/en.py
index 16b3db0..464762c 100644
--- a/prolog/problems/sets/is_superset_2/en.py
+++ b/prolog/problems/sets/is_superset_2/en.py
@@ -1,6 +1,5 @@
# coding=utf-8
-id = 131
name = 'is_superset/2'
slug = 'check if one set is a superset of the other'
diff --git a/prolog/problems/sets/powerset_2/common.py b/prolog/problems/sets/powerset_2/common.py
index 1561eed..c825430 100644
--- a/prolog/problems/sets/powerset_2/common.py
+++ b/prolog/problems/sets/powerset_2/common.py
@@ -1,7 +1,6 @@
# coding=utf-8
id = 134
-group = 'sets'
number = 41
visible = True
facts = None
diff --git a/prolog/problems/sets/powerset_2/en.py b/prolog/problems/sets/powerset_2/en.py
index dcaee19..ad2fe87 100644
--- a/prolog/problems/sets/powerset_2/en.py
+++ b/prolog/problems/sets/powerset_2/en.py
@@ -1,6 +1,5 @@
# coding=utf-8
-id = 134
name = 'powerset/2'
slug = 'find all subsets of a set'
diff --git a/prolog/problems/sets/subset_2/common.py b/prolog/problems/sets/subset_2/common.py
index 4cc2260..130d87b 100644
--- a/prolog/problems/sets/subset_2/common.py
+++ b/prolog/problems/sets/subset_2/common.py
@@ -1,7 +1,6 @@
# coding=utf-8
id = 133
-group = 'sets'
number = 40
visible = True
facts = None
diff --git a/prolog/problems/sets/subset_2/en.py b/prolog/problems/sets/subset_2/en.py
index 78c1362..eb96ac0 100644
--- a/prolog/problems/sets/subset_2/en.py
+++ b/prolog/problems/sets/subset_2/en.py
@@ -1,6 +1,5 @@
# coding=utf-8
-id = 133
name = 'subset/2'
slug = 'generate all subsets of a set'
diff --git a/prolog/problems/sets/union_3/common.py b/prolog/problems/sets/union_3/common.py
index bd77d3a..2a14245 100644
--- a/prolog/problems/sets/union_3/common.py
+++ b/prolog/problems/sets/union_3/common.py
@@ -1,7 +1,6 @@
# coding=utf-8
id = 128
-group = 'sets'
number = 35
visible = True
facts = None
diff --git a/prolog/problems/sets/union_3/en.py b/prolog/problems/sets/union_3/en.py
index 1c9379e..db6bbd9 100644
--- a/prolog/problems/sets/union_3/en.py
+++ b/prolog/problems/sets/union_3/en.py
@@ -1,6 +1,5 @@
# coding=utf-8
-id = 128
name = 'union/3'
slug = 'find the union of two sets'
diff --git a/prolog/problems/sorting/common.py b/prolog/problems/sorting/common.py
new file mode 100644
index 0000000..f006f10
--- /dev/null
+++ b/prolog/problems/sorting/common.py
@@ -0,0 +1,2 @@
+id = 3
+number = 3
diff --git a/prolog/problems/sorting/is_sorted_1/common.py b/prolog/problems/sorting/is_sorted_1/common.py
index 4bb3fa9..8feb549 100644
--- a/prolog/problems/sorting/is_sorted_1/common.py
+++ b/prolog/problems/sorting/is_sorted_1/common.py
@@ -1,7 +1,6 @@
# coding=utf-8
id = 121
-group = 'sorting'
number = 28
visible = True
facts = None
diff --git a/prolog/problems/sorting/is_sorted_1/en.py b/prolog/problems/sorting/is_sorted_1/en.py
index ab8e2dc..3ea6572 100644
--- a/prolog/problems/sorting/is_sorted_1/en.py
+++ b/prolog/problems/sorting/is_sorted_1/en.py
@@ -1,6 +1,5 @@
# coding=utf-8
-id = 121
name = 'is_sorted/1'
slug = 'check if list is sorted'
diff --git a/prolog/problems/sorting/isort_2/common.py b/prolog/problems/sorting/isort_2/common.py
index 94f5f42..f2c4244 100644
--- a/prolog/problems/sorting/isort_2/common.py
+++ b/prolog/problems/sorting/isort_2/common.py
@@ -1,7 +1,6 @@
# coding=utf-8
id = 123
-group = 'sorting'
number = 30
visible = True
facts = None
diff --git a/prolog/problems/sorting/isort_2/en.py b/prolog/problems/sorting/isort_2/en.py
index d9b3796..9fba6ac 100644
--- a/prolog/problems/sorting/isort_2/en.py
+++ b/prolog/problems/sorting/isort_2/en.py
@@ -1,6 +1,5 @@
# coding=utf-8
-id = 123
name = 'isort/2'
slug = 'sort a list using insertion sort'
diff --git a/prolog/problems/sorting/pivoting_4/common.py b/prolog/problems/sorting/pivoting_4/common.py
index a8ff2f4..dd1a1a9 100644
--- a/prolog/problems/sorting/pivoting_4/common.py
+++ b/prolog/problems/sorting/pivoting_4/common.py
@@ -1,7 +1,6 @@
# coding=utf-8
id = 124
-group = 'sorting'
number = 31
visible = True
facts = None
diff --git a/prolog/problems/sorting/pivoting_4/en.py b/prolog/problems/sorting/pivoting_4/en.py
index 5a5e171..43e4ae3 100644
--- a/prolog/problems/sorting/pivoting_4/en.py
+++ b/prolog/problems/sorting/pivoting_4/en.py
@@ -1,6 +1,5 @@
# coding=utf-8
-id = 124
name = 'pivoting/4'
slug = 'split a list according to the pivot'
diff --git a/prolog/problems/sorting/quick_sort_2/common.py b/prolog/problems/sorting/quick_sort_2/common.py
index 9c2b261..4afc8fa 100644
--- a/prolog/problems/sorting/quick_sort_2/common.py
+++ b/prolog/problems/sorting/quick_sort_2/common.py
@@ -1,7 +1,6 @@
# coding=utf-8
id = 125
-group = 'sorting'
number = 32
visible = True
facts = None
diff --git a/prolog/problems/sorting/quick_sort_2/en.py b/prolog/problems/sorting/quick_sort_2/en.py
index bed1a83..faf6d41 100644
--- a/prolog/problems/sorting/quick_sort_2/en.py
+++ b/prolog/problems/sorting/quick_sort_2/en.py
@@ -1,6 +1,5 @@
# coding=utf-8
-id = 125
name = 'quick_sort/2'
slug = 'sort a list using quicksort'
diff --git a/prolog/problems/sorting/sins_3/common.py b/prolog/problems/sorting/sins_3/common.py
index ba50e65..ab592ea 100644
--- a/prolog/problems/sorting/sins_3/common.py
+++ b/prolog/problems/sorting/sins_3/common.py
@@ -1,7 +1,6 @@
# coding=utf-8
id = 122
-group = 'sorting'
number = 29
visible = True
facts = None
diff --git a/prolog/problems/sorting/sins_3/en.py b/prolog/problems/sorting/sins_3/en.py
index 384fbf7..2d9cf98 100644
--- a/prolog/problems/sorting/sins_3/en.py
+++ b/prolog/problems/sorting/sins_3/en.py
@@ -1,6 +1,5 @@
# coding=utf-8
-id = 122
name = 'sins/3'
slug = 'insert an element at correct position into a sorted list'
diff --git a/prolog/problems/sorting/slowest_sort_ever_2/common.py b/prolog/problems/sorting/slowest_sort_ever_2/common.py
index 267f06a..fc8f980 100644
--- a/prolog/problems/sorting/slowest_sort_ever_2/common.py
+++ b/prolog/problems/sorting/slowest_sort_ever_2/common.py
@@ -1,7 +1,6 @@
# coding=utf-8
id = 126
-group = 'sorting'
number = 33
visible = True
facts = None
diff --git a/prolog/problems/sorting/slowest_sort_ever_2/en.py b/prolog/problems/sorting/slowest_sort_ever_2/en.py
index 0f39645..e327102 100644
--- a/prolog/problems/sorting/slowest_sort_ever_2/en.py
+++ b/prolog/problems/sorting/slowest_sort_ever_2/en.py
@@ -1,6 +1,5 @@
# coding=utf-8
-id = 126
name = 'slowest_sort_ever/2'
slug = 'sort a list by randomly permuting elements'
diff --git a/prolog/problems/trees/common.py b/prolog/problems/trees/common.py
new file mode 100644
index 0000000..a519878
--- /dev/null
+++ b/prolog/problems/trees/common.py
@@ -0,0 +1,2 @@
+id = 6
+number = 5
diff --git a/prolog/problems/trees/deletebt_3/common.py b/prolog/problems/trees/deletebt_3/common.py
index 0963d15..98ad95f 100644
--- a/prolog/problems/trees/deletebt_3/common.py
+++ b/prolog/problems/trees/deletebt_3/common.py
@@ -1,7 +1,6 @@
# coding=utf-8
id = 137
-group = 'trees'
number = 47
visible = True
facts = None
diff --git a/prolog/problems/trees/deletebt_3/en.py b/prolog/problems/trees/deletebt_3/en.py
index a69ea15..215fced 100644
--- a/prolog/problems/trees/deletebt_3/en.py
+++ b/prolog/problems/trees/deletebt_3/en.py
@@ -1,6 +1,5 @@
# coding=utf-8
-id = 137
name = 'deleteBT/3'
slug = 'delete an element from a binary tree'
diff --git a/prolog/problems/trees/depthbt_2/common.py b/prolog/problems/trees/depthbt_2/common.py
index d8b255d..85dfa27 100644
--- a/prolog/problems/trees/depthbt_2/common.py
+++ b/prolog/problems/trees/depthbt_2/common.py
@@ -1,7 +1,6 @@
# coding=utf-8
id = 140
-group = 'trees'
number = 45
visible = True
facts = None
diff --git a/prolog/problems/trees/depthbt_2/en.py b/prolog/problems/trees/depthbt_2/en.py
index 5616bc0..94fec48 100644
--- a/prolog/problems/trees/depthbt_2/en.py
+++ b/prolog/problems/trees/depthbt_2/en.py
@@ -1,6 +1,5 @@
# coding=utf-8
-id = 140
name = 'depthBT/2'
slug = 'find the depth of a binary tree'
diff --git a/prolog/problems/trees/insertbt_3/common.py b/prolog/problems/trees/insertbt_3/common.py
index 1653183..f8ef004 100644
--- a/prolog/problems/trees/insertbt_3/common.py
+++ b/prolog/problems/trees/insertbt_3/common.py
@@ -1,7 +1,6 @@
# coding=utf-8
id = 138
-group = 'trees'
number = 48
visible = True
facts = None
diff --git a/prolog/problems/trees/insertbt_3/en.py b/prolog/problems/trees/insertbt_3/en.py
index dec4050..08eb2cd 100644
--- a/prolog/problems/trees/insertbt_3/en.py
+++ b/prolog/problems/trees/insertbt_3/en.py
@@ -1,6 +1,5 @@
# coding=utf-8
-id = 138
name = 'insertBT/3'
slug = 'insert an element into a binary tree'
diff --git a/prolog/problems/trees/maxt_2/common.py b/prolog/problems/trees/maxt_2/common.py
index 264f5e2..280cb25 100644
--- a/prolog/problems/trees/maxt_2/common.py
+++ b/prolog/problems/trees/maxt_2/common.py
@@ -1,7 +1,6 @@
# coding=utf-8
id = 143
-group = 'trees'
number = 50
visible = True
facts = None
diff --git a/prolog/problems/trees/maxt_2/en.py b/prolog/problems/trees/maxt_2/en.py
index 18e99d4..20db52e 100644
--- a/prolog/problems/trees/maxt_2/en.py
+++ b/prolog/problems/trees/maxt_2/en.py
@@ -1,6 +1,5 @@
# coding=utf-8
-id = 143
name = 'maxT/2'
slug = 'find the greatest element in a tree'
diff --git a/prolog/problems/trees/memberbt_2/common.py b/prolog/problems/trees/memberbt_2/common.py
index e983b76..f5e5435 100644
--- a/prolog/problems/trees/memberbt_2/common.py
+++ b/prolog/problems/trees/memberbt_2/common.py
@@ -1,7 +1,6 @@
# coding=utf-8
id = 135
-group = 'trees'
number = 42
visible = True
facts = None
diff --git a/prolog/problems/trees/memberbt_2/en.py b/prolog/problems/trees/memberbt_2/en.py
index e9b87a6..e8d48f2 100644
--- a/prolog/problems/trees/memberbt_2/en.py
+++ b/prolog/problems/trees/memberbt_2/en.py
@@ -1,6 +1,5 @@
# coding=utf-8
-id = 135
name = 'memberBT/2'
slug = 'find elements in a binary tree'
diff --git a/prolog/problems/trees/membert_2/common.py b/prolog/problems/trees/membert_2/common.py
index 33a966d..c91371e 100644
--- a/prolog/problems/trees/membert_2/common.py
+++ b/prolog/problems/trees/membert_2/common.py
@@ -1,7 +1,6 @@
# coding=utf-8
id = 142
-group = 'trees'
number = 49
visible = True
facts = None
diff --git a/prolog/problems/trees/membert_2/en.py b/prolog/problems/trees/membert_2/en.py
index 9095e08..738d625 100644
--- a/prolog/problems/trees/membert_2/en.py
+++ b/prolog/problems/trees/membert_2/en.py
@@ -1,6 +1,5 @@
# coding=utf-8
-id = 142
name = 'memberT/2'
slug = 'find elements in a tree'
diff --git a/prolog/problems/trees/mirrorbt_2/common.py b/prolog/problems/trees/mirrorbt_2/common.py
index c10f433..cc271cc 100644
--- a/prolog/problems/trees/mirrorbt_2/common.py
+++ b/prolog/problems/trees/mirrorbt_2/common.py
@@ -1,7 +1,6 @@
# coding=utf-8
id = 136
-group = 'trees'
number = 43
visible = True
facts = None
diff --git a/prolog/problems/trees/mirrorbt_2/en.py b/prolog/problems/trees/mirrorbt_2/en.py
index 797ca93..85c2a54 100644
--- a/prolog/problems/trees/mirrorbt_2/en.py
+++ b/prolog/problems/trees/mirrorbt_2/en.py
@@ -1,6 +1,5 @@
# coding=utf-8
-id = 136
name = 'mirrorBT/2'
slug = 'flip a binary tree horizontally'
diff --git a/prolog/problems/trees/numberbt_2/common.py b/prolog/problems/trees/numberbt_2/common.py
index a7499c2..7df71d8 100644
--- a/prolog/problems/trees/numberbt_2/common.py
+++ b/prolog/problems/trees/numberbt_2/common.py
@@ -1,7 +1,6 @@
# coding=utf-8
id = 139
-group = 'trees'
number = 44
visible = True
facts = None
diff --git a/prolog/problems/trees/numberbt_2/en.py b/prolog/problems/trees/numberbt_2/en.py
index d0f835c..3be193d 100644
--- a/prolog/problems/trees/numberbt_2/en.py
+++ b/prolog/problems/trees/numberbt_2/en.py
@@ -1,6 +1,5 @@
# coding=utf-8
-id = 139
name = 'numberBT/2'
slug = 'find the number of nodes in a binary tree'
diff --git a/prolog/problems/trees/tolistbt_2/common.py b/prolog/problems/trees/tolistbt_2/common.py
index c9765df..e6c8ffd 100644
--- a/prolog/problems/trees/tolistbt_2/common.py
+++ b/prolog/problems/trees/tolistbt_2/common.py
@@ -1,7 +1,6 @@
# coding=utf-8
id = 141
-group = 'trees'
number = 46
visible = True
facts = None
diff --git a/prolog/problems/trees/tolistbt_2/en.py b/prolog/problems/trees/tolistbt_2/en.py
index e67fffb..a6d0d4b 100644
--- a/prolog/problems/trees/tolistbt_2/en.py
+++ b/prolog/problems/trees/tolistbt_2/en.py
@@ -1,6 +1,5 @@
# coding=utf-8
-id = 141
name = 'tolistBT/2'
slug = 'construct a list with all elements of a binary tree'