diff --git a/exercises/practice/allergies/.meta/config.json b/exercises/practice/allergies/.meta/config.json index 2c2f492a..53fab8e4 100644 --- a/exercises/practice/allergies/.meta/config.json +++ b/exercises/practice/allergies/.meta/config.json @@ -21,5 +21,5 @@ }, "blurb": "Given a person's allergy score, determine whether or not they're allergic to a given item, and their full list of allergies.", "source": "Exercise by the JumpstartLab team for students at The Turing School of Software and Design.", - "source_url": "https://turing.edu" + "source_url": "https://www.turing.edu/" } diff --git a/exercises/practice/bob/.meta/config.json b/exercises/practice/bob/.meta/config.json index e26d5a99..71def57b 100644 --- a/exercises/practice/bob/.meta/config.json +++ b/exercises/practice/bob/.meta/config.json @@ -23,5 +23,5 @@ }, "blurb": "Bob is a lackadaisical teenager. In conversation, his responses are very limited.", "source": "Inspired by the 'Deaf Grandma' exercise in Chris Pine's Learn to Program tutorial.", - "source_url": "https://pine.fm/LearnToProgram/?Chapter=06" + "source_url": "https://pine.fm/LearnToProgram/chap_06.html" } diff --git a/exercises/practice/etl/.meta/config.json b/exercises/practice/etl/.meta/config.json index f42f8197..97040bd7 100644 --- a/exercises/practice/etl/.meta/config.json +++ b/exercises/practice/etl/.meta/config.json @@ -20,5 +20,5 @@ }, "blurb": "Change the data format for scoring a game to more easily add other languages.", "source": "Based on an exercise by the JumpstartLab team for students at The Turing School of Software and Design.", - "source_url": "https://turing.edu" + "source_url": "https://www.turing.edu/" } diff --git a/exercises/practice/gigasecond/.meta/config.json b/exercises/practice/gigasecond/.meta/config.json index 8e4d32d3..baf80527 100644 --- a/exercises/practice/gigasecond/.meta/config.json +++ b/exercises/practice/gigasecond/.meta/config.json @@ -23,5 +23,5 @@ }, "blurb": "Given a moment, determine the moment that would be after a gigasecond has passed.", "source": "Chapter 9 in Chris Pine's online Learn to Program tutorial.", - "source_url": "https://pine.fm/LearnToProgram/?Chapter=09" + "source_url": "https://pine.fm/LearnToProgram/chap_09.html" } diff --git a/exercises/practice/grep/.meta/config.json b/exercises/practice/grep/.meta/config.json index ea1fe7d6..abbc45ce 100644 --- a/exercises/practice/grep/.meta/config.json +++ b/exercises/practice/grep/.meta/config.json @@ -21,5 +21,5 @@ }, "blurb": "Search a file for lines matching a regular expression pattern. Return the line number and contents of each matching line.", "source": "Conversation with Nate Foster.", - "source_url": "https://www.cs.cornell.edu/Courses/cs3110/2014sp/hw/0/ps0.pdf" + "source_url": "https://www.cs.cornell.edu/courses/cs3110/2014sp/hw/0/ps0.pdf" } diff --git a/exercises/practice/kindergarten-garden/.meta/config.json b/exercises/practice/kindergarten-garden/.meta/config.json index dff7652c..b5f26cd9 100644 --- a/exercises/practice/kindergarten-garden/.meta/config.json +++ b/exercises/practice/kindergarten-garden/.meta/config.json @@ -15,5 +15,5 @@ }, "blurb": "Given a diagram, determine which plants each child in the kindergarten class is responsible for.", "source": "Exercise by the JumpstartLab team for students at The Turing School of Software and Design.", - "source_url": "https://turing.edu" + "source_url": "https://www.turing.edu/" } diff --git a/exercises/practice/perfect-numbers/.meta/example.rkt b/exercises/practice/perfect-numbers/.meta/example.rkt index 35a0ae40..8c217dbd 100644 --- a/exercises/practice/perfect-numbers/.meta/example.rkt +++ b/exercises/practice/perfect-numbers/.meta/example.rkt @@ -7,7 +7,8 @@ #:when (zero? (remainder n i))) i)) -(define (classify n) +(define/contract (classify n) + (-> exact-positive-integer? symbol?) (let ([sumdivisors (divisor-sum n)]) (cond [(= n sumdivisors) 'perfect] [(> n sumdivisors) 'deficient] diff --git a/exercises/practice/perfect-numbers/.meta/tests.toml b/exercises/practice/perfect-numbers/.meta/tests.toml index ec288891..81d48408 100644 --- a/exercises/practice/perfect-numbers/.meta/tests.toml +++ b/exercises/practice/perfect-numbers/.meta/tests.toml @@ -27,6 +27,9 @@ description = "Abundant numbers -> Medium abundant number is classified correctl [ec7792e6-8786-449c-b005-ce6dd89a772b] description = "Abundant numbers -> Large abundant number is classified correctly" +[05f15b93-849c-45e9-9c7d-1ea131ef7d10] +description = "Abundant numbers -> Perfect square abundant number is classified correctly" + [e610fdc7-2b6e-43c3-a51c-b70fb37413ba] description = "Deficient numbers -> Smallest prime deficient number is classified correctly" diff --git a/exercises/practice/perfect-numbers/perfect-numbers-test.rkt b/exercises/practice/perfect-numbers/perfect-numbers-test.rkt index e8971768..4d98521f 100644 --- a/exercises/practice/perfect-numbers/perfect-numbers-test.rkt +++ b/exercises/practice/perfect-numbers/perfect-numbers-test.rkt @@ -21,6 +21,22 @@ (classify 33550336) 'perfect) + (test-equal? "Smallest abundant number" + (classify 12) + 'abundant) + + (test-equal? "Medium abundant number" + (classify 30) + 'abundant) + + (test-equal? "Large abundant number" + (classify 33550335) + 'abundant) + + (test-equal? "Perfect square abundant number" + (classify 196) + 'abundant) + (test-equal? "Smallest prime deficient number" (classify 2) 'deficient) @@ -41,16 +57,12 @@ (classify 1) 'deficient) - (test-equal? "Smallest abundant number" - (classify 12) - 'abundant) + (test-exn "zero is rejected" + exn:fail? + (lambda () (classify 0))) - (test-equal? "Medium abundant number" - (classify 30) - 'abundant) - - (test-equal? "Large abundant number" - (classify 33550335) - 'abundant))) + (test-exn "negative integer is rejected" + exn:fail? + (lambda () (classify -1))))) (run-tests suite)) diff --git a/exercises/practice/phone-number/.meta/config.json b/exercises/practice/phone-number/.meta/config.json index 62cdb13e..4f714c6e 100644 --- a/exercises/practice/phone-number/.meta/config.json +++ b/exercises/practice/phone-number/.meta/config.json @@ -22,5 +22,5 @@ }, "blurb": "Clean up user-entered phone numbers so that they can be sent SMS messages.", "source": "Exercise by the JumpstartLab team for students at The Turing School of Software and Design.", - "source_url": "https://turing.edu" + "source_url": "https://www.turing.edu/" } diff --git a/exercises/practice/pig-latin/.meta/config.json b/exercises/practice/pig-latin/.meta/config.json index a81d9680..9549cdff 100644 --- a/exercises/practice/pig-latin/.meta/config.json +++ b/exercises/practice/pig-latin/.meta/config.json @@ -15,5 +15,5 @@ }, "blurb": "Implement a program that translates from English to Pig Latin.", "source": "The Pig Latin exercise at Test First Teaching by Ultrasaurus", - "source_url": "https://github.com/ultrasaurus/test-first-teaching/blob/master/learn_ruby/pig_latin/" + "source_url": "https://github.com/ultrasaurus/test-first-teaching/tree/master/learn_ruby/pig_latin" } diff --git a/exercises/practice/reverse-string/.meta/config.json b/exercises/practice/reverse-string/.meta/config.json index 98c4f8f1..ddf9f2b3 100644 --- a/exercises/practice/reverse-string/.meta/config.json +++ b/exercises/practice/reverse-string/.meta/config.json @@ -20,5 +20,5 @@ }, "blurb": "Reverse a given string.", "source": "Introductory challenge to reverse an input string", - "source_url": "https://medium.freecodecamp.org/how-to-reverse-a-string-in-javascript-in-3-different-ways-75e4763c68cb" + "source_url": "https://www.freecodecamp.org/news/how-to-reverse-a-string-in-javascript-in-3-different-ways-75e4763c68cb" } diff --git a/exercises/practice/space-age/.meta/config.json b/exercises/practice/space-age/.meta/config.json index a15e6441..8e1d467c 100644 --- a/exercises/practice/space-age/.meta/config.json +++ b/exercises/practice/space-age/.meta/config.json @@ -15,5 +15,5 @@ }, "blurb": "Given an age in seconds, calculate how old someone is in terms of a given planet's solar years.", "source": "Partially inspired by Chapter 1 in Chris Pine's online Learn to Program tutorial.", - "source_url": "https://pine.fm/LearnToProgram/?Chapter=01" + "source_url": "https://pine.fm/LearnToProgram/chap_01.html" } diff --git a/exercises/practice/triangle/.meta/config.json b/exercises/practice/triangle/.meta/config.json index 09c86e2f..31d1015d 100644 --- a/exercises/practice/triangle/.meta/config.json +++ b/exercises/practice/triangle/.meta/config.json @@ -18,5 +18,5 @@ }, "blurb": "Determine if a triangle is equilateral, isosceles, or scalene.", "source": "The Ruby Koans triangle project, parts 1 & 2", - "source_url": "https://web.archive.org/web/20220831105330/http://rubykoans.com" + "source_url": "https://www.rubykoans.com/" }