From 6db9d8c68a3515c2d00972d497a749f4361440ac Mon Sep 17 00:00:00 2001 From: courtneycb Date: Wed, 5 Jun 2019 10:51:42 +1200 Subject: [PATCH 01/29] Add triangle pattern question. --- .../content/en/triangle-pattern/question.md | 14 ++++++++++++++ .../content/en/triangle-pattern/solution.py | 6 ++++++ .../en/triangle-pattern/test-case-1-code.txt | 1 + .../en/triangle-pattern/test-case-1-output.txt | 5 +++++ .../en/triangle-pattern/test-case-2-code.txt | 1 + .../en/triangle-pattern/test-case-2-output.txt | 1 + .../en/triangle-pattern/test-case-3-code.txt | 1 + .../en/triangle-pattern/test-case-3-output.txt | 8 ++++++++ .../en/triangle-pattern/test-case-4-code.txt | 1 + .../en/triangle-pattern/test-case-4-output.txt | 1 + 10 files changed, 39 insertions(+) create mode 100644 codewof/codewof/content/en/triangle-pattern/question.md create mode 100644 codewof/codewof/content/en/triangle-pattern/solution.py create mode 100644 codewof/codewof/content/en/triangle-pattern/test-case-1-code.txt create mode 100644 codewof/codewof/content/en/triangle-pattern/test-case-1-output.txt create mode 100644 codewof/codewof/content/en/triangle-pattern/test-case-2-code.txt create mode 100644 codewof/codewof/content/en/triangle-pattern/test-case-2-output.txt create mode 100644 codewof/codewof/content/en/triangle-pattern/test-case-3-code.txt create mode 100644 codewof/codewof/content/en/triangle-pattern/test-case-3-output.txt create mode 100644 codewof/codewof/content/en/triangle-pattern/test-case-4-code.txt create mode 100644 codewof/codewof/content/en/triangle-pattern/test-case-4-output.txt diff --git a/codewof/codewof/content/en/triangle-pattern/question.md b/codewof/codewof/content/en/triangle-pattern/question.md new file mode 100644 index 000000000..195490709 --- /dev/null +++ b/codewof/codewof/content/en/triangle-pattern/question.md @@ -0,0 +1,14 @@ +# Triangle pattern + +Write a function `triangle(x)` that takes an integer `x` and prints out a triangle (made up of `*` symbols) of depth `x`. +For example if we call `triangle(5)` we would expect the output to be: + +``` +* +** +*** +**** +***** +``` + +If `x` is less than 1 (inlcusive), your function should print `That isn't a triangle!` diff --git a/codewof/codewof/content/en/triangle-pattern/solution.py b/codewof/codewof/content/en/triangle-pattern/solution.py new file mode 100644 index 000000000..52f104e7b --- /dev/null +++ b/codewof/codewof/content/en/triangle-pattern/solution.py @@ -0,0 +1,6 @@ +def triangle(x): + if x <= 1: + print("That isn't a triangle!") + else: + for i in range(1, x+1): + print(i * '*') diff --git a/codewof/codewof/content/en/triangle-pattern/test-case-1-code.txt b/codewof/codewof/content/en/triangle-pattern/test-case-1-code.txt new file mode 100644 index 000000000..d55baa83c --- /dev/null +++ b/codewof/codewof/content/en/triangle-pattern/test-case-1-code.txt @@ -0,0 +1 @@ +triangle(5) diff --git a/codewof/codewof/content/en/triangle-pattern/test-case-1-output.txt b/codewof/codewof/content/en/triangle-pattern/test-case-1-output.txt new file mode 100644 index 000000000..9a639e0c7 --- /dev/null +++ b/codewof/codewof/content/en/triangle-pattern/test-case-1-output.txt @@ -0,0 +1,5 @@ +* +** +*** +**** +***** diff --git a/codewof/codewof/content/en/triangle-pattern/test-case-2-code.txt b/codewof/codewof/content/en/triangle-pattern/test-case-2-code.txt new file mode 100644 index 000000000..02c459b8e --- /dev/null +++ b/codewof/codewof/content/en/triangle-pattern/test-case-2-code.txt @@ -0,0 +1 @@ +triangle(1) diff --git a/codewof/codewof/content/en/triangle-pattern/test-case-2-output.txt b/codewof/codewof/content/en/triangle-pattern/test-case-2-output.txt new file mode 100644 index 000000000..d4a28e853 --- /dev/null +++ b/codewof/codewof/content/en/triangle-pattern/test-case-2-output.txt @@ -0,0 +1 @@ +That isn't a triangle! diff --git a/codewof/codewof/content/en/triangle-pattern/test-case-3-code.txt b/codewof/codewof/content/en/triangle-pattern/test-case-3-code.txt new file mode 100644 index 000000000..e2442fee3 --- /dev/null +++ b/codewof/codewof/content/en/triangle-pattern/test-case-3-code.txt @@ -0,0 +1 @@ +triangle(8) diff --git a/codewof/codewof/content/en/triangle-pattern/test-case-3-output.txt b/codewof/codewof/content/en/triangle-pattern/test-case-3-output.txt new file mode 100644 index 000000000..c4bce440e --- /dev/null +++ b/codewof/codewof/content/en/triangle-pattern/test-case-3-output.txt @@ -0,0 +1,8 @@ +* +** +*** +**** +***** +****** +******* +******** diff --git a/codewof/codewof/content/en/triangle-pattern/test-case-4-code.txt b/codewof/codewof/content/en/triangle-pattern/test-case-4-code.txt new file mode 100644 index 000000000..30f93b629 --- /dev/null +++ b/codewof/codewof/content/en/triangle-pattern/test-case-4-code.txt @@ -0,0 +1 @@ +triangle(-3) diff --git a/codewof/codewof/content/en/triangle-pattern/test-case-4-output.txt b/codewof/codewof/content/en/triangle-pattern/test-case-4-output.txt new file mode 100644 index 000000000..d4a28e853 --- /dev/null +++ b/codewof/codewof/content/en/triangle-pattern/test-case-4-output.txt @@ -0,0 +1 @@ +That isn't a triangle! From 80e106ff96be6640a23fe0bef69a9681aa69b278 Mon Sep 17 00:00:00 2001 From: courtneycb Date: Wed, 5 Jun 2019 13:12:10 +1200 Subject: [PATCH 02/29] Add diamond solution. --- .../codewof/content/en/diamond-pattern/question.md | 14 ++++++++++++++ .../codewof/content/en/diamond-pattern/solution.py | 13 +++++++++++++ .../en/diamond-pattern/test-case-1-code.txt | 1 + .../en/diamond-pattern/test-case-1-output.txt | 5 +++++ .../en/diamond-pattern/test-case-2-code.txt | 1 + .../en/diamond-pattern/test-case-2-output.txt | 1 + .../en/diamond-pattern/test-case-3-code.txt | 1 + .../en/diamond-pattern/test-case-3-output.txt | 8 ++++++++ .../en/diamond-pattern/test-case-4-code.txt | 1 + .../en/diamond-pattern/test-case-4-output.txt | 1 + 10 files changed, 46 insertions(+) create mode 100644 codewof/codewof/content/en/diamond-pattern/question.md create mode 100644 codewof/codewof/content/en/diamond-pattern/solution.py create mode 100644 codewof/codewof/content/en/diamond-pattern/test-case-1-code.txt create mode 100644 codewof/codewof/content/en/diamond-pattern/test-case-1-output.txt create mode 100644 codewof/codewof/content/en/diamond-pattern/test-case-2-code.txt create mode 100644 codewof/codewof/content/en/diamond-pattern/test-case-2-output.txt create mode 100644 codewof/codewof/content/en/diamond-pattern/test-case-3-code.txt create mode 100644 codewof/codewof/content/en/diamond-pattern/test-case-3-output.txt create mode 100644 codewof/codewof/content/en/diamond-pattern/test-case-4-code.txt create mode 100644 codewof/codewof/content/en/diamond-pattern/test-case-4-output.txt diff --git a/codewof/codewof/content/en/diamond-pattern/question.md b/codewof/codewof/content/en/diamond-pattern/question.md new file mode 100644 index 000000000..f51c3c2cb --- /dev/null +++ b/codewof/codewof/content/en/diamond-pattern/question.md @@ -0,0 +1,14 @@ +# Diamond pattern + +Write a function `diamond(x)` that takes a positive, odd integer `x` and prints out a diamond (made up of `*` symbols) of size `x`. +For example if we call `diamond(5)` we would expect the output to be: + +``` + * + *** +***** + *** + * +``` + +If `x` is an even number or less than 1 (inclusive), your function should print `That isn't a diamond! Please enter a positive, odd integer.` diff --git a/codewof/codewof/content/en/diamond-pattern/solution.py b/codewof/codewof/content/en/diamond-pattern/solution.py new file mode 100644 index 000000000..87d311ada --- /dev/null +++ b/codewof/codewof/content/en/diamond-pattern/solution.py @@ -0,0 +1,13 @@ +def diamond(x): + if (x <= 1) or (x % 2 == 0): + print("That isn't a diamond! Please enter a positive, odd integer.") + else: + spaces = (x - 1) // 2 + for i in range(1, x+1, 2): + print((spaces * ' ') + (i * '*') + (spaces * ' ')) + spaces -= 1 + + spaces = 1 + for i in range(x - 2, 0, -2): + print((spaces * ' ') + (i * '*') + (spaces * ' ')) + spaces += 1 diff --git a/codewof/codewof/content/en/diamond-pattern/test-case-1-code.txt b/codewof/codewof/content/en/diamond-pattern/test-case-1-code.txt new file mode 100644 index 000000000..d55baa83c --- /dev/null +++ b/codewof/codewof/content/en/diamond-pattern/test-case-1-code.txt @@ -0,0 +1 @@ +triangle(5) diff --git a/codewof/codewof/content/en/diamond-pattern/test-case-1-output.txt b/codewof/codewof/content/en/diamond-pattern/test-case-1-output.txt new file mode 100644 index 000000000..9a639e0c7 --- /dev/null +++ b/codewof/codewof/content/en/diamond-pattern/test-case-1-output.txt @@ -0,0 +1,5 @@ +* +** +*** +**** +***** diff --git a/codewof/codewof/content/en/diamond-pattern/test-case-2-code.txt b/codewof/codewof/content/en/diamond-pattern/test-case-2-code.txt new file mode 100644 index 000000000..02c459b8e --- /dev/null +++ b/codewof/codewof/content/en/diamond-pattern/test-case-2-code.txt @@ -0,0 +1 @@ +triangle(1) diff --git a/codewof/codewof/content/en/diamond-pattern/test-case-2-output.txt b/codewof/codewof/content/en/diamond-pattern/test-case-2-output.txt new file mode 100644 index 000000000..d4a28e853 --- /dev/null +++ b/codewof/codewof/content/en/diamond-pattern/test-case-2-output.txt @@ -0,0 +1 @@ +That isn't a triangle! diff --git a/codewof/codewof/content/en/diamond-pattern/test-case-3-code.txt b/codewof/codewof/content/en/diamond-pattern/test-case-3-code.txt new file mode 100644 index 000000000..e2442fee3 --- /dev/null +++ b/codewof/codewof/content/en/diamond-pattern/test-case-3-code.txt @@ -0,0 +1 @@ +triangle(8) diff --git a/codewof/codewof/content/en/diamond-pattern/test-case-3-output.txt b/codewof/codewof/content/en/diamond-pattern/test-case-3-output.txt new file mode 100644 index 000000000..c4bce440e --- /dev/null +++ b/codewof/codewof/content/en/diamond-pattern/test-case-3-output.txt @@ -0,0 +1,8 @@ +* +** +*** +**** +***** +****** +******* +******** diff --git a/codewof/codewof/content/en/diamond-pattern/test-case-4-code.txt b/codewof/codewof/content/en/diamond-pattern/test-case-4-code.txt new file mode 100644 index 000000000..30f93b629 --- /dev/null +++ b/codewof/codewof/content/en/diamond-pattern/test-case-4-code.txt @@ -0,0 +1 @@ +triangle(-3) diff --git a/codewof/codewof/content/en/diamond-pattern/test-case-4-output.txt b/codewof/codewof/content/en/diamond-pattern/test-case-4-output.txt new file mode 100644 index 000000000..d4a28e853 --- /dev/null +++ b/codewof/codewof/content/en/diamond-pattern/test-case-4-output.txt @@ -0,0 +1 @@ +That isn't a triangle! From 7b4726282ddaacb799bd470a83181e64eb229e1d Mon Sep 17 00:00:00 2001 From: courtneycb Date: Wed, 5 Jun 2019 13:25:01 +1200 Subject: [PATCH 03/29] Update diamond test cases and solution. --- .../content/en/diamond-pattern/solution.py | 4 ++-- .../en/diamond-pattern/test-case-1-code.txt | 2 +- .../en/diamond-pattern/test-case-1-output.txt | 8 ++++---- .../en/diamond-pattern/test-case-2-code.txt | 2 +- .../en/diamond-pattern/test-case-2-output.txt | 2 +- .../en/diamond-pattern/test-case-3-code.txt | 2 +- .../en/diamond-pattern/test-case-3-output.txt | 19 +++++++++++-------- .../en/diamond-pattern/test-case-4-output.txt | 2 +- 8 files changed, 22 insertions(+), 19 deletions(-) diff --git a/codewof/codewof/content/en/diamond-pattern/solution.py b/codewof/codewof/content/en/diamond-pattern/solution.py index 87d311ada..30a09c58e 100644 --- a/codewof/codewof/content/en/diamond-pattern/solution.py +++ b/codewof/codewof/content/en/diamond-pattern/solution.py @@ -4,10 +4,10 @@ def diamond(x): else: spaces = (x - 1) // 2 for i in range(1, x+1, 2): - print((spaces * ' ') + (i * '*') + (spaces * ' ')) + print((spaces * ' ') + (i * '*')) spaces -= 1 spaces = 1 for i in range(x - 2, 0, -2): - print((spaces * ' ') + (i * '*') + (spaces * ' ')) + print((spaces * ' ') + (i * '*')) spaces += 1 diff --git a/codewof/codewof/content/en/diamond-pattern/test-case-1-code.txt b/codewof/codewof/content/en/diamond-pattern/test-case-1-code.txt index d55baa83c..c4aafe191 100644 --- a/codewof/codewof/content/en/diamond-pattern/test-case-1-code.txt +++ b/codewof/codewof/content/en/diamond-pattern/test-case-1-code.txt @@ -1 +1 @@ -triangle(5) +diamond(5) diff --git a/codewof/codewof/content/en/diamond-pattern/test-case-1-output.txt b/codewof/codewof/content/en/diamond-pattern/test-case-1-output.txt index 9a639e0c7..4533ae60d 100644 --- a/codewof/codewof/content/en/diamond-pattern/test-case-1-output.txt +++ b/codewof/codewof/content/en/diamond-pattern/test-case-1-output.txt @@ -1,5 +1,5 @@ -* -** -*** -**** + * + *** ***** + *** + * diff --git a/codewof/codewof/content/en/diamond-pattern/test-case-2-code.txt b/codewof/codewof/content/en/diamond-pattern/test-case-2-code.txt index 02c459b8e..9da0057a4 100644 --- a/codewof/codewof/content/en/diamond-pattern/test-case-2-code.txt +++ b/codewof/codewof/content/en/diamond-pattern/test-case-2-code.txt @@ -1 +1 @@ -triangle(1) +diamond(2) diff --git a/codewof/codewof/content/en/diamond-pattern/test-case-2-output.txt b/codewof/codewof/content/en/diamond-pattern/test-case-2-output.txt index d4a28e853..e4e8b3e2d 100644 --- a/codewof/codewof/content/en/diamond-pattern/test-case-2-output.txt +++ b/codewof/codewof/content/en/diamond-pattern/test-case-2-output.txt @@ -1 +1 @@ -That isn't a triangle! +That isn't a diamond! Please enter a positive, odd integer. \ No newline at end of file diff --git a/codewof/codewof/content/en/diamond-pattern/test-case-3-code.txt b/codewof/codewof/content/en/diamond-pattern/test-case-3-code.txt index e2442fee3..628f9d353 100644 --- a/codewof/codewof/content/en/diamond-pattern/test-case-3-code.txt +++ b/codewof/codewof/content/en/diamond-pattern/test-case-3-code.txt @@ -1 +1 @@ -triangle(8) +triangle(11) diff --git a/codewof/codewof/content/en/diamond-pattern/test-case-3-output.txt b/codewof/codewof/content/en/diamond-pattern/test-case-3-output.txt index c4bce440e..f6f06b571 100644 --- a/codewof/codewof/content/en/diamond-pattern/test-case-3-output.txt +++ b/codewof/codewof/content/en/diamond-pattern/test-case-3-output.txt @@ -1,8 +1,11 @@ -* -** -*** -**** -***** -****** -******* -******** + * + *** + ***** + ******* + ********* +*********** + ********* + ******* + ***** + *** + * \ No newline at end of file diff --git a/codewof/codewof/content/en/diamond-pattern/test-case-4-output.txt b/codewof/codewof/content/en/diamond-pattern/test-case-4-output.txt index d4a28e853..e4e8b3e2d 100644 --- a/codewof/codewof/content/en/diamond-pattern/test-case-4-output.txt +++ b/codewof/codewof/content/en/diamond-pattern/test-case-4-output.txt @@ -1 +1 @@ -That isn't a triangle! +That isn't a diamond! Please enter a positive, odd integer. \ No newline at end of file From c7ecf5210ace803a0ca1b64591bf64060eee9814 Mon Sep 17 00:00:00 2001 From: courtneycb Date: Wed, 5 Jun 2019 13:52:42 +1200 Subject: [PATCH 04/29] Add divisible by 3 question. --- .../codewof/content/en/divisible-by-3/question.md | 12 ++++++++++++ .../codewof/content/en/divisible-by-3/solution.py | 4 ++++ .../content/en/divisible-by-3/test-case-1-input.txt | 1 + .../content/en/divisible-by-3/test-case-1-output.txt | 3 +++ .../content/en/divisible-by-3/test-case-2-input.txt | 1 + .../content/en/divisible-by-3/test-case-2-output.txt | 0 .../content/en/divisible-by-3/test-case-3-input.txt | 1 + .../content/en/divisible-by-3/test-case-3-output.txt | 5 +++++ 8 files changed, 27 insertions(+) create mode 100644 codewof/codewof/content/en/divisible-by-3/question.md create mode 100644 codewof/codewof/content/en/divisible-by-3/solution.py create mode 100644 codewof/codewof/content/en/divisible-by-3/test-case-1-input.txt create mode 100644 codewof/codewof/content/en/divisible-by-3/test-case-1-output.txt create mode 100644 codewof/codewof/content/en/divisible-by-3/test-case-2-input.txt create mode 100644 codewof/codewof/content/en/divisible-by-3/test-case-2-output.txt create mode 100644 codewof/codewof/content/en/divisible-by-3/test-case-3-input.txt create mode 100644 codewof/codewof/content/en/divisible-by-3/test-case-3-output.txt diff --git a/codewof/codewof/content/en/divisible-by-3/question.md b/codewof/codewof/content/en/divisible-by-3/question.md new file mode 100644 index 000000000..1e99f929b --- /dev/null +++ b/codewof/codewof/content/en/divisible-by-3/question.md @@ -0,0 +1,12 @@ +# Divisible by 3 + +Write a function `divisible_by_three(x)` that takes a Python list of numbers, `x`, and prints out the +numbers in the list that are divisble by 3. + +For example if we call `divisible_by_three([6,97,43,27,99])` the output should be: + +``` +6 +27 +99 +``` diff --git a/codewof/codewof/content/en/divisible-by-3/solution.py b/codewof/codewof/content/en/divisible-by-3/solution.py new file mode 100644 index 000000000..15f10f04f --- /dev/null +++ b/codewof/codewof/content/en/divisible-by-3/solution.py @@ -0,0 +1,4 @@ +def divisible_by_three(x): + for num in x: + if num % 3 == 0: + print(num) diff --git a/codewof/codewof/content/en/divisible-by-3/test-case-1-input.txt b/codewof/codewof/content/en/divisible-by-3/test-case-1-input.txt new file mode 100644 index 000000000..1c6107c39 --- /dev/null +++ b/codewof/codewof/content/en/divisible-by-3/test-case-1-input.txt @@ -0,0 +1 @@ +divisible_by_three([6,97,43,27,99]) diff --git a/codewof/codewof/content/en/divisible-by-3/test-case-1-output.txt b/codewof/codewof/content/en/divisible-by-3/test-case-1-output.txt new file mode 100644 index 000000000..6611be905 --- /dev/null +++ b/codewof/codewof/content/en/divisible-by-3/test-case-1-output.txt @@ -0,0 +1,3 @@ +6 +27 +99 diff --git a/codewof/codewof/content/en/divisible-by-3/test-case-2-input.txt b/codewof/codewof/content/en/divisible-by-3/test-case-2-input.txt new file mode 100644 index 000000000..bc5f193cf --- /dev/null +++ b/codewof/codewof/content/en/divisible-by-3/test-case-2-input.txt @@ -0,0 +1 @@ +divisible_by_three([1,4,98]) diff --git a/codewof/codewof/content/en/divisible-by-3/test-case-2-output.txt b/codewof/codewof/content/en/divisible-by-3/test-case-2-output.txt new file mode 100644 index 000000000..e69de29bb diff --git a/codewof/codewof/content/en/divisible-by-3/test-case-3-input.txt b/codewof/codewof/content/en/divisible-by-3/test-case-3-input.txt new file mode 100644 index 000000000..3b60e8399 --- /dev/null +++ b/codewof/codewof/content/en/divisible-by-3/test-case-3-input.txt @@ -0,0 +1 @@ +divisible_by_three([-3,105,-936, 65, 33, 90]) diff --git a/codewof/codewof/content/en/divisible-by-3/test-case-3-output.txt b/codewof/codewof/content/en/divisible-by-3/test-case-3-output.txt new file mode 100644 index 000000000..4410454aa --- /dev/null +++ b/codewof/codewof/content/en/divisible-by-3/test-case-3-output.txt @@ -0,0 +1,5 @@ +-3 +105 +-936 +33 +90 From 58258fc8e7d220bd8696eb696dfc57ce1643e417 Mon Sep 17 00:00:00 2001 From: courtneycb Date: Wed, 5 Jun 2019 13:55:33 +1200 Subject: [PATCH 05/29] Add questions to structure file. --- .../codewof/content/structure/questions.yaml | 26 +++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/codewof/codewof/content/structure/questions.yaml b/codewof/codewof/content/structure/questions.yaml index cf597c152..03a09ea46 100644 --- a/codewof/codewof/content/structure/questions.yaml +++ b/codewof/codewof/content/structure/questions.yaml @@ -63,3 +63,29 @@ factorial: 3: normal 4: normal 5: normal + +triangle-pattern: + types: + - function + test-cases: + 1: normal + 2: normal + 3: normal + 4: normal + +diamond-pattern: + types: + - function + test-cases: + 1: normal + 2: normal + 3: normal + 4: normal + +divisible-by-three: + types: + - function + test-cases: + 1: normal + 2: normal + 3: normal From 6b0aae4a095a3a255d061f5951aa6382c7061fc3 Mon Sep 17 00:00:00 2001 From: courtneycb Date: Wed, 5 Jun 2019 14:23:59 +1200 Subject: [PATCH 06/29] Add reverse string question and add parsons option. --- .../content/en/reverse-string/question.md | 6 ++++++ .../content/en/reverse-string/solution.py | 6 ++++++ .../en/reverse-string/test-case-1-input.txt | 1 + .../en/reverse-string/test-case-1-output.txt | 1 + .../en/reverse-string/test-case-2-input.txt | 1 + .../en/reverse-string/test-case-2-output.txt | 1 + .../en/reverse-string/test-case-3-input.txt | 1 + .../en/reverse-string/test-case-3-output.txt | 0 .../codewof/content/structure/questions.yaml | 19 +++++++++++++++++++ 9 files changed, 36 insertions(+) create mode 100644 codewof/codewof/content/en/reverse-string/question.md create mode 100644 codewof/codewof/content/en/reverse-string/solution.py create mode 100644 codewof/codewof/content/en/reverse-string/test-case-1-input.txt create mode 100644 codewof/codewof/content/en/reverse-string/test-case-1-output.txt create mode 100644 codewof/codewof/content/en/reverse-string/test-case-2-input.txt create mode 100644 codewof/codewof/content/en/reverse-string/test-case-2-output.txt create mode 100644 codewof/codewof/content/en/reverse-string/test-case-3-input.txt create mode 100644 codewof/codewof/content/en/reverse-string/test-case-3-output.txt diff --git a/codewof/codewof/content/en/reverse-string/question.md b/codewof/codewof/content/en/reverse-string/question.md new file mode 100644 index 000000000..023ea3934 --- /dev/null +++ b/codewof/codewof/content/en/reverse-string/question.md @@ -0,0 +1,6 @@ +# Reverse string + +Write a function `reverse_string(string)` that takes the string, `string`, and prints the string in reverse. + +For example, if we call `reverse_string('Mountain')` the output should be: +niatnuoM diff --git a/codewof/codewof/content/en/reverse-string/solution.py b/codewof/codewof/content/en/reverse-string/solution.py new file mode 100644 index 000000000..a252bb0f6 --- /dev/null +++ b/codewof/codewof/content/en/reverse-string/solution.py @@ -0,0 +1,6 @@ +def reverse_string(string): + reverse = '' + for char in range(len(string) - 1, -1, -1): + reverse += string[char] + + print(reverse) diff --git a/codewof/codewof/content/en/reverse-string/test-case-1-input.txt b/codewof/codewof/content/en/reverse-string/test-case-1-input.txt new file mode 100644 index 000000000..cf06f47ee --- /dev/null +++ b/codewof/codewof/content/en/reverse-string/test-case-1-input.txt @@ -0,0 +1 @@ +reverse_string('Mountain') diff --git a/codewof/codewof/content/en/reverse-string/test-case-1-output.txt b/codewof/codewof/content/en/reverse-string/test-case-1-output.txt new file mode 100644 index 000000000..028537e30 --- /dev/null +++ b/codewof/codewof/content/en/reverse-string/test-case-1-output.txt @@ -0,0 +1 @@ +niatnuoM diff --git a/codewof/codewof/content/en/reverse-string/test-case-2-input.txt b/codewof/codewof/content/en/reverse-string/test-case-2-input.txt new file mode 100644 index 000000000..95786c032 --- /dev/null +++ b/codewof/codewof/content/en/reverse-string/test-case-2-input.txt @@ -0,0 +1 @@ +reverse_string('I love Python') diff --git a/codewof/codewof/content/en/reverse-string/test-case-2-output.txt b/codewof/codewof/content/en/reverse-string/test-case-2-output.txt new file mode 100644 index 000000000..910ba2686 --- /dev/null +++ b/codewof/codewof/content/en/reverse-string/test-case-2-output.txt @@ -0,0 +1 @@ +nohtyP evol I diff --git a/codewof/codewof/content/en/reverse-string/test-case-3-input.txt b/codewof/codewof/content/en/reverse-string/test-case-3-input.txt new file mode 100644 index 000000000..114a53cde --- /dev/null +++ b/codewof/codewof/content/en/reverse-string/test-case-3-input.txt @@ -0,0 +1 @@ +reverse_string('') diff --git a/codewof/codewof/content/en/reverse-string/test-case-3-output.txt b/codewof/codewof/content/en/reverse-string/test-case-3-output.txt new file mode 100644 index 000000000..e69de29bb diff --git a/codewof/codewof/content/structure/questions.yaml b/codewof/codewof/content/structure/questions.yaml index 03a09ea46..e51b3fb23 100644 --- a/codewof/codewof/content/structure/questions.yaml +++ b/codewof/codewof/content/structure/questions.yaml @@ -67,6 +67,12 @@ factorial: triangle-pattern: types: - function + - parsons + parsons-extra-lines: + - 'for i in range(1, x):' + - 'print(" ")' + - 'print("*")' + - 'print(i * " ")' test-cases: 1: normal 2: normal @@ -89,3 +95,16 @@ divisible-by-three: 1: normal 2: normal 3: normal + +reverse-string: + types: + - function + - parsons + parsons-extra-lines: + - 'for char in range(len(string), -1, -1):' + - 'for char in range(len(string) - 1, 1, 1):' + - 'print(string[char])' + test-cases: + 1: normal + 2: normal + 3: normal From ca89a603b9817b7d4a42768a88e90291923cc7bf Mon Sep 17 00:00:00 2001 From: JackMorganNZ Date: Wed, 14 Aug 2019 13:23:57 +1200 Subject: [PATCH 07/29] Don't allow registrations if no study groups exist (fixes #38) --- codewof/research/views.py | 14 +++++++++++--- codewof/templates/research/study_detail.html | 2 +- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/codewof/research/views.py b/codewof/research/views.py index d0309e4e8..563ddbb40 100644 --- a/codewof/research/views.py +++ b/codewof/research/views.py @@ -27,7 +27,10 @@ def get_queryset(self): Returns: Study queryset. """ - studies = self.request.user.user_type.studies.all() + studies = self.request.user.user_type.studies.filter( + visible=True, + groups__isnull=False, + ).distinct() # TODO: Simplify to one database query for study in studies: study.registered = StudyRegistration.objects.filter( @@ -44,12 +47,15 @@ class StudyDetailView(LoginRequiredMixin, generic.DetailView): context_object_name = 'study' def get_queryset(self): - """Return studies objects for page. + """Return studies objects to select study from. Returns: Study queryset. """ - studies = Study.objects.filter(visible=True).order_by('start_date') + studies = Study.objects.filter( + visible=True, + groups__isnull=False, + ).distinct() return studies def get_context_data(self, **kwargs): @@ -74,6 +80,8 @@ def dispatch(self, request, *args, **kwargs): """Check if consent form can be viewed.""" self.study = Study.objects.get( pk=self.kwargs.get('pk'), + visible=True, + groups__isnull=False, ) registration = None if self.request.user.is_authenticated: diff --git a/codewof/templates/research/study_detail.html b/codewof/templates/research/study_detail.html index 6cc3edde1..1b48562a2 100644 --- a/codewof/templates/research/study_detail.html +++ b/codewof/templates/research/study_detail.html @@ -28,7 +28,7 @@

{% endif %} {% else %} -