trackler 2.2.1.136 → 2.2.1.137

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 699eec34e75cdaa468a3ce1c7a3886760cf01a6a
4
- data.tar.gz: e4eba91c00477ab11723b6ab763fddc63a8d96e5
3
+ metadata.gz: 60bf2574faa34a60a9794b94d789c9e73fb4cbe1
4
+ data.tar.gz: 40a8dc9eaba4aae1b7dacc47d7f7df71c2ad0ef5
5
5
  SHA512:
6
- metadata.gz: f33e6a32dbb9cbde60a28160521ffe29f85855f0ccdc367576bf22167b2588dd267f38067773cec141423efe21314cb22ac6dea70e51b288df5d7ddef29d3468
7
- data.tar.gz: a8edb8f1fac25c9f7fd9520803b22cbb6711d1741637c84fe0842e0544365610fdbc87d1d8e4a8a95eb81f0643b5a4534d057cdff14184cabf9a9f57c50635e0
6
+ metadata.gz: 2f84292883fa84fe0e3531f411e790247ea3f405a2ac4073b19e2330952b6e088598c41f900d47c79bf7ebb3445b624f639fd11b3a660e60c08d829afe223d71
7
+ data.tar.gz: 62435ae5728a1ff10a08382ea7a11c43985d97f5842a33ea1b27923c43c2a90fba640ccd42e3f71228a7a5ab9b1cf3b253260d93537d8f8201b7150b83991925
@@ -1,3 +1,3 @@
1
1
  module Trackler
2
- VERSION = "2.2.1.136"
2
+ VERSION = "2.2.1.137"
3
3
  end
@@ -1,18 +1,16 @@
1
- using System.Linq;
1
+ using System;
2
+ using System.Linq;
2
3
 
3
4
  public static class Proverb
4
5
  {
5
- private static readonly string[] Subjects = { "nail", "shoe", "horse", "rider", "message", "battle", "kingdom" };
6
-
7
- public static string Line(int line)
6
+ public static string[] Recite(string[] subjects)
8
7
  {
9
- if (line == 7)
10
- {
11
- return "And all for the want of a horseshoe nail.";
12
- }
8
+ Func<int, string> line = (lineIndex) =>
9
+ {
10
+ if (lineIndex == subjects.Length) return $"And all for the want of a {subjects[0]}.";
11
+ else return $"For want of a {subjects[lineIndex - 1]} the {subjects[lineIndex]} was lost.";
12
+ };
13
13
 
14
- return $"For want of a {Subjects[line - 1]} the {Subjects[line]} was lost.";
14
+ return Enumerable.Range(1, subjects.Length).Select(line).ToArray();
15
15
  }
16
-
17
- public static string AllLines() => string.Join("\n", Enumerable.Range(1, 7).Select(Line));
18
16
  }
@@ -2,12 +2,7 @@
2
2
 
3
3
  public static class Proverb
4
4
  {
5
- public static string Line(int line)
6
- {
7
- throw new NotImplementedException();
8
- }
9
-
10
- public static string AllLines()
5
+ public static string[] Recite(string[] subjects)
11
6
  {
12
7
  throw new NotImplementedException();
13
8
  }
@@ -1,36 +1,42 @@
1
- using Xunit;
1
+ // This file was auto-generated based on version 1.1.0 of the canonical data.
2
+
3
+ using Xunit;
2
4
 
3
5
  public class ProverbTest
4
6
  {
5
7
  [Fact]
6
- public void Line_one()
8
+ public void Zero_pieces()
9
+ {
10
+ Assert.Empty(Proverb.Recite(new string[] { }));
11
+ }
12
+
13
+ [Fact(Skip = "Remove to run test")]
14
+ public void One_piece()
7
15
  {
8
- Assert.Equal("For want of a nail the shoe was lost.", Proverb.Line(1));
16
+ Assert.Equal(new[] { "And all for the want of a nail." }, Proverb.Recite(new[] { "nail" }));
9
17
  }
10
18
 
11
19
  [Fact(Skip = "Remove to run test")]
12
- public void Line_four()
20
+ public void Two_pieces()
13
21
  {
14
- Assert.Equal("For want of a rider the message was lost.", Proverb.Line(4));
22
+ Assert.Equal(new[] { "For want of a nail the shoe was lost.", "And all for the want of a nail." }, Proverb.Recite(new[] { "nail", "shoe" }));
15
23
  }
16
24
 
17
25
  [Fact(Skip = "Remove to run test")]
18
- public void Line_seven()
26
+ public void Three_pieces()
19
27
  {
20
- Assert.Equal("And all for the want of a horseshoe nail.", Proverb.Line(7));
28
+ Assert.Equal(new[] { "For want of a nail the shoe was lost.", "For want of a shoe the horse was lost.", "And all for the want of a nail." }, Proverb.Recite(new[] { "nail", "shoe", "horse" }));
21
29
  }
22
30
 
23
31
  [Fact(Skip = "Remove to run test")]
24
- public void All_lines()
32
+ public void Full_proverb()
25
33
  {
26
- const string expected = "For want of a nail the shoe was lost.\n" +
27
- "For want of a shoe the horse was lost.\n" +
28
- "For want of a horse the rider was lost.\n" +
29
- "For want of a rider the message was lost.\n" +
30
- "For want of a message the battle was lost.\n" +
31
- "For want of a battle the kingdom was lost.\n" +
32
- "And all for the want of a horseshoe nail.";
34
+ Assert.Equal(new[] { "For want of a nail the shoe was lost.", "For want of a shoe the horse was lost.", "For want of a horse the rider was lost.", "For want of a rider the message was lost.", "For want of a message the battle was lost.", "For want of a battle the kingdom was lost.", "And all for the want of a nail." }, Proverb.Recite(new[] { "nail", "shoe", "horse", "rider", "message", "battle", "kingdom" }));
35
+ }
33
36
 
34
- Assert.Equal(expected, Proverb.AllLines());
37
+ [Fact(Skip = "Remove to run test")]
38
+ public void Four_pieces_modernized()
39
+ {
40
+ Assert.Equal(new[] { "For want of a pin the gun was lost.", "For want of a gun the soldier was lost.", "For want of a soldier the battle was lost.", "And all for the want of a pin." }, Proverb.Recite(new[] { "pin", "gun", "soldier", "battle" }));
35
41
  }
36
- }
42
+ }
@@ -0,0 +1,9 @@
1
+ namespace Generators
2
+ {
3
+ public sealed class DeprecatedExercise : Exercise
4
+ {
5
+ public DeprecatedExercise(string name) => Name = name;
6
+
7
+ public override string Name { get; }
8
+ }
9
+ }
@@ -29,9 +29,12 @@ namespace Generators
29
29
 
30
30
  private IEnumerable<Exercise> GetExercises()
31
31
  {
32
- foreach (var exerciseName in ConfigFile.GetExerciseNames())
32
+ foreach (var exercise in ConfigFile.GetExercises())
33
33
  {
34
- if (HasNoCanonicalData(exerciseName))
34
+ var exerciseName = exercise.Name;
35
+ if (exercise.Deprecated)
36
+ yield return new DeprecatedExercise(exerciseName);
37
+ else if (HasNoCanonicalData(exerciseName))
35
38
  yield return new MissingDataExercise(exerciseName);
36
39
  else if (IsNotImplemented(exerciseName))
37
40
  yield return new UnimplementedExercise(exerciseName);
@@ -0,0 +1,16 @@
1
+ using Generators.Output;
2
+
3
+ namespace Generators.Exercises
4
+ {
5
+ public class Proverb : GeneratorExercise
6
+ {
7
+ protected override string RenderTestMethodBodyAssert(TestMethodBody testMethodBody)
8
+ {
9
+ if (testMethodBody.CanonicalDataCase.Properties["input"]["strings"] as string[] == null)
10
+ {
11
+ return TemplateRenderer.RenderInline("Assert.Empty(Proverb.Recite(new string[] { }));", new { });
12
+ }
13
+ return base.RenderTestMethodBodyAssert(testMethodBody);
14
+ }
15
+ }
16
+ }
@@ -2,6 +2,7 @@
2
2
  using System.IO;
3
3
  using System.Linq;
4
4
  using Newtonsoft.Json;
5
+ using Generators.Output;
5
6
 
6
7
  namespace Generators.Input
7
8
  {
@@ -9,11 +10,11 @@ namespace Generators.Input
9
10
  {
10
11
  private const string ConfigFilePath = "../config.json";
11
12
 
12
- public static IEnumerable<string> GetExerciseNames()
13
+ public static IEnumerable<ConfigExercise> GetExercises()
13
14
  {
14
15
  var jsonContents = File.ReadAllText(ConfigFilePath);
15
16
  var config = JsonConvert.DeserializeObject<Config>(jsonContents);
16
- return config.Exercises.Select(exercise => exercise.Slug).OrderBy(x => x).ToArray();
17
+ return config.Exercises.OrderBy(x => x.Name).ToArray();
17
18
  }
18
19
 
19
20
  private class Config
@@ -21,9 +22,16 @@ namespace Generators.Input
21
22
  public ConfigExercise[] Exercises { get; set; }
22
23
  }
23
24
 
24
- private class ConfigExercise
25
+ public class ConfigExercise
25
26
  {
27
+ public string Name => Slug.ToExerciseName();
26
28
  public string Slug { get; set; }
29
+ public bool Core { get; set; }
30
+ public int Difficulty { get; set; }
31
+ public string[] Topics { get; set; }
32
+ public string Unlocked_By { get; set; }
33
+ public string UUID { get; set; }
34
+ public bool Deprecated { get; set; }
27
35
  }
28
36
  }
29
37
  }
@@ -158,6 +158,19 @@
158
158
  "filtering",
159
159
  "logic"
160
160
  ]
161
+ },
162
+ {
163
+ "uuid": "58bb800a-5b64-44bc-8282-77972b71e615",
164
+ "slug": "allergies",
165
+ "core": true,
166
+ "unlocked_by": null,
167
+ "difficulty": 1,
168
+ "topics": [
169
+ "classes",
170
+ "mathematics",
171
+ "bitwise_operations",
172
+ "enumerations"
173
+ ]
161
174
  }
162
175
  ]
163
176
  }
@@ -0,0 +1,47 @@
1
+ # Allergies
2
+
3
+ Given a person's allergy score, determine whether or not they're allergic to a given item, and their full list of allergies.
4
+
5
+ An allergy test produces a single numeric score which contains the
6
+ information about all the allergies the person has (that they were
7
+ tested for).
8
+
9
+ The list of items (and their value) that were tested are:
10
+
11
+ * eggs (1)
12
+ * peanuts (2)
13
+ * shellfish (4)
14
+ * strawberries (8)
15
+ * tomatoes (16)
16
+ * chocolate (32)
17
+ * pollen (64)
18
+ * cats (128)
19
+
20
+ So if Tom is allergic to peanuts and chocolate, he gets a score of 34.
21
+
22
+ Now, given just that score of 34, your program should be able to say:
23
+
24
+ - Whether Tom is allergic to any one of those allergens listed above.
25
+ - All the allergens Tom is allergic to.
26
+
27
+ Note: a given score may include allergens **not** listed above (i.e.
28
+ allergens that score 256, 512, 1024, etc.). Your program should
29
+ ignore those components of the score. For example, if the allergy
30
+ score is 257, your program should only report the eggs (1) allergy.
31
+
32
+ ## Submitting Exercises
33
+
34
+ Note that, when trying to submit an exercise, make sure the solution is in the `$EXERCISM_WORKSPACE/nim/allergies` directory.
35
+
36
+ You can find your Exercism workspace by running `exercism debug` and looking for the line that starts with `Workspace`.
37
+
38
+ For more detailed information about running tests, code style and linting,
39
+ please see the [help page](http://exercism.io/languages/nim).
40
+
41
+ ## Source
42
+
43
+ Jumpstart Lab Warm-up [http://jumpstartlab.com](http://jumpstartlab.com)
44
+
45
+ ## Submitting Incomplete Solutions
46
+
47
+ It's possible to submit an incomplete solution so you can see how others have completed the exercise.
@@ -0,0 +1,68 @@
1
+ import unittest
2
+
3
+ import allergies
4
+
5
+
6
+ test "no allergies means not allergic":
7
+ let allergies = Allergies(score: 0)
8
+ check allergies.is_allergic_to("peanuts") == false
9
+ check allergies.is_allergic_to("cats") == false
10
+ check allergies.is_allergic_to("strawberries") == false
11
+
12
+ test "is allergic to eggs":
13
+ let allergies = Allergies(score: 1)
14
+ check allergies.is_allergic_to("eggs") == true
15
+
16
+ test "allergic to eggs in addition to other stuff":
17
+ let allergies = Allergies(score: 5)
18
+ check allergies.is_allergic_to("eggs") == true
19
+ check allergies.is_allergic_to("shellfish") == true
20
+ check allergies.is_allergic_to("strawberries") == false
21
+
22
+ test "no allergies at all":
23
+ let allergies = Allergies(score: 0)
24
+ check allergies.lst == newSeq[string](0)
25
+
26
+ test "allergic to just eggs":
27
+ let allergies = Allergies(score: 1)
28
+ check allergies.lst == @["eggs"]
29
+
30
+ test "allergic to just peanuts":
31
+ let allergies = Allergies(score: 2)
32
+ check allergies.lst == @["peanuts"]
33
+
34
+ test "allergic to just strawberries":
35
+ let allergies = Allergies(score: 8)
36
+ check allergies.lst == @["strawberries"]
37
+
38
+ test "allergic to eggs and peanuts":
39
+ let allergies = Allergies(score: 3)
40
+ check allergies.lst == @["eggs", "peanuts"]
41
+
42
+ test "allergic to more than eggs but not peanuts":
43
+ let allergies = Allergies(score: 5)
44
+ check allergies.lst == @["eggs", "shellfish"]
45
+
46
+ test "allergic to lots of stuff":
47
+ let allergies = Allergies(score: 248)
48
+ check allergies.lst == @[
49
+ "strawberries", "tomatoes", "chocolate", "pollen", "cats"
50
+ ]
51
+
52
+ test "allergic to everything":
53
+ let allergies = Allergies(score: 255)
54
+ check allergies.lst == @[
55
+ "eggs", "peanuts", "shellfish", "strawberries", "tomatoes",
56
+ "chocolate", "pollen", "cats"
57
+ ]
58
+
59
+ test "ignore non allergen score parts only eggs":
60
+ let allergies = Allergies(score: 257)
61
+ check allergies.lst == @["eggs"]
62
+
63
+ test "ignore non allergen score parts":
64
+ let allergies = Allergies(score: 509)
65
+ check allergies.lst == @[
66
+ "eggs", "shellfish", "strawberries", "tomatoes", "chocolate",
67
+ "pollen", "cats"
68
+ ]
@@ -0,0 +1,24 @@
1
+ import sequtils
2
+
3
+ type
4
+ Allergies* = object
5
+ score*: int
6
+
7
+ var
8
+ allergiesList = [
9
+ "eggs",
10
+ "peanuts",
11
+ "shellfish",
12
+ "strawberries",
13
+ "tomatoes",
14
+ "chocolate",
15
+ "pollen",
16
+ "cats"
17
+ ]
18
+
19
+
20
+ proc is_allergic_to*(allergies: Allergies, allergy: string): bool =
21
+ (allergies.score and 1 shl allergiesList.find(allergy)) != 0
22
+
23
+ proc lst*(allergies: Allergies): seq[string] =
24
+ allergiesList.filterIt(allergies.is_allergic_to(it))
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: trackler
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.2.1.136
4
+ version: 2.2.1.137
5
5
  platform: ruby
6
6
  authors:
7
7
  - Katrina Owen
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-04-21 00:00:00.000000000 Z
11
+ date: 2018-04-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rubyzip
@@ -3155,6 +3155,7 @@ files:
3155
3155
  - tracks/csharp/exercises/zipper/ZipperTest.cs
3156
3156
  - tracks/csharp/generators/.gitignore
3157
3157
  - tracks/csharp/generators/CustomExercise.cs
3158
+ - tracks/csharp/generators/DeprecatedExercise.cs
3158
3159
  - tracks/csharp/generators/Exercise.cs
3159
3160
  - tracks/csharp/generators/ExerciseCollection.cs
3160
3161
  - tracks/csharp/generators/Exercises/Acronym.cs
@@ -3205,6 +3206,7 @@ files:
3205
3206
  - tracks/csharp/generators/Exercises/PigLatin.cs
3206
3207
  - tracks/csharp/generators/Exercises/Poker.cs
3207
3208
  - tracks/csharp/generators/Exercises/PrimeFactors.cs
3209
+ - tracks/csharp/generators/Exercises/Proverb.cs
3208
3210
  - tracks/csharp/generators/Exercises/QueenAttack.cs
3209
3211
  - tracks/csharp/generators/Exercises/RailFenceCipher.cs
3210
3212
  - tracks/csharp/generators/Exercises/Raindrops.cs
@@ -9792,6 +9794,9 @@ files:
9792
9794
  - tracks/nim/docs/RESOURCES.md
9793
9795
  - tracks/nim/docs/SNIPPET.txt
9794
9796
  - tracks/nim/docs/TESTS.md
9797
+ - tracks/nim/exercises/allergies/README.md
9798
+ - tracks/nim/exercises/allergies/allergies_test.nim
9799
+ - tracks/nim/exercises/allergies/example.nim
9795
9800
  - tracks/nim/exercises/anagram/README.md
9796
9801
  - tracks/nim/exercises/anagram/anagram_test.nim
9797
9802
  - tracks/nim/exercises/anagram/example.nim