diff --git a/exercises/practice/bank-account/.approaches/config.json b/exercises/practice/bank-account/.approaches/config.json index 54016ab92d..beedcc257c 100644 --- a/exercises/practice/bank-account/.approaches/config.json +++ b/exercises/practice/bank-account/.approaches/config.json @@ -12,7 +12,10 @@ "blurb": "Use a lock statement to prevent concurrent balance updates.", "authors": [ "erikschierboom" - ] + ], + "tags": { + "all": ["construct:lock"] + } }, { "uuid": "b6d6ab21-82bb-4285-a840-5bc209ec9524", @@ -21,7 +24,10 @@ "blurb": "Use a Mutex to prevent concurrent balance updates.", "authors": [ "erikschierboom" - ] + ], + "tags": { + "all": ["uses:Mutex"] + } } ] } diff --git a/exercises/practice/bob/.approaches/config.json b/exercises/practice/bob/.approaches/config.json index 6f69f34867..065221291a 100644 --- a/exercises/practice/bob/.approaches/config.json +++ b/exercises/practice/bob/.approaches/config.json @@ -15,7 +15,18 @@ "blurb": "Use if statements to return the answer.", "authors": [ "bobahop" - ] + ], + "tags": { + "all": ["construct:if"], + "not": [ + "technique:regular-expression", + "construct:switch", + "construct:switch-expression", + "construct:array", + "construct:list", + "construct:dictionary" + ] + } }, { "uuid": "567f04d3-368e-4874-9fde-07ce1f7b199f", @@ -24,7 +35,11 @@ "blurb": "Use switch on a tuple to return the answer.", "authors": [ "bobahop" - ] + ], + "tags": { + "all": ["construct:tuple"], + "any": ["construct:switch", "construct:switch-expression"] + } }, { "uuid": "8b31fcf5-229e-474a-aaf5-b00dc5d977c5", @@ -33,7 +48,11 @@ "blurb": "Index into an array to return the answer.", "authors": [ "bobahop" - ] + ], + "tags": { + "all": ["construct:array"], + "not": ["technique:regular-expression", "construct:tuple"] + } }, { "uuid": "4fb2cc1b-197f-458f-80fb-cdc6746ff0d6", @@ -42,7 +61,10 @@ "blurb": "Use regular expressions to return the answer.", "authors": [ "erikschierboom" - ] + ], + "tags": { + "all": ["technique:regular-expression"] + } } ] } diff --git a/exercises/practice/collatz-conjecture/.approaches/config.json b/exercises/practice/collatz-conjecture/.approaches/config.json index 97b0b5a973..7982c4b4fc 100644 --- a/exercises/practice/collatz-conjecture/.approaches/config.json +++ b/exercises/practice/collatz-conjecture/.approaches/config.json @@ -12,7 +12,10 @@ "blurb": "Use a while loop to find the number of steps.", "authors": [ "erikschierboom" - ] + ], + "tags": { + "all": ["construct:while-loop"] + } }, { "uuid": "8c7199ed-d74d-4e3d-b9d0-5f8595597528", @@ -21,7 +24,10 @@ "blurb": "Use recursion to find the number of steps.", "authors": [ "erikschierboom" - ] + ], + "tags": { + "all": ["technique:recursion"] + } }, { "uuid": "4f91abfb-4c83-4e6d-84bc-bd08211d34d6", @@ -30,7 +36,10 @@ "blurb": "Use a (lazy) sequence and count its elements to find the number of steps.", "authors": [ "erikschierboom" - ] + ], + "tags": { + "all": ["uses:Enumerable.Count", "uses:yield"] + } } ] } diff --git a/exercises/practice/darts/.approaches/config.json b/exercises/practice/darts/.approaches/config.json index 2318ec4a6e..20be28193c 100644 --- a/exercises/practice/darts/.approaches/config.json +++ b/exercises/practice/darts/.approaches/config.json @@ -12,7 +12,10 @@ "blurb": "Use if statements.", "authors": [ "erikschierboom" - ] + ], + "tags": { + "all": ["construct:if"] + } }, { "uuid": "5f0878ae-8faf-4db9-b3d5-775e2d9bff37", @@ -21,7 +24,10 @@ "blurb": "Use a switch expression.", "authors": [ "erikschierboom" - ] + ], + "tags": { + "any": ["construct:switch", "construct:switch-expression"] + } } ] } diff --git a/exercises/practice/difference-of-squares/.approaches/config.json b/exercises/practice/difference-of-squares/.approaches/config.json index 94475754c2..01b59c1536 100644 --- a/exercises/practice/difference-of-squares/.approaches/config.json +++ b/exercises/practice/difference-of-squares/.approaches/config.json @@ -12,7 +12,10 @@ "blurb": "Use LINQ to calculate the sums.", "authors": [ "erikschierboom" - ] + ], + "tags": { + "all": ["uses:linq"] + } }, { "uuid": "a6118dd7-26d5-4576-919f-11a584beeef8", @@ -21,7 +24,10 @@ "blurb": "Use a for statement to calculate the sums.", "authors": [ "erikschierboom" - ] + ], + "tags": { + "all": ["construct:for-loop"] + } }, { "uuid": "bdcb02d2-1a34-4a52-a80c-ca94907ba721", @@ -30,7 +36,10 @@ "blurb": "Use math to calculate the sums.", "authors": [ "erikschierboom" - ] + ], + "tags": { + "all": ["technique:math"] + } } ] } diff --git a/exercises/practice/diffie-hellman/.approaches/config.json b/exercises/practice/diffie-hellman/.approaches/config.json index 192f783b23..3b8b828c9b 100644 --- a/exercises/practice/diffie-hellman/.approaches/config.json +++ b/exercises/practice/diffie-hellman/.approaches/config.json @@ -12,7 +12,10 @@ "blurb": "Use the BigInteger class to easily implement diffie-hellman.", "authors": [ "erikschierboom" - ] + ], + "tags": { + "all": ["construct:big-integer"] + } } ] } diff --git a/exercises/practice/gigasecond/.approaches/config.json b/exercises/practice/gigasecond/.approaches/config.json index ee593c80fe..61b7c4c4cf 100644 --- a/exercises/practice/gigasecond/.approaches/config.json +++ b/exercises/practice/gigasecond/.approaches/config.json @@ -12,7 +12,10 @@ "blurb": "Add a gigasecond via AddSeconds().", "authors": [ "erikschierboom" - ] + ], + "tags": { + "all": ["uses:DateTime.AddSeconds"] + } }, { "uuid": "f241c90d-6cba-49ad-9e8e-59cac73ca6e5", @@ -21,7 +24,10 @@ "blurb": "Add a gigasecond via a TimeSpan.", "authors": [ "erikschierboom" - ] + ], + "tags": { + "all": ["uses:DateTime.Plus(TimeSpan)"] + } } ] } diff --git a/exercises/practice/grade-school/.approaches/config.json b/exercises/practice/grade-school/.approaches/config.json index f3694cebef..305561b9ee 100644 --- a/exercises/practice/grade-school/.approaches/config.json +++ b/exercises/practice/grade-school/.approaches/config.json @@ -12,7 +12,10 @@ "blurb": "Use specialized sorted collections for automatic sorting.", "authors": [ "erikschierboom" - ] + ], + "tags": { + "all": ["technique:sorted-collection"] + } } ] } diff --git a/exercises/practice/grains/.approaches/config.json b/exercises/practice/grains/.approaches/config.json index 75810f4f08..23c6706ee2 100644 --- a/exercises/practice/grains/.approaches/config.json +++ b/exercises/practice/grains/.approaches/config.json @@ -12,7 +12,10 @@ "blurb": "Use Math.Pow to raise 2 by a specified power.", "authors": [ "bobahop" - ] + ], + "tags": { + "all": ["uses:Math.Pow"] + } }, { "uuid": "71f823dc-c667-46ee-875f-6e73918d0336", @@ -21,7 +24,10 @@ "blurb": "Use bit-shifting to raise 2 by a specified power.", "authors": [ "bobahop" - ] + ], + "tags": { + "all": ["technique:bit-shifting"] + } }, { "uuid": "076f430a-3779-4249-a190-b75110da455b", @@ -30,7 +36,10 @@ "blurb": "Use UInt64.MaxValue for Total.", "authors": [ "bobahop" - ] + ], + "tags": { + "all": ["uses:ulong.MaxValue"] + } } ] } diff --git a/exercises/practice/hamming/.approaches/config.json b/exercises/practice/hamming/.approaches/config.json index 5d66641b75..a1569ddeaa 100644 --- a/exercises/practice/hamming/.approaches/config.json +++ b/exercises/practice/hamming/.approaches/config.json @@ -12,7 +12,10 @@ "blurb": "Calculate the hamming distance via LINQ.", "authors": [ "erikschierboom" - ] + ], + "tags": { + "all": ["uses:linq"] + } }, { "uuid": "d210b47c-b61d-4a73-be55-23c68ce1b600", @@ -21,7 +24,10 @@ "blurb": "Calculate the hamming distance using a for-loop.", "authors": [ "erikschierboom" - ] + ], + "tags": { + "all": ["construct:for-loop"] + } } ] } diff --git a/exercises/practice/isogram/.approaches/config.json b/exercises/practice/isogram/.approaches/config.json index 1c43660e96..66ab1f0771 100644 --- a/exercises/practice/isogram/.approaches/config.json +++ b/exercises/practice/isogram/.approaches/config.json @@ -12,7 +12,10 @@ "blurb": "Use Distinct with Count to return the answer.", "authors": [ "bobahop" - ] + ], + "tags": { + "all": ["uses:Enumerable.Distinct"] + } }, { "uuid": "78bc9485-94b7-4bac-8ce6-d577e85670a1", @@ -21,7 +24,10 @@ "blurb": "Use GroupBy with All and Count to return the answer.", "authors": [ "bobahop" - ] + ], + "tags": { + "all": ["uses:Enumerable.GroupBy"] + } }, { "uuid": "5a77a3ff-8474-4238-bf23-c7c657f27e34", @@ -30,7 +36,10 @@ "blurb": "Use a bit field to keep track of used letters.", "authors": [ "bobahop" - ] + ], + "tags": { + "all": ["technique:bit-shifting"] + } } ] } diff --git a/exercises/practice/leap/.approaches/config.json b/exercises/practice/leap/.approaches/config.json index 7a1684e7b9..100408e237 100644 --- a/exercises/practice/leap/.approaches/config.json +++ b/exercises/practice/leap/.approaches/config.json @@ -15,7 +15,10 @@ "blurb": "Use a chain of boolean expressions.", "authors": [ "bobahop" - ] + ], + "tags": { + "all": ["technique:boolean-logic"] + } }, { "uuid": "eebe5a57-7e58-44c2-92e6-50f46f1251ac", @@ -24,7 +27,11 @@ "blurb": "Use a ternary operator of boolean expressions.", "authors": [ "bobahop" - ] + ], + "tags": { + "all": ["construct:ternary"], + "not": ["construct:logical-and", "construct:logical-or"] + } }, { "uuid": "cb7c88a6-49f3-4744-a3e8-fcc7acc0770d", @@ -33,7 +40,11 @@ "blurb": "Use a switch on a tuple made from boolean expressions.", "authors": [ "bobahop" - ] + ], + "tags": { + "all": ["construct:tuple"], + "any": ["construct:switch-expression", "construct:switch"] + } }, { "uuid": "1691a675-03a5-47da-a878-f76cfb895dc6", @@ -42,7 +53,10 @@ "blurb": "Use DateTime addition.", "authors": [ "bobahop" - ] + ], + "tags": { + "all": ["uses:DateTime.AddDays"] + } }, { "uuid": "28483396-da67-4f59-8388-4c63065dab00", @@ -51,7 +65,10 @@ "blurb": "Use the built-in method.", "authors": [ "bobahop" - ] + ], + "tags": { + "all": ["uses:DateTime.IsLeapYear"] + } } ] } diff --git a/exercises/practice/pangram/.approaches/config.json b/exercises/practice/pangram/.approaches/config.json index 382bdcd6bc..21cf9265e9 100644 --- a/exercises/practice/pangram/.approaches/config.json +++ b/exercises/practice/pangram/.approaches/config.json @@ -12,7 +12,14 @@ "blurb": "Use All with Contains on lowercased letters.", "authors": [ "bobahop" - ] + ], + "tags": { + "all": [ + "uses:Enumerable.All", + "uses:String.Contains(char)", + "uses:String.ToLower" + ] + } }, { "uuid": "8886e091-72bf-40c7-9e86-fdde96bbbae2", @@ -21,7 +28,13 @@ "blurb": "Use All with Contains using case insensitive.", "authors": [ "bobahop" - ] + ], + "tags": { + "all": [ + "uses:Enumerable.All", + "uses:string.Contains(char, System.StringComparison)" + ] + } }, { "uuid": "7eeae24f-d815-400c-9749-b617864e185f", @@ -30,7 +43,10 @@ "blurb": "Use a bit field to keep track of used letters.", "authors": [ "bobahop" - ] + ], + "tags": { + "all": ["technique:bit-shifting"] + } } ] } diff --git a/exercises/practice/parallel-letter-frequency/.approaches/config.json b/exercises/practice/parallel-letter-frequency/.approaches/config.json index c36c194941..b2ef547535 100644 --- a/exercises/practice/parallel-letter-frequency/.approaches/config.json +++ b/exercises/practice/parallel-letter-frequency/.approaches/config.json @@ -12,7 +12,10 @@ "blurb": "Use AsParallel() to parallelize counting characters.", "authors": [ "erikschierboom" - ] + ], + "tags": { + "all": ["uses:Enumerable.AsParallel"] + } } ] } diff --git a/exercises/practice/perfect-numbers/.approaches/config.json b/exercises/practice/perfect-numbers/.approaches/config.json index 9708538e3d..9f326cc669 100644 --- a/exercises/practice/perfect-numbers/.approaches/config.json +++ b/exercises/practice/perfect-numbers/.approaches/config.json @@ -14,7 +14,10 @@ "authors": [ "erikschierboom", "aage" - ] + ], + "tags": { + "all": ["construct:if"] + } }, { "uuid": "fb72e324-eed2-46bb-a6a9-cb3bb68514bf", @@ -23,7 +26,10 @@ "blurb": "Use switch expression to check for a perfect number.", "authors": [ "aage" - ] + ], + "tags": { + "all": ["construct:switch-expression"] + } } ] } diff --git a/exercises/practice/phone-number/.approaches/config.json b/exercises/practice/phone-number/.approaches/config.json index 7613655daf..eb3636992f 100644 --- a/exercises/practice/phone-number/.approaches/config.json +++ b/exercises/practice/phone-number/.approaches/config.json @@ -12,7 +12,10 @@ "blurb": "Use a regular expression to check and parse the phone number.", "authors": [ "erikschierboom" - ] + ], + "tags": { + "all": ["technique:regular-expression"] + } } ] } diff --git a/exercises/practice/pig-latin/.approaches/config.json b/exercises/practice/pig-latin/.approaches/config.json index 8b011f0dda..d4a57fae1a 100644 --- a/exercises/practice/pig-latin/.approaches/config.json +++ b/exercises/practice/pig-latin/.approaches/config.json @@ -12,7 +12,10 @@ "blurb": "Use regular expressions to match and rewrite a sentence.", "authors": [ "erikschierboom" - ] + ], + "tags": { + "all": ["technique:regular-expression"] + } } ] } diff --git a/exercises/practice/protein-translation/.approaches/config.json b/exercises/practice/protein-translation/.approaches/config.json index 7e5d2c84eb..5b0a169e75 100644 --- a/exercises/practice/protein-translation/.approaches/config.json +++ b/exercises/practice/protein-translation/.approaches/config.json @@ -12,7 +12,10 @@ "blurb": "Iterate Substrings with Dictionary.", "authors": [ "bobahop" - ] + ], + "tags": { + "all": ["construct:dictionary", "uses:String.Substring"] + } }, { "uuid": "8f8a9272-74d7-47f7-8d66-e4b280c67de5", @@ -21,7 +24,10 @@ "blurb": "Iterate Substrings with switch.", "authors": [ "bobahop" - ] + ], + "tags": { + "all": ["construct:switch", "uses:String.Substring"] + } }, { "uuid": "2a050672-c9ac-40e7-a836-9a844f8811e8", @@ -30,7 +36,13 @@ "blurb": "Use LINQ with Dictionary.", "authors": [ "bobahop" - ] + ], + "tags": { + "all": [ + "uses:linq", + "construct:dictionary" + ] + } }, { "uuid": "07202257-f3b8-4008-b661-91234f26a6ff", @@ -39,7 +51,14 @@ "blurb": "Iterate using yield with Dictionary.", "authors": [ "bobahop" - ] + ], + "tags": { + "all": [ + "uses:yield", + "construct:dictionary", + "construct:switch-expression" + ] + } }, { "uuid": "621d443b-74a7-48d9-8339-7f1fcec53a15", @@ -48,7 +67,13 @@ "blurb": "Iterate using yield with switch.", "authors": [ "bobahop" - ] + ], + "tags": { + "all": [ + "uses:yield", + "construct:switch-expression" + ] + } } ] } diff --git a/exercises/practice/proverb/.approaches/config.json b/exercises/practice/proverb/.approaches/config.json index 2f90249e1e..068fb68b22 100644 --- a/exercises/practice/proverb/.approaches/config.json +++ b/exercises/practice/proverb/.approaches/config.json @@ -12,7 +12,10 @@ "blurb": "Use LINQ to to iterate over the subjects and recite the song.", "authors": [ "erikschierboom" - ] + ], + "tags": { + "all": ["uses:linq"] + } }, { "uuid": "17a95b9d-af7a-4e8d-9086-aa4522c21dd9", @@ -21,7 +24,10 @@ "blurb": "Use a for loop to to iterate over the subjects and recite the song.", "authors": [ "erikschierboom" - ] + ], + "tags": { + "all": ["construct:for-loop"] + } } ] } diff --git a/exercises/practice/raindrops/.approaches/config.json b/exercises/practice/raindrops/.approaches/config.json index 0308467e50..6017362a20 100644 --- a/exercises/practice/raindrops/.approaches/config.json +++ b/exercises/practice/raindrops/.approaches/config.json @@ -12,7 +12,11 @@ "blurb": "Use a chain of if statements.", "authors": [ "bobahop" - ] + ], + "tags": { + "all": ["construct:if"], + "not": ["uses:linq"] + } }, { "uuid": "dc8fca24-1a44-4bb6-a08b-50d47de757c4", @@ -21,7 +25,10 @@ "blurb": "Use the LINQ Aggregate method.", "authors": [ "bobahop" - ] + ], + "tags": { + "all": ["uses:Enumerable.Aggregate"] + } } ] } diff --git a/exercises/practice/reverse-string/.approaches/config.json b/exercises/practice/reverse-string/.approaches/config.json index c72e12960b..7f5ad25f70 100644 --- a/exercises/practice/reverse-string/.approaches/config.json +++ b/exercises/practice/reverse-string/.approaches/config.json @@ -12,7 +12,10 @@ "blurb": "Use Array.Reverse to reverse a string.", "authors": [ "erikschierboom" - ] + ], + "tags": { + "all": ["uses:Array.Reverse"] + } }, { "uuid": "581af3cf-5218-41cc-84ff-50fbb2d9601a", @@ -21,7 +24,10 @@ "blurb": "Use LINQ to concisely reverse a string.", "authors": [ "erikschierboom" - ] + ], + "tags": { + "all": ["uses:linq"] + } }, { "uuid": "448fb2b4-18ab-4e55-aa54-ad4ed6d5f7f6", @@ -30,7 +36,10 @@ "blurb": "Use Span and stack allocation for hyper-optimized string reversal.", "authors": [ "erikschierboom" - ] + ], + "tags": { + "all": ["uses:Span"] + } }, { "uuid": "053bd627-c362-4f2e-8e2f-01bd279b0ef6", @@ -39,7 +48,10 @@ "blurb": "Reverse a string using the StringBuilder class.", "authors": [ "erikschierboom" - ] + ], + "tags": { + "all": ["uses:StringBuilder"] + } } ] } diff --git a/exercises/practice/rna-transcription/.approaches/config.json b/exercises/practice/rna-transcription/.approaches/config.json index 1ee1fe1733..16f34d8608 100644 --- a/exercises/practice/rna-transcription/.approaches/config.json +++ b/exercises/practice/rna-transcription/.approaches/config.json @@ -12,7 +12,10 @@ "blurb": "Use a Dictionary and some LINQ to translate the DNA strand.", "authors": [ "erikschierboom" - ] + ], + "tags": { + "all": ["construct:dictionary"] + } }, { "uuid": "576af402-9b7f-46fd-8642-bf8fa6d0d4fa", @@ -21,7 +24,10 @@ "blurb": "Use a switch expression and some LINQ to translate the DNA strand.", "authors": [ "erikschierboom" - ] + ], + "tags": { + "all": ["construct:switch-expression"] + } } ] } diff --git a/exercises/practice/series/.approaches/config.json b/exercises/practice/series/.approaches/config.json index db46f71af6..6adacd9dea 100644 --- a/exercises/practice/series/.approaches/config.json +++ b/exercises/practice/series/.approaches/config.json @@ -12,7 +12,10 @@ "blurb": "Use a for loop to iterate over the slices.", "authors": [ "erikschierboom" - ] + ], + "tags": { + "all": ["construct:for-loop"] + } }, { "uuid": "3857e426-8dac-41f2-bea0-4c8a0b8cd7bc", @@ -21,7 +24,10 @@ "blurb": "Use LINQ to iterate over the slices.", "authors": [ "erikschierboom" - ] + ], + "tags": { + "all": ["uses:linq"] + } } ] } diff --git a/exercises/practice/sieve/.approaches/config.json b/exercises/practice/sieve/.approaches/config.json index a085884d4f..88ac209dc8 100644 --- a/exercises/practice/sieve/.approaches/config.json +++ b/exercises/practice/sieve/.approaches/config.json @@ -12,7 +12,10 @@ "blurb": "Use a BitArray to sieve out primes.", "authors": [ "erikschierboom" - ] + ], + "tags": { + "all": ["construct:bit-array"] + } }, { "uuid": "4d367233-9bd4-45f9-9b33-b08cb78e15fa", @@ -21,7 +24,10 @@ "blurb": "Use a HashSet to sieve out primes.", "authors": [ "erikschierboom" - ] + ], + "tags": { + "all": ["construct:set"] + } } ] } diff --git a/exercises/practice/two-fer/.approaches/config.json b/exercises/practice/two-fer/.approaches/config.json index 9d7256097e..b1939a4268 100644 --- a/exercises/practice/two-fer/.approaches/config.json +++ b/exercises/practice/two-fer/.approaches/config.json @@ -12,7 +12,10 @@ "blurb": "Use an optional parameter and its default value.", "authors": [ "erikschierboom" - ] + ], + "tags": { + "all": ["construct:optional-parameter"] + } }, { "uuid": "e3999368-f13c-42e9-a814-e385356fd640", @@ -21,7 +24,10 @@ "blurb": "Use method overloading.", "authors": [ "erikschierboom" - ] + ], + "tags": { + "all": ["construct:method-overloading"] + } } ] } diff --git a/exercises/practice/yacht/.approaches/config.json b/exercises/practice/yacht/.approaches/config.json index 36c2f66c3d..b7dd3b647f 100644 --- a/exercises/practice/yacht/.approaches/config.json +++ b/exercises/practice/yacht/.approaches/config.json @@ -12,7 +12,10 @@ "blurb": "Use LINQ to score yacht hands.", "authors": [ "erikschierboom" - ] + ], + "tags": { + "all": ["uses:linq"] + } } ] }