Sha256: c7eb58ae9e01da0a54b05c681addb6ee35e40d600cd37e18e7776f512a3836e7

Contents?: true

Size: 1.35 KB

Versions: 28

Compression:

Stored size: 1.35 KB

Contents

using System;
using System.Collections.Generic;
using System.Linq;
using Generators.Input;
using Generators.Output;
using Newtonsoft.Json.Linq;

namespace Generators.Exercises
{
    public class Dominoes : GeneratorExercise
    {
        protected override void UpdateCanonicalData(CanonicalData canonicalData)
        {
            foreach (var canonicalDataCase in canonicalData.Cases)
            {
                canonicalDataCase.UseVariablesForInput = true;
                canonicalDataCase.Input["dominoes"] = ConvertInput(canonicalDataCase.Input["dominoes"]);
            }
        }

        protected override HashSet<string> AddAdditionalNamespaces() => new HashSet<string>() { typeof(Tuple).Namespace };

        private UnescapedValue ConvertInput(dynamic input)
        {
            var dominoes = (input as JArray).Children();

            // Manually format array of ints to array of tuples since the ValueFormatter doesn't handle Tuple<int,int>[]
            // Project each jtoken element to an int array, then format to a string that will create a tuple from the 2-element array (via UnescapedValues)
            var tuplesStringLiteral = dominoes.Select(s => s.ToObject<int[]>()).Select(s => $"Tuple.Create({s[0]}, {s[1]})");
            return new UnescapedValue($"new Tuple<int, int>[] {{ {string.Join(", ", tuplesStringLiteral)} }}");
        }
    }
}

Version data entries

28 entries across 28 versions & 1 rubygems

Version Path
trackler-2.2.1.180 tracks/csharp/generators/Exercises/Dominoes.cs
trackler-2.2.1.179 tracks/csharp/generators/Exercises/Dominoes.cs
trackler-2.2.1.178 tracks/csharp/generators/Exercises/Dominoes.cs
trackler-2.2.1.177 tracks/csharp/generators/Exercises/Dominoes.cs
trackler-2.2.1.176 tracks/csharp/generators/Exercises/Dominoes.cs
trackler-2.2.1.175 tracks/csharp/generators/Exercises/Dominoes.cs
trackler-2.2.1.174 tracks/csharp/generators/Exercises/Dominoes.cs
trackler-2.2.1.173 tracks/csharp/generators/Exercises/Dominoes.cs
trackler-2.2.1.172 tracks/csharp/generators/Exercises/Dominoes.cs
trackler-2.2.1.171 tracks/csharp/generators/Exercises/Dominoes.cs
trackler-2.2.1.170 tracks/csharp/generators/Exercises/Dominoes.cs
trackler-2.2.1.169 tracks/csharp/generators/Exercises/Dominoes.cs
trackler-2.2.1.167 tracks/csharp/generators/Exercises/Dominoes.cs
trackler-2.2.1.166 tracks/csharp/generators/Exercises/Dominoes.cs
trackler-2.2.1.165 tracks/csharp/generators/Exercises/Dominoes.cs
trackler-2.2.1.164 tracks/csharp/generators/Exercises/Dominoes.cs
trackler-2.2.1.163 tracks/csharp/generators/Exercises/Dominoes.cs
trackler-2.2.1.162 tracks/csharp/generators/Exercises/Dominoes.cs
trackler-2.2.1.161 tracks/csharp/generators/Exercises/Dominoes.cs
trackler-2.2.1.160 tracks/csharp/generators/Exercises/Dominoes.cs