Type programming game

Stefan Koch uplink.coder at googlemail.com
Sun Oct 11 01:16:29 UTC 2020


On Sunday, 11 October 2020 at 01:08:46 UTC, Adam D. Ruppe wrote:
> On Saturday, 10 October 2020 at 23:42:46 UTC, Stefan Koch wrote:
>> After a few submissions have been made I will post my type 
>> function, which fulfills this task.
>
> Surely you know by now what I'm going to say... just write a 
> normal function.
>
> module typegame.solution;
>
> string easy(T...)() {
>         string result;
>
>         // I separate out the display name from the seen name
>         // since you might pass a.Foo and b.Foo and want it
>         // differentiated in comparison but both displayed "Foo"
>         string lastDisplay;
>         string lastSeen;
>         int repetitionCount;
>
>         void finish() {
>                 if(repetitionCount != 2 && repetitionCount != 3)
>                         return;
>                 if(result.length)
>                         result ~= " ";
>                 if(repetitionCount == 2)
>                         result ~= "double ";
>                 else
>                         result ~= "triple ";
>
>                 result ~= lastDisplay;
>         }
>
>         foreach(t; T) {
>                 if(t.mangleof == lastSeen) {
>                         repetitionCount++;
>                 } else {
>                         finish();
>                         lastSeen = t.mangleof;
>                         lastDisplay = t.stringof;
>                         repetitionCount = 1;
>                 }
>         }
>
>         finish();
>
>         return result;
> }
>
> pragma(msg, easy!(int, int, uint, uint, uint));
> pragma(msg, easy!(char, char, wchar, dchar, dchar));

This is a neat solution.
Congratulations Adam.


More information about the Digitalmars-d mailing list