Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
32 commits
Select commit Hold shift + click to select a range
0203783
sync allergies tests
glennj Oct 24, 2025
ea0b579
sync anagram tests
glennj Oct 24, 2025
7b3f07b
sync bank-account tests
glennj Oct 24, 2025
af93ff0
sync bob tests
glennj Oct 24, 2025
cbe6afc
sync collatz-conjecture tests
glennj Oct 24, 2025
9b0bd4c
sync dnd-character tests
glennj Oct 24, 2025
ef25413
sync gigasecond tests
glennj Oct 24, 2025
787ad8e
sync hamming tests
glennj Oct 24, 2025
359b157
sync high-scores tests
glennj Oct 24, 2025
99f0d2e
sync isbn-verifier tests
glennj Oct 24, 2025
10ce6d9
sync isogram tests
glennj Oct 24, 2025
2a68825
sync largest-series-product tests
glennj Oct 24, 2025
01403fb
sync linked-list tests
glennj Oct 24, 2025
5e0eb04
sync luhn tests
glennj Oct 24, 2025
962ab04
sync matching-brackets tests
glennj Oct 24, 2025
52dfd81
sync pangram tests
glennj Oct 24, 2025
281f428
sync phone-number tests
glennj Oct 24, 2025
1da81ce
sync pig-latin tests
glennj Oct 24, 2025
ba7ef2c
sync prime-factors tests
glennj Oct 24, 2025
c1e47c2
I had to update the example and stub for linked-list: add myself as a…
glennj Oct 24, 2025
eaff72f
sync protein-translation tests
glennj Oct 25, 2025
8b2787a
sync resistor-color-duo tests
glennj Oct 25, 2025
9c2568b
sync resistor-color-trio tests; bump difficulty
glennj Oct 25, 2025
f42293b
sync reverse-string tests; exclude grapheme cluster tests
glennj Oct 25, 2025
c9ed42f
sync roman-numerals tests
glennj Oct 25, 2025
a198222
sync series tests
glennj Oct 25, 2025
2f7b0df
sync space-age tests
glennj Oct 25, 2025
2ee9c07
sync triangle tests
glennj Oct 25, 2025
59af2d9
sync word-count tests
glennj Oct 25, 2025
3721b59
sync flatten-array tests
glennj Oct 25, 2025
7ca7ef4
sync armstrong-numbers tests; exclude bigint tests
glennj Oct 25, 2025
47950ad
reverse-string: windows does not like the wide characters test
glennj Oct 25, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion config.json
Original file line number Diff line number Diff line change
Expand Up @@ -243,7 +243,7 @@
"uuid": "169de5ae-6d7d-4ba3-bfb7-2ad75b17db93",
"practices": [],
"prerequisites": [],
"difficulty": 2,
"difficulty": 4,
"topics": [
"arrays",
"strings"
Expand Down
114 changes: 62 additions & 52 deletions exercises/practice/allergies/.meta/tests.toml
Original file line number Diff line number Diff line change
@@ -1,150 +1,160 @@
# This is an auto-generated file. Regular comments will be removed when this
# file is regenerated. Regenerating will not touch any manually added keys,
# so comments can be added in a "comment" key.
# This is an auto-generated file.
#
# Regenerating this file via `configlet sync` will:
# - Recreate every `description` key/value pair
# - Recreate every `reimplements` key/value pair, where they exist in problem-specifications
# - Remove any `include = true` key/value pair (an omitted `include` key implies inclusion)
# - Preserve any other key/value pair
#
# As user-added comments (using the # character) will be removed when this file
# is regenerated, comments can be added via a `comment` key.

[17fc7296-2440-4ac4-ad7b-d07c321bc5a0]
description = "not allergic to anything"
description = "testing for eggs allergy -> not allergic to anything"

[07ced27b-1da5-4c2e-8ae2-cb2791437546]
description = "allergic only to eggs"
description = "testing for eggs allergy -> allergic only to eggs"

[5035b954-b6fa-4b9b-a487-dae69d8c5f96]
description = "allergic to eggs and something else"
description = "testing for eggs allergy -> allergic to eggs and something else"

[64a6a83a-5723-4b5b-a896-663307403310]
description = "allergic to something, but not eggs"
description = "testing for eggs allergy -> allergic to something, but not eggs"

[90c8f484-456b-41c4-82ba-2d08d93231c6]
description = "allergic to everything"
description = "testing for eggs allergy -> allergic to everything"

[d266a59a-fccc-413b-ac53-d57cb1f0db9d]
description = "not allergic to anything"
description = "testing for peanuts allergy -> not allergic to anything"

[ea210a98-860d-46b2-a5bf-50d8995b3f2a]
description = "allergic only to peanuts"
description = "testing for peanuts allergy -> allergic only to peanuts"

[eac69ae9-8d14-4291-ac4b-7fd2c73d3a5b]
description = "allergic to peanuts and something else"
description = "testing for peanuts allergy -> allergic to peanuts and something else"

[9152058c-ce39-4b16-9b1d-283ec6d25085]
description = "allergic to something, but not peanuts"
description = "testing for peanuts allergy -> allergic to something, but not peanuts"

[d2d71fd8-63d5-40f9-a627-fbdaf88caeab]
description = "allergic to everything"
description = "testing for peanuts allergy -> allergic to everything"

[b948b0a1-cbf7-4b28-a244-73ff56687c80]
description = "not allergic to anything"
description = "testing for shellfish allergy -> not allergic to anything"

[9ce9a6f3-53e9-4923-85e0-73019047c567]
description = "allergic only to shellfish"
description = "testing for shellfish allergy -> allergic only to shellfish"

[b272fca5-57ba-4b00-bd0c-43a737ab2131]
description = "allergic to shellfish and something else"
description = "testing for shellfish allergy -> allergic to shellfish and something else"

[21ef8e17-c227-494e-8e78-470a1c59c3d8]
description = "allergic to something, but not shellfish"
description = "testing for shellfish allergy -> allergic to something, but not shellfish"

[cc789c19-2b5e-4c67-b146-625dc8cfa34e]
description = "allergic to everything"
description = "testing for shellfish allergy -> allergic to everything"

[651bde0a-2a74-46c4-ab55-02a0906ca2f5]
description = "not allergic to anything"
description = "testing for strawberries allergy -> not allergic to anything"

[b649a750-9703-4f5f-b7f7-91da2c160ece]
description = "allergic only to strawberries"
description = "testing for strawberries allergy -> allergic only to strawberries"

[50f5f8f3-3bac-47e6-8dba-2d94470a4bc6]
description = "allergic to strawberries and something else"
description = "testing for strawberries allergy -> allergic to strawberries and something else"

[23dd6952-88c9-48d7-a7d5-5d0343deb18d]
description = "allergic to something, but not strawberries"
description = "testing for strawberries allergy -> allergic to something, but not strawberries"

[74afaae2-13b6-43a2-837a-286cd42e7d7e]
description = "allergic to everything"
description = "testing for strawberries allergy -> allergic to everything"

[c49a91ef-6252-415e-907e-a9d26ef61723]
description = "not allergic to anything"
description = "testing for tomatoes allergy -> not allergic to anything"

[b69c5131-b7d0-41ad-a32c-e1b2cc632df8]
description = "allergic only to tomatoes"
description = "testing for tomatoes allergy -> allergic only to tomatoes"

[1ca50eb1-f042-4ccf-9050-341521b929ec]
description = "allergic to tomatoes and something else"
description = "testing for tomatoes allergy -> allergic to tomatoes and something else"

[e9846baa-456b-4eff-8025-034b9f77bd8e]
description = "allergic to something, but not tomatoes"
description = "testing for tomatoes allergy -> allergic to something, but not tomatoes"

[b2414f01-f3ad-4965-8391-e65f54dad35f]
description = "allergic to everything"
description = "testing for tomatoes allergy -> allergic to everything"

[978467ab-bda4-49f7-b004-1d011ead947c]
description = "not allergic to anything"
description = "testing for chocolate allergy -> not allergic to anything"

[59cf4e49-06ea-4139-a2c1-d7aad28f8cbc]
description = "allergic only to chocolate"
description = "testing for chocolate allergy -> allergic only to chocolate"

[b0a7c07b-2db7-4f73-a180-565e07040ef1]
description = "allergic to chocolate and something else"
description = "testing for chocolate allergy -> allergic to chocolate and something else"

[f5506893-f1ae-482a-b516-7532ba5ca9d2]
description = "allergic to something, but not chocolate"
description = "testing for chocolate allergy -> allergic to something, but not chocolate"

[02debb3d-d7e2-4376-a26b-3c974b6595c6]
description = "allergic to everything"
description = "testing for chocolate allergy -> allergic to everything"

[17f4a42b-c91e-41b8-8a76-4797886c2d96]
description = "not allergic to anything"
description = "testing for pollen allergy -> not allergic to anything"

[7696eba7-1837-4488-882a-14b7b4e3e399]
description = "allergic only to pollen"
description = "testing for pollen allergy -> allergic only to pollen"

[9a49aec5-fa1f-405d-889e-4dfc420db2b6]
description = "allergic to pollen and something else"
description = "testing for pollen allergy -> allergic to pollen and something else"

[3cb8e79f-d108-4712-b620-aa146b1954a9]
description = "allergic to something, but not pollen"
description = "testing for pollen allergy -> allergic to something, but not pollen"

[1dc3fe57-7c68-4043-9d51-5457128744b2]
description = "allergic to everything"
description = "testing for pollen allergy -> allergic to everything"

[d3f523d6-3d50-419b-a222-d4dfd62ce314]
description = "not allergic to anything"
description = "testing for cats allergy -> not allergic to anything"

[eba541c3-c886-42d3-baef-c048cb7fcd8f]
description = "allergic only to cats"
description = "testing for cats allergy -> allergic only to cats"

[ba718376-26e0-40b7-bbbe-060287637ea5]
description = "allergic to cats and something else"
description = "testing for cats allergy -> allergic to cats and something else"

[3c6dbf4a-5277-436f-8b88-15a206f2d6c4]
description = "allergic to something, but not cats"
description = "testing for cats allergy -> allergic to something, but not cats"

[1faabb05-2b98-4995-9046-d83e4a48a7c1]
description = "allergic to everything"
description = "testing for cats allergy -> allergic to everything"

[f9c1b8e7-7dc5-4887-aa93-cebdcc29dd8f]
description = "no allergies"
description = "list when: -> no allergies"

[9e1a4364-09a6-4d94-990f-541a94a4c1e8]
description = "just eggs"
description = "list when: -> just eggs"

[8851c973-805e-4283-9e01-d0c0da0e4695]
description = "just peanuts"
description = "list when: -> just peanuts"

[2c8943cb-005e-435f-ae11-3e8fb558ea98]
description = "just strawberries"
description = "list when: -> just strawberries"

[6fa95d26-044c-48a9-8a7b-9ee46ec32c5c]
description = "eggs and peanuts"
description = "list when: -> eggs and peanuts"

[19890e22-f63f-4c5c-a9fb-fb6eacddfe8e]
description = "more than eggs but not peanuts"
description = "list when: -> more than eggs but not peanuts"

[4b68f470-067c-44e4-889f-c9fe28917d2f]
description = "lots of stuff"
description = "list when: -> lots of stuff"

[0881b7c5-9efa-4530-91bd-68370d054bc7]
description = "everything"
description = "list when: -> everything"

[12ce86de-b347-42a0-ab7c-2e0570f0c65b]
description = "no allergen score parts"
description = "list when: -> no allergen score parts"

[93c2df3e-4f55-4fed-8116-7513092819cd]
description = "list when: -> no allergen score parts without highest valid score"
Original file line number Diff line number Diff line change
Expand Up @@ -251,4 +251,14 @@ class AllergiesSpec extends Specification {
'cats']
}

}
@Ignore
def "No allergen score parts without highest valid score"() {
given:
int score = 257
def allergies = new Allergies(score)

expect:
allergies.list() == ['eggs']
}

}
47 changes: 44 additions & 3 deletions exercises/practice/anagram/.meta/tests.toml
Original file line number Diff line number Diff line change
@@ -1,12 +1,24 @@
# This is an auto-generated file. Regular comments will be removed when this
# file is regenerated. Regenerating will not touch any manually added keys,
# so comments can be added in a "comment" key.
# This is an auto-generated file.
#
# Regenerating this file via `configlet sync` will:
# - Recreate every `description` key/value pair
# - Recreate every `reimplements` key/value pair, where they exist in problem-specifications
# - Remove any `include = true` key/value pair (an omitted `include` key implies inclusion)
# - Preserve any other key/value pair
#
# As user-added comments (using the # character) will be removed when this file
# is regenerated, comments can be added via a `comment` key.

[dd40c4d2-3c8b-44e5-992a-f42b393ec373]
description = "no matches"

[b3cca662-f50a-489e-ae10-ab8290a09bdc]
description = "detects two anagrams"
include = false

[03eb9bbe-8906-4ea0-84fa-ffe711b52c8b]
description = "detects two anagrams"
reimplements = "b3cca662-f50a-489e-ae10-ab8290a09bdc"

[a27558ee-9ba0-4552-96b1-ecf665b06556]
description = "does not detect anagram subsets"
Expand Down Expand Up @@ -34,12 +46,41 @@ description = "detects anagrams using case-insensitive possible matches"

[7cc195ad-e3c7-44ee-9fd2-d3c344806a2c]
description = "does not detect an anagram if the original word is repeated"
include = false

[630abb71-a94e-4715-8395-179ec1df9f91]
description = "does not detect an anagram if the original word is repeated"
reimplements = "7cc195ad-e3c7-44ee-9fd2-d3c344806a2c"

[9878a1c9-d6ea-4235-ae51-3ea2befd6842]
description = "anagrams must use all letters exactly once"

[85757361-4535-45fd-ac0e-3810d40debc1]
description = "words are not anagrams of themselves (case-insensitive)"
include = false

[68934ed0-010b-4ef9-857a-20c9012d1ebf]
description = "words are not anagrams of themselves"
reimplements = "85757361-4535-45fd-ac0e-3810d40debc1"

[589384f3-4c8a-4e7d-9edc-51c3e5f0c90e]
description = "words are not anagrams of themselves even if letter case is partially different"
reimplements = "85757361-4535-45fd-ac0e-3810d40debc1"

[ba53e423-7e02-41ee-9ae2-71f91e6d18e6]
description = "words are not anagrams of themselves even if letter case is completely different"
reimplements = "85757361-4535-45fd-ac0e-3810d40debc1"

[a0705568-628c-4b55-9798-82e4acde51ca]
description = "words other than themselves can be anagrams"
include = false

[33d3f67e-fbb9-49d3-a90e-0beb00861da7]
description = "words other than themselves can be anagrams"
reimplements = "a0705568-628c-4b55-9798-82e4acde51ca"

[a6854f66-eec1-4afd-a137-62ef2870c051]
description = "handles case of greek letters"

[fd3509e5-e3ba-409d-ac3d-a9ac84d13296]
description = "different characters may have the same bytes"
58 changes: 49 additions & 9 deletions exercises/practice/anagram/src/test/groovy/AnagramSpec.groovy
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ class AnagramSpec extends Specification {

where:
subject | candidates || expected
'master' | ['stream', 'pigeon', 'maters'] || ['stream', 'maters']
'solemn' | ['lemons', 'cherry', 'melons'] || ['lemons', 'melons']
}

@Ignore
Expand Down Expand Up @@ -114,8 +114,8 @@ class AnagramSpec extends Specification {
new Anagram(subject).find(candidates) == expected

where:
subject | candidates || expected
'go' | ['go Go GO'] || []
subject | candidates || expected
'go' | ['goGoGO'] || []
}

@Ignore
Expand All @@ -129,13 +129,33 @@ class AnagramSpec extends Specification {
}

@Ignore
def "Words are not anagrams of themselves (case-insensitive)"() {
def "Words are not anagrams of themselves"() {
expect:
new Anagram(subject).find(candidates) == expected

where:
subject | candidates || expected
'BANANA' | ['BANANA', 'Banana', 'banana'] || []
subject | candidates || expected
'BANANA' | ['BANANA'] || []
}

@Ignore
def "Words are not anagrams of themselves even if the letter case is partially different"() {
expect:
new Anagram(subject).find(candidates) == expected

where:
subject | candidates || expected
'BANANA' | ['Banana'] || []
}

@Ignore
def "Words are not anagrams of themselves even if the letter case is completely different"() {
expect:
new Anagram(subject).find(candidates) == expected

where:
subject | candidates || expected
'BANANA' | ['banana'] || []
}

@Ignore
Expand All @@ -144,8 +164,28 @@ class AnagramSpec extends Specification {
new Anagram(subject).find(candidates) == expected

where:
subject | candidates || expected
'LISTEN' | ['Listen', 'Silent', 'LISTEN'] || ['Silent']
subject | candidates || expected
'LISTEN' | ['Listen', 'Silent'] || ['Silent']
}

@Ignore
def "Handles case of greek letters"() {
expect:
new Anagram(subject).find(candidates) == expected

where:
subject | candidates || expected
'ΑΒΓ' | ['ΒΓΑ', 'ΒΓΔ', 'γβα', 'αβγ'] || ['ΒΓΑ', 'γβα']
}

@Ignore
def "Different characters may have the same bytes"() {
expect:
new Anagram(subject).find(candidates) == expected

where:
subject | candidates || expected
'a⬂' | ['€a'] || []
}

}
}
Loading
Loading