On Friday, 18 April 2014 at 20:02:41 UTC, Tim Holzschuh via Digitalmars-d-learn wrote:
Hi there,

I try to remove all equal elements of an array, thus [2,2] --> [2].

I thought this maybe would be possible with std.algorithm.reduce, but at least the way I tried it doesn't work:

arr.reduce( (a,b) => a != b );

Is there a simple solution using Phobos-functions?

Not too fancy, since I'm new in D, but I created this:

import std.stdio;
import std.array;
import std.algorithm;

static if (!is(typeof(writeln)))
        alias writefln writeln;

void main(){
        int myfilter(int a){
                static int[] b;
                if(b.find(a) == []){
                        b.insertInPlace(b.length, a);
                        return a;
                }
                return -1;
        }
        
        auto arr = [1,1,2,3,2,2,4,5,5,1];       
        auto arrFiltered = arr.filter!(a => myfilter(a) > 0);
        
        writeln(arrFiltered);
}

Tested: http://dpaste.dzfl.pl/97a1307c7fec

I'm looking for creating something like C# "extensions", maybe with alias. I'll try later!

Matheus.

Reply via email to