csharp
This commit is contained in:
parent
c6720da38d
commit
914532c7b5
|
@ -0,0 +1,15 @@
|
||||||
|
using System;
|
||||||
|
using System.Linq;
|
||||||
|
|
||||||
|
public static class ArmstrongNumbers
|
||||||
|
{
|
||||||
|
public static bool IsArmstrongNumber(int number)
|
||||||
|
{
|
||||||
|
var digits = number.ToString().Select(digit => int.Parse(digit.ToString())).ToList();
|
||||||
|
var num_digits = digits.Count;
|
||||||
|
var sum = 0;
|
||||||
|
foreach (var digit in digits)
|
||||||
|
sum += (int) Math.Pow(digit, num_digits);
|
||||||
|
return number == sum;
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,17 @@
|
||||||
|
<Project Sdk="Microsoft.NET.Sdk">
|
||||||
|
|
||||||
|
<PropertyGroup>
|
||||||
|
<TargetFramework>netcoreapp2.0</TargetFramework>
|
||||||
|
</PropertyGroup>
|
||||||
|
|
||||||
|
<ItemGroup>
|
||||||
|
<Compile Remove="Example.cs" />
|
||||||
|
</ItemGroup>
|
||||||
|
|
||||||
|
<ItemGroup>
|
||||||
|
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="15.5.0" />
|
||||||
|
<PackageReference Include="xunit" Version="2.3.1" />
|
||||||
|
<PackageReference Include="xunit.runner.visualstudio" Version="2.3.1" />
|
||||||
|
</ItemGroup>
|
||||||
|
|
||||||
|
</Project>
|
|
@ -0,0 +1,54 @@
|
||||||
|
// This file was auto-generated based on version 1.0.0 of the canonical data.
|
||||||
|
|
||||||
|
using Xunit;
|
||||||
|
|
||||||
|
public class ArmstrongNumbersTest
|
||||||
|
{
|
||||||
|
[Fact]
|
||||||
|
public void Single_digit_numbers_are_armstrong_numbers()
|
||||||
|
{
|
||||||
|
Assert.True(ArmstrongNumbers.IsArmstrongNumber(5));
|
||||||
|
}
|
||||||
|
|
||||||
|
[Fact]
|
||||||
|
public void There_are_no_2_digit_armstrong_numbers()
|
||||||
|
{
|
||||||
|
Assert.False(ArmstrongNumbers.IsArmstrongNumber(10));
|
||||||
|
}
|
||||||
|
|
||||||
|
[Fact]
|
||||||
|
public void Three_digit_number_that_is_an_armstrong_number()
|
||||||
|
{
|
||||||
|
Assert.True(ArmstrongNumbers.IsArmstrongNumber(153));
|
||||||
|
}
|
||||||
|
|
||||||
|
[Fact]
|
||||||
|
public void Three_digit_number_that_is_not_an_armstrong_number()
|
||||||
|
{
|
||||||
|
Assert.False(ArmstrongNumbers.IsArmstrongNumber(100));
|
||||||
|
}
|
||||||
|
|
||||||
|
[Fact]
|
||||||
|
public void Four_digit_number_that_is_an_armstrong_number()
|
||||||
|
{
|
||||||
|
Assert.True(ArmstrongNumbers.IsArmstrongNumber(9474));
|
||||||
|
}
|
||||||
|
|
||||||
|
[Fact]
|
||||||
|
public void Four_digit_number_that_is_not_an_armstrong_number()
|
||||||
|
{
|
||||||
|
Assert.False(ArmstrongNumbers.IsArmstrongNumber(9475));
|
||||||
|
}
|
||||||
|
|
||||||
|
[Fact]
|
||||||
|
public void Seven_digit_number_that_is_an_armstrong_number()
|
||||||
|
{
|
||||||
|
Assert.True(ArmstrongNumbers.IsArmstrongNumber(9926315));
|
||||||
|
}
|
||||||
|
|
||||||
|
[Fact]
|
||||||
|
public void Seven_digit_number_that_is_not_an_armstrong_number()
|
||||||
|
{
|
||||||
|
Assert.False(ArmstrongNumbers.IsArmstrongNumber(9926314));
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,20 @@
|
||||||
|
# Armstrong Numbers
|
||||||
|
|
||||||
|
An [Armstrong number](https://en.wikipedia.org/wiki/Narcissistic_number) is a number that is the sum of its own digits each raised to the power of the number of digits.
|
||||||
|
|
||||||
|
For example:
|
||||||
|
|
||||||
|
- 9 is an Armstrong number, because `9 = 9^1 = 9`
|
||||||
|
- 10 is *not* an Armstrong number, because `10 != 1^2 + 0^2 = 2`
|
||||||
|
- 153 is an Armstrong number, because: `153 = 1^3 + 5^3 + 3^3 = 1 + 125 + 27 = 153`
|
||||||
|
- 154 is *not* an Armstrong number, because: `154 != 1^3 + 5^3 + 4^3 = 1 + 125 + 64 = 190`
|
||||||
|
|
||||||
|
Write some code to determine whether a number is an Armstrong number.
|
||||||
|
|
||||||
|
|
||||||
|
## Source
|
||||||
|
|
||||||
|
Wikipedia [https://en.wikipedia.org/wiki/Narcissistic_number](https://en.wikipedia.org/wiki/Narcissistic_number)
|
||||||
|
|
||||||
|
## Submitting Incomplete Solutions
|
||||||
|
It's possible to submit an incomplete solution so you can see how others have completed the exercise.
|
|
@ -0,0 +1,17 @@
|
||||||
|
using System;
|
||||||
|
|
||||||
|
public static class CollatzConjecture
|
||||||
|
{
|
||||||
|
// If n is even, divide n by 2 to get n / 2.
|
||||||
|
// If n is odd, multiply n by 3 and add 1 to get 3n + 1.
|
||||||
|
public static int Steps(int number)
|
||||||
|
{
|
||||||
|
if (number < 1) throw new ArgumentException();
|
||||||
|
int cnt = 0;
|
||||||
|
while (number != 1) {
|
||||||
|
number = number % 2 == 0 ? number / 2 : 3 * number + 1;
|
||||||
|
cnt ++;
|
||||||
|
}
|
||||||
|
return cnt;
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,17 @@
|
||||||
|
<Project Sdk="Microsoft.NET.Sdk">
|
||||||
|
|
||||||
|
<PropertyGroup>
|
||||||
|
<TargetFramework>netcoreapp2.0</TargetFramework>
|
||||||
|
</PropertyGroup>
|
||||||
|
|
||||||
|
<ItemGroup>
|
||||||
|
<Compile Remove="Example.cs" />
|
||||||
|
</ItemGroup>
|
||||||
|
|
||||||
|
<ItemGroup>
|
||||||
|
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="15.5.0" />
|
||||||
|
<PackageReference Include="xunit" Version="2.3.1" />
|
||||||
|
<PackageReference Include="xunit.runner.visualstudio" Version="2.3.1" />
|
||||||
|
</ItemGroup>
|
||||||
|
|
||||||
|
</Project>
|
|
@ -0,0 +1,43 @@
|
||||||
|
// This file was auto-generated based on version 1.1.1 of the canonical data.
|
||||||
|
|
||||||
|
using Xunit;
|
||||||
|
using System;
|
||||||
|
|
||||||
|
public class CollatzConjectureTest
|
||||||
|
{
|
||||||
|
[Fact]
|
||||||
|
public void Zero_steps_for_one()
|
||||||
|
{
|
||||||
|
Assert.Equal(0, CollatzConjecture.Steps(1));
|
||||||
|
}
|
||||||
|
|
||||||
|
[Fact]
|
||||||
|
public void Divide_if_even()
|
||||||
|
{
|
||||||
|
Assert.Equal(4, CollatzConjecture.Steps(16));
|
||||||
|
}
|
||||||
|
|
||||||
|
[Fact]
|
||||||
|
public void Even_and_odd_steps()
|
||||||
|
{
|
||||||
|
Assert.Equal(9, CollatzConjecture.Steps(12));
|
||||||
|
}
|
||||||
|
|
||||||
|
[Fact]
|
||||||
|
public void Large_number_of_even_and_odd_steps()
|
||||||
|
{
|
||||||
|
Assert.Equal(152, CollatzConjecture.Steps(1000000));
|
||||||
|
}
|
||||||
|
|
||||||
|
[Fact]
|
||||||
|
public void Zero_is_an_error()
|
||||||
|
{
|
||||||
|
Assert.Throws<ArgumentException>(() => CollatzConjecture.Steps(0));
|
||||||
|
}
|
||||||
|
|
||||||
|
[Fact]
|
||||||
|
public void Negative_value_is_an_error()
|
||||||
|
{
|
||||||
|
Assert.Throws<ArgumentException>(() => CollatzConjecture.Steps(-15));
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,35 @@
|
||||||
|
# Collatz Conjecture
|
||||||
|
|
||||||
|
The Collatz Conjecture or 3x+1 problem can be summarized as follows:
|
||||||
|
|
||||||
|
Take any positive integer n. If n is even, divide n by 2 to get n / 2. If n is
|
||||||
|
odd, multiply n by 3 and add 1 to get 3n + 1. Repeat the process indefinitely.
|
||||||
|
The conjecture states that no matter which number you start with, you will
|
||||||
|
always reach 1 eventually.
|
||||||
|
|
||||||
|
Given a number n, return the number of steps required to reach 1.
|
||||||
|
|
||||||
|
## Examples
|
||||||
|
|
||||||
|
Starting with n = 12, the steps would be as follows:
|
||||||
|
|
||||||
|
0. 12
|
||||||
|
1. 6
|
||||||
|
2. 3
|
||||||
|
3. 10
|
||||||
|
4. 5
|
||||||
|
5. 16
|
||||||
|
6. 8
|
||||||
|
7. 4
|
||||||
|
8. 2
|
||||||
|
9. 1
|
||||||
|
|
||||||
|
Resulting in 9 steps. So for input n = 12, the return value would be 9.
|
||||||
|
|
||||||
|
|
||||||
|
## Source
|
||||||
|
|
||||||
|
An unsolved problem in mathematics named after mathematician Lothar Collatz [https://en.wikipedia.org/wiki/3x_%2B_1_problem](https://en.wikipedia.org/wiki/3x_%2B_1_problem)
|
||||||
|
|
||||||
|
## Submitting Incomplete Solutions
|
||||||
|
It's possible to submit an incomplete solution so you can see how others have completed the exercise.
|
|
@ -1,20 +1,26 @@
|
||||||
using System;
|
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
|
||||||
public class School
|
public class School
|
||||||
{
|
{
|
||||||
|
private Dictionary<int, List<string>> roster = new Dictionary<int, List<string>>();
|
||||||
|
|
||||||
public void Add(string student, int grade)
|
public void Add(string student, int grade)
|
||||||
{
|
{
|
||||||
throw new NotImplementedException("You need to implement this function.");
|
if (roster.ContainsKey(grade))
|
||||||
|
roster[grade].Add(student);
|
||||||
|
else
|
||||||
|
roster.Add(grade, new List<string> {student});
|
||||||
}
|
}
|
||||||
|
|
||||||
public IEnumerable<string> Roster()
|
public IEnumerable<string> Roster()
|
||||||
{
|
=> roster.Keys
|
||||||
throw new NotImplementedException("You need to implement this function.");
|
.OrderBy(g => g)
|
||||||
}
|
.SelectMany(g => Grade(g))
|
||||||
|
.ToList();
|
||||||
|
|
||||||
public IEnumerable<string> Grade(int grade)
|
public IEnumerable<string> Grade(int grade)
|
||||||
{
|
=> roster.ContainsKey(grade)
|
||||||
throw new NotImplementedException("You need to implement this function.");
|
? roster[grade].OrderBy(g => g).ToList()
|
||||||
}
|
: new List<string>();
|
||||||
}
|
}
|
||||||
|
|
|
@ -14,21 +14,21 @@ public class GradeSchoolTest
|
||||||
Assert.Equal(expected, actual);
|
Assert.Equal(expected, actual);
|
||||||
}
|
}
|
||||||
|
|
||||||
[Fact(Skip = "Remove to run test")]
|
[Fact]
|
||||||
public void Adding_more_students_adds_them_to_the_sorted_roster()
|
public void Adding_more_students_adds_them_to_the_sorted_roster()
|
||||||
{
|
{
|
||||||
var school = new School();
|
var school = new School();
|
||||||
school.Add("Blair", 2);
|
school.Add("Blair", 2);
|
||||||
school.Add("James", 2);
|
school.Add("James", 2);
|
||||||
school.Add("Paul", 2);
|
school.Add("Paul", 2);
|
||||||
|
|
||||||
var actual = school.Roster();
|
var actual = school.Roster();
|
||||||
|
|
||||||
var expected = new[] { "Blair", "James", "Paul" };
|
var expected = new[] { "Blair", "James", "Paul" };
|
||||||
Assert.Equal(expected, actual );
|
Assert.Equal(expected, actual);
|
||||||
}
|
}
|
||||||
|
|
||||||
[Fact(Skip = "Remove to run test")]
|
[Fact]
|
||||||
public void Adding_students_to_different_grades_adds_them_to_the_same_sorted_roster()
|
public void Adding_students_to_different_grades_adds_them_to_the_same_sorted_roster()
|
||||||
{
|
{
|
||||||
var school = new School();
|
var school = new School();
|
||||||
|
@ -41,31 +41,31 @@ public class GradeSchoolTest
|
||||||
Assert.Equal(expected, actual);
|
Assert.Equal(expected, actual);
|
||||||
}
|
}
|
||||||
|
|
||||||
[Fact(Skip = "Remove to run test")]
|
[Fact]
|
||||||
public void Grade_returns_the_students_in_that_grade_in_alphabetical_order()
|
public void Grade_returns_the_students_in_that_grade_in_alphabetical_order()
|
||||||
{
|
{
|
||||||
var school = new School();
|
var school = new School();
|
||||||
school.Add("Franklin", 5);
|
school.Add("Franklin", 5);
|
||||||
school.Add("Bradley", 5);
|
school.Add("Bradley", 5);
|
||||||
school.Add("Jeff", 1);
|
school.Add("Jeff", 1);
|
||||||
|
|
||||||
var actual = school.Grade(5);
|
var actual = school.Grade(5);
|
||||||
|
|
||||||
var expected = new[] { "Bradley", "Franklin" };
|
var expected = new[] { "Bradley", "Franklin" };
|
||||||
Assert.Equal(expected, actual);
|
Assert.Equal(expected, actual);
|
||||||
}
|
}
|
||||||
|
|
||||||
[Fact(Skip = "Remove to run test")]
|
[Fact]
|
||||||
public void Grade_returns_an_empty_list_if_there_are_no_students_in_that_grade()
|
public void Grade_returns_an_empty_list_if_there_are_no_students_in_that_grade()
|
||||||
{
|
{
|
||||||
var school = new School();
|
var school = new School();
|
||||||
|
|
||||||
var actual = school.Grade(1);
|
var actual = school.Grade(1);
|
||||||
|
|
||||||
Assert.Empty(actual);
|
Assert.Empty(actual);
|
||||||
}
|
}
|
||||||
|
|
||||||
[Fact(Skip = "Remove to run test")]
|
[Fact]
|
||||||
public void Student_names_with_grades_are_displayed_in_the_same_sorted_roster()
|
public void Student_names_with_grades_are_displayed_in_the_same_sorted_roster()
|
||||||
{
|
{
|
||||||
var school = new School();
|
var school = new School();
|
||||||
|
@ -76,10 +76,10 @@ public class GradeSchoolTest
|
||||||
school.Add("Alex", 2);
|
school.Add("Alex", 2);
|
||||||
school.Add("Jim", 3);
|
school.Add("Jim", 3);
|
||||||
school.Add("Charlie", 1);
|
school.Add("Charlie", 1);
|
||||||
|
|
||||||
var actual = school.Roster();
|
var actual = school.Roster();
|
||||||
|
|
||||||
var expected = new[] { "Anna", "Barb", "Charlie", "Alex", "Peter", "Zoe", "Jim" };
|
var expected = new[] { "Anna", "Barb", "Charlie", "Alex", "Peter", "Zoe", "Jim" };
|
||||||
Assert.Equal(expected, actual);
|
Assert.Equal(expected, actual);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,26 @@
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
|
||||||
|
public enum Plant
|
||||||
|
{
|
||||||
|
Violets,
|
||||||
|
Radishes,
|
||||||
|
Clover,
|
||||||
|
Grass
|
||||||
|
}
|
||||||
|
|
||||||
|
public class KindergartenGarden
|
||||||
|
{
|
||||||
|
public KindergartenGarden(string diagram)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
public KindergartenGarden(string diagram, IEnumerable<string> students)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
public IEnumerable<Plant> Plants(string student)
|
||||||
|
{
|
||||||
|
throw new NotImplementedException("You need to implement this function.");
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,17 @@
|
||||||
|
<Project Sdk="Microsoft.NET.Sdk">
|
||||||
|
|
||||||
|
<PropertyGroup>
|
||||||
|
<TargetFramework>netcoreapp2.0</TargetFramework>
|
||||||
|
</PropertyGroup>
|
||||||
|
|
||||||
|
<ItemGroup>
|
||||||
|
<Compile Remove="Example.cs" />
|
||||||
|
</ItemGroup>
|
||||||
|
|
||||||
|
<ItemGroup>
|
||||||
|
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="15.5.0" />
|
||||||
|
<PackageReference Include="xunit" Version="2.3.1" />
|
||||||
|
<PackageReference Include="xunit.runner.visualstudio" Version="2.3.1" />
|
||||||
|
</ItemGroup>
|
||||||
|
|
||||||
|
</Project>
|
|
@ -0,0 +1,69 @@
|
||||||
|
// This file was auto-generated based on version 1.0.0 of the canonical data.
|
||||||
|
|
||||||
|
using Xunit;
|
||||||
|
|
||||||
|
public class KindergartenGardenTest
|
||||||
|
{
|
||||||
|
[Fact]
|
||||||
|
public void Partial_garden_garden_with_single_student()
|
||||||
|
{
|
||||||
|
var sut = new KindergartenGarden("RC\nGG");
|
||||||
|
Assert.Equal(new[] { Plant.Radishes, Plant.Clover, Plant.Grass, Plant.Grass }, sut.Plants("Alice"));
|
||||||
|
}
|
||||||
|
|
||||||
|
[Fact(Skip = "Remove to run test")]
|
||||||
|
public void Partial_garden_different_garden_with_single_student()
|
||||||
|
{
|
||||||
|
var sut = new KindergartenGarden("VC\nRC");
|
||||||
|
Assert.Equal(new[] { Plant.Violets, Plant.Clover, Plant.Radishes, Plant.Clover }, sut.Plants("Alice"));
|
||||||
|
}
|
||||||
|
|
||||||
|
[Fact(Skip = "Remove to run test")]
|
||||||
|
public void Partial_garden_garden_with_two_students()
|
||||||
|
{
|
||||||
|
var sut = new KindergartenGarden("VVCG\nVVRC");
|
||||||
|
Assert.Equal(new[] { Plant.Clover, Plant.Grass, Plant.Radishes, Plant.Clover }, sut.Plants("Bob"));
|
||||||
|
}
|
||||||
|
|
||||||
|
[Fact(Skip = "Remove to run test")]
|
||||||
|
public void Partial_garden_multiple_students_for_the_same_garden_with_three_students_second_students_garden()
|
||||||
|
{
|
||||||
|
var sut = new KindergartenGarden("VVCCGG\nVVCCGG");
|
||||||
|
Assert.Equal(new[] { Plant.Clover, Plant.Clover, Plant.Clover, Plant.Clover }, sut.Plants("Bob"));
|
||||||
|
}
|
||||||
|
|
||||||
|
[Fact(Skip = "Remove to run test")]
|
||||||
|
public void Partial_garden_multiple_students_for_the_same_garden_with_three_students_third_students_garden()
|
||||||
|
{
|
||||||
|
var sut = new KindergartenGarden("VVCCGG\nVVCCGG");
|
||||||
|
Assert.Equal(new[] { Plant.Grass, Plant.Grass, Plant.Grass, Plant.Grass }, sut.Plants("Charlie"));
|
||||||
|
}
|
||||||
|
|
||||||
|
[Fact(Skip = "Remove to run test")]
|
||||||
|
public void Full_garden_first_students_garden()
|
||||||
|
{
|
||||||
|
var sut = new KindergartenGarden("VRCGVVRVCGGCCGVRGCVCGCGV\nVRCCCGCRRGVCGCRVVCVGCGCV");
|
||||||
|
Assert.Equal(new[] { Plant.Violets, Plant.Radishes, Plant.Violets, Plant.Radishes }, sut.Plants("Alice"));
|
||||||
|
}
|
||||||
|
|
||||||
|
[Fact(Skip = "Remove to run test")]
|
||||||
|
public void Full_garden_second_students_garden()
|
||||||
|
{
|
||||||
|
var sut = new KindergartenGarden("VRCGVVRVCGGCCGVRGCVCGCGV\nVRCCCGCRRGVCGCRVVCVGCGCV");
|
||||||
|
Assert.Equal(new[] { Plant.Clover, Plant.Grass, Plant.Clover, Plant.Clover }, sut.Plants("Bob"));
|
||||||
|
}
|
||||||
|
|
||||||
|
[Fact(Skip = "Remove to run test")]
|
||||||
|
public void Full_garden_second_to_last_students_garden()
|
||||||
|
{
|
||||||
|
var sut = new KindergartenGarden("VRCGVVRVCGGCCGVRGCVCGCGV\nVRCCCGCRRGVCGCRVVCVGCGCV");
|
||||||
|
Assert.Equal(new[] { Plant.Grass, Plant.Clover, Plant.Clover, Plant.Grass }, sut.Plants("Kincaid"));
|
||||||
|
}
|
||||||
|
|
||||||
|
[Fact(Skip = "Remove to run test")]
|
||||||
|
public void Full_garden_last_students_garden()
|
||||||
|
{
|
||||||
|
var sut = new KindergartenGarden("VRCGVVRVCGGCCGVRGCVCGCGV\nVRCCCGCRRGVCGCRVVCVGCGCV");
|
||||||
|
Assert.Equal(new[] { Plant.Grass, Plant.Violets, Plant.Clover, Plant.Violets }, sut.Plants("Larry"));
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,68 @@
|
||||||
|
# Kindergarten Garden
|
||||||
|
|
||||||
|
Given a diagram, determine which plants each child in the kindergarten class is
|
||||||
|
responsible for.
|
||||||
|
|
||||||
|
The kindergarten class is learning about growing plants. The teacher
|
||||||
|
thought it would be a good idea to give them actual seeds, plant them in
|
||||||
|
actual dirt, and grow actual plants.
|
||||||
|
|
||||||
|
They've chosen to grow grass, clover, radishes, and violets.
|
||||||
|
|
||||||
|
To this end, the children have put little cups along the window sills, and
|
||||||
|
planted one type of plant in each cup, choosing randomly from the available
|
||||||
|
types of seeds.
|
||||||
|
|
||||||
|
```text
|
||||||
|
[window][window][window]
|
||||||
|
........................ # each dot represents a cup
|
||||||
|
........................
|
||||||
|
```
|
||||||
|
|
||||||
|
There are 12 children in the class:
|
||||||
|
|
||||||
|
- Alice, Bob, Charlie, David,
|
||||||
|
- Eve, Fred, Ginny, Harriet,
|
||||||
|
- Ileana, Joseph, Kincaid, and Larry.
|
||||||
|
|
||||||
|
Each child gets 4 cups, two on each row. Their teacher assigns cups to
|
||||||
|
the children alphabetically by their names.
|
||||||
|
|
||||||
|
The following diagram represents Alice's plants:
|
||||||
|
|
||||||
|
```text
|
||||||
|
[window][window][window]
|
||||||
|
VR......................
|
||||||
|
RG......................
|
||||||
|
```
|
||||||
|
|
||||||
|
In the first row, nearest the windows, she has a violet and a radish. In the
|
||||||
|
second row she has a radish and some grass.
|
||||||
|
|
||||||
|
Your program will be given the plants from left-to-right starting with
|
||||||
|
the row nearest the windows. From this, it should be able to determine
|
||||||
|
which plants belong to each student.
|
||||||
|
|
||||||
|
For example, if it's told that the garden looks like so:
|
||||||
|
|
||||||
|
```text
|
||||||
|
[window][window][window]
|
||||||
|
VRCGVVRVCGGCCGVRGCVCGCGV
|
||||||
|
VRCCCGCRRGVCGCRVVCVGCGCV
|
||||||
|
```
|
||||||
|
|
||||||
|
Then if asked for Alice's plants, it should provide:
|
||||||
|
|
||||||
|
- Violets, radishes, violets, radishes
|
||||||
|
|
||||||
|
While asking for Bob's plants would yield:
|
||||||
|
|
||||||
|
- Clover, grass, clover, clover
|
||||||
|
|
||||||
|
|
||||||
|
## Source
|
||||||
|
|
||||||
|
Random musings during airplane trip. [http://jumpstartlab.com](http://jumpstartlab.com)
|
||||||
|
|
||||||
|
## Submitting Incomplete Solutions
|
||||||
|
It's possible to submit an incomplete solution so you can see how others have completed the exercise.
|
Loading…
Reference in New Issue