Filter: Difference between revisions

From Rosetta Code
Content added Content deleted
(Properly ordering the languages)
(Applying categories)
Line 4: Line 4:


==[[C]]==
==[[C]]==
[[Category:C]]

int arr[5] = {1,2,3,4,5};
int arr[5] = {1,2,3,4,5};
int *result;
int *result;
Line 30: Line 32:


==[[C#]]==
==[[C#]]==
[[Category:C sharp]]

// .NET 1.x solution
// .NET 1.x solution
ArrayList array = new ArrayList( new int[] { 1, 2, 3, 4, 5 } );
ArrayList array = new ArrayList( new int[] { 1, 2, 3, 4, 5 } );
Line 48: Line 52:


==[[Haskell]]==
==[[Haskell]]==
[[Category:Haskell]]

ary = [1..10]
ary = [1..10]
evens = [ x | x <- ary, even x ]
evens = [ x | x <- ary, even x ]


==[[Java]]==
==[[Java]]==
[[Category:Java]]

int[] array = new int[] {1, 2, 3, 4, 5 };
int[] array = new int[] {1, 2, 3, 4, 5 };
List<Integer> evensList = new ArrayList<Integer>();
List<Integer> evensList = new ArrayList<Integer>();
Line 60: Line 68:


==[[Perl]]==
==[[Perl]]==
[[Category:Perl]]

my @list = (1, 2, 3, 4, 5, 6);
my @list = (1, 2, 3, 4, 5, 6);
my @even = grep { 0 == $_%2; } @list;
my @even = grep { 0 == $_%2; } @list;


==[[Python]]==
==[[Python]]==
[[Category:Python]]

values = range(10)
values = range(10)
evens = [x for x in values if x % 2 == 0]
evens = [x for x in values if x % 2 == 0]


==[[Ruby]]==
==[[Ruby]]==
[[Category:Ruby]]

ary = [1,2,3,4,5,6]
ary = [1,2,3,4,5,6]
even_ary = ary.select{|el|el%2==0}
even_ary = ary.select{|el|el%2==0}
Line 73: Line 87:


==[[Standard ML]]==
==[[Standard ML]]==
[[Category:Standard ML]]
val ary = [1,2,3,4,5,6];
val ary = [1,2,3,4,5,6];
List.filter (fn x => x mod 2 = 0) ary
List.filter (fn x => x mod 2 = 0) ary

Revision as of 01:50, 24 January 2007

Task
Filter
You are encouraged to solve this task according to the task description, using any language you may know.

Select certain elements from an Array into a new Array in a generic way. E.g., select all even numbers from an Array

C

       int arr[5] = {1,2,3,4,5};
       int *result;
       int memoryReqd = 0,length = sizeof(arr)/sizeof(arr[0]), i,j;
       for (i=0; i<length; i++)
       {
               if(0 == arr[i]%2)
               {
                       memoryReqd++;
               }
       }
       result = (int*)malloc(memoryReqd*sizeof(int));
       for(i=0,j=0; i<length; i++)
       {
               if(0 == arr[i]%2)
               {
                       result[j++]=arr[i];
               }
       }
       // Test our resultant array
       for(i=0; i<memoryReqd; i++)
       {
               printf("%d\n",result[i]);
       }

C#

       // .NET 1.x solution
       ArrayList array = new ArrayList( new int[] { 1, 2, 3, 4, 5 } );
       ArrayList evens = new ArrayList();
       foreach( int i in array )
       {
               if( (i%2) == 0 )
                       evens.Add( i );
       }
       foreach( int i in evens )
              System.Console.WriteLine( i.ToString() );
       // .NET 2.0 solution
       List<int> array = new List<int>( new int[] { 1, 2, 3, 4, 5 } );
       List<int> evens = array.FindAll( delegate( int i ) { return (i%2)==0; } );
       foreach( int i in evens )
              System.Console.WriteLine( i.ToString() );

Haskell

 ary = [1..10]
 evens = [ x | x <- ary, even x ]

Java

   int[] array = new int[] {1, 2, 3, 4, 5 };
   List<Integer> evensList = new ArrayList<Integer>();
   for (int  i: array) {
       if (i % 2 == 0) evensList.add(i);
   }
   int[] evens = evensList.toArray(new int[0]);

Perl

 my @list = (1, 2, 3, 4, 5, 6);
 my @even = grep { 0 == $_%2; } @list;

Python

 values = range(10)
 evens = [x for x in values if x % 2 == 0]

Ruby

 ary = [1,2,3,4,5,6]
 even_ary = ary.select{|el|el%2==0}
 # => [2, 4, 6]

Standard ML

 val ary = [1,2,3,4,5,6];
 List.filter (fn x => x mod 2 = 0) ary