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