usingMaths.com
Demonstrating and showing pupils and students one application of Mathematics.



Versions on Combination Algorithm in C#




loading...
Algorithm by: Educator usingMaths

Our Combination code in C#.


Combination Class File:


using System.Collections.Generic;

namespace Miscellaneous_CS
{
class Combination
    {
        public List<string> words;
        public int r; // min length of word
        protected List<string[]> comb_store;
        private int i;

        public Combination()
        {
        }

        // point of entry
        public List<string[]> possibleWordCombinations(List<string> candidates, int size) {
            words = candidates;
            r = size;
            comb_store = new List<string[]>();
            i = 0;
            // check for conformity
            if (r <= 0 || r > words.Count) {
                comb_store = new List<string[]>();
            }
            else if (r == 1) {
                for (; i < words.Count; i++) {
                    comb_store.Add(new string[] { words[i] });
                }
            }
            else {
                progressiveCombination();
            }
            return comb_store;
        }

        // do combinations for all 'words' element
        private void progressiveCombination() {
            //                  single member list
            repetitivePairing(new List<string>() {words[i]}, i + 1);
            if (i + r <= words.Count) {
                // move on to next degree
                i++;
                progressiveCombination();
            }
        }

        // do all possible combinations for 1st element of this array
        private void repetitivePairing(List<string> prefix, int position) {
            List<string>[] auxiliary_store = new List<string>[words.Count - position];
            for (int j = 0; position < words.Count; position++, j++) {
                // check if desired -- r -- size will be realised
                if (r - prefix.Count <= words.Count - position) {
                    auxiliary_store[j] = new List<string>();
                    auxiliary_store[j].AddRange(prefix);
                    auxiliary_store[j].Add(words[position]);
                    if (auxiliary_store[j].Count < r) {
                        // see to adding next word on
                        repetitivePairing(auxiliary_store[j], position + 1);
                    }
                    else {
                        comb_store.Add(auxiliary_store[j].ToArray());
                    }
                }
            }
        }
    }
}


Main Class:


using System;
using System.Collections.Generic;

namespace Miscellaneous_CS
{
class Program
    {
        static void Main(string[] args)
        {
            List<string> goods;
            goods = new List<string>() { "Eno""Chidi""Olu""Ahmed""Osas""Gbeda" };
            Combination combo = new Combination();
            List<string[]> result = combo.possibleWordCombinations(goods, 3);
            // print choices and operation
            Console.Write("[ ");
            foreach (string choice in combo.words)
            {
                Console.Write(choice + "; ");
            }
            Console.WriteLine("] combination " + combo.r + ":" + Environment.NewLine);
            // print out combinations nicely
            int i = 0;
            foreach (string[] set in result)
            {
                Console.Write(++i + ": ");
                foreach (string member in set)
                {
                    Console.Write(member + "; ");
                }
                Console.WriteLine();
            }
            Console.WriteLine(Environment.NewLine + "Number of ways is " + result.Count + ".");
        }
    }
}


Try it out!

Ownership (1) Simplicity (0.0) Elegance (0.0)
loading...
colormap #003366 #336699 #3366CC #003399 #000099 #0000CC #000066 #006666 #006699 #0099CC #0066CC #0033CC #0000FF #3333FF #333399 #669999 #009999 #33CCCC #00CCFF #0099FF #0066FF #3366FF #3333CC #666699 #339966 #00CC99 #00FFCC #00FFFF #33CCFF #3399FF #6699FF #6666FF #6600FF #6600CC #339933 #00CC66 #00FF99 #66FFCC #66FFFF #66CCFF #99CCFF #9999FF #9966FF #9933FF #9900FF #006600 #00CC00 #00FF00 #66FF99 #99FFCC #CCFFFF #CCCCFF #CC99FF #CC66FF #CC33FF #CC00FF #9900CC #003300 #009933 #33CC33 #66FF66 #99FF99 #CCFFCC #FFFFFF #FFCCFF #FF99FF #FF66FF #FF00FF #CC00CC #660066 #336600 #009900 #66FF33 #99FF66 #CCFF99 #FFFFCC #FFCCCC #FF99CC #FF66CC #FF33CC #CC0099 #993399 #333300 #669900 #99FF33 #CCFF66 #FFFF99 #FFCC99 #FF9999 #FF6699 #FF3399 #CC3399 #990099 #666633 #99CC00 #CCFF33 #FFFF66 #FFCC66 #FF9966 #FF6666 #FF0066 #CC6699 #993366 #999966 #CCCC00 #FFFF00 #FFCC00 #FF9933 #FF6600 #FF5050 #CC0066 #660033 #996633 #CC9900 #FF9900 #CC6600 #FF3300 #FF0000 #CC0000 #990033 #663300 #996600 #CC3300 #993300 #990000 #800000 #993333
Drop Your Version!
Login Please!

colormap #003366 #336699 #3366CC #003399 #000099 #0000CC #000066 #006666 #006699 #0099CC #0066CC #0033CC #0000FF #3333FF #333399 #669999 #009999 #33CCCC #00CCFF #0099FF #0066FF #3366FF #3333CC #666699 #339966 #00CC99 #00FFCC #00FFFF #33CCFF #3399FF #6699FF #6666FF #6600FF #6600CC #339933 #00CC66 #00FF99 #66FFCC #66FFFF #66CCFF #99CCFF #9999FF #9966FF #9933FF #9900FF #006600 #00CC00 #00FF00 #66FF99 #99FFCC #CCFFFF #CCCCFF #CC99FF #CC66FF #CC33FF #CC00FF #9900CC #003300 #009933 #33CC33 #66FF66 #99FF99 #CCFFCC #FFFFFF #FFCCFF #FF99FF #FF66FF #FF00FF #CC00CC #660066 #336600 #009900 #66FF33 #99FF66 #CCFF99 #FFFFCC #FFCCCC #FF99CC #FF66CC #FF33CC #CC0099 #993399 #333300 #669900 #99FF33 #CCFF66 #FFFF99 #FFCC99 #FF9999 #FF6699 #FF3399 #CC3399 #990099 #666633 #99CC00 #CCFF33 #FFFF66 #FFCC66 #FF9966 #FF6666 #FF0066 #CC6699 #993366 #999966 #CCCC00 #FFFF00 #FFCC00 #FF9933 #FF6600 #FF5050 #CC0066 #660033 #996633 #CC9900 #FF9900 #CC6600 #FF3300 #FF0000 #CC0000 #990033 #663300 #996600 #CC3300 #993300 #990000 #800000 #993333
Remark!
Login Please!

colormap #003366 #336699 #3366CC #003399 #000099 #0000CC #000066 #006666 #006699 #0099CC #0066CC #0033CC #0000FF #3333FF #333399 #669999 #009999 #33CCCC #00CCFF #0099FF #0066FF #3366FF #3333CC #666699 #339966 #00CC99 #00FFCC #00FFFF #33CCFF #3399FF #6699FF #6666FF #6600FF #6600CC #339933 #00CC66 #00FF99 #66FFCC #66FFFF #66CCFF #99CCFF #9999FF #9966FF #9933FF #9900FF #006600 #00CC00 #00FF00 #66FF99 #99FFCC #CCFFFF #CCCCFF #CC99FF #CC66FF #CC33FF #CC00FF #9900CC #003300 #009933 #33CC33 #66FF66 #99FF99 #CCFFCC #FFFFFF #FFCCFF #FF99FF #FF66FF #FF00FF #CC00CC #660066 #336600 #009900 #66FF33 #99FF66 #CCFF99 #FFFFCC #FFCCCC #FF99CC #FF66CC #FF33CC #CC0099 #993399 #333300 #669900 #99FF33 #CCFF66 #FFFF99 #FFCC99 #FF9999 #FF6699 #FF3399 #CC3399 #990099 #666633 #99CC00 #CCFF33 #FFFF66 #FFCC66 #FF9966 #FF6666 #FF0066 #CC6699 #993366 #999966 #CCCC00 #FFFF00 #FFCC00 #FF9933 #FF6600 #FF5050 #CC0066 #660033 #996633 #CC9900 #FF9900 #CC6600 #FF3300 #FF0000 #CC0000 #990033 #663300 #996600 #CC3300 #993300 #990000 #800000 #993333
Edit Your Algorithm!
Login Please!

colormap #003366 #336699 #3366CC #003399 #000099 #0000CC #000066 #006666 #006699 #0099CC #0066CC #0033CC #0000FF #3333FF #333399 #669999 #009999 #33CCCC #00CCFF #0099FF #0066FF #3366FF #3333CC #666699 #339966 #00CC99 #00FFCC #00FFFF #33CCFF #3399FF #6699FF #6666FF #6600FF #6600CC #339933 #00CC66 #00FF99 #66FFCC #66FFFF #66CCFF #99CCFF #9999FF #9966FF #9933FF #9900FF #006600 #00CC00 #00FF00 #66FF99 #99FFCC #CCFFFF #CCCCFF #CC99FF #CC66FF #CC33FF #CC00FF #9900CC #003300 #009933 #33CC33 #66FF66 #99FF99 #CCFFCC #FFFFFF #FFCCFF #FF99FF #FF66FF #FF00FF #CC00CC #660066 #336600 #009900 #66FF33 #99FF66 #CCFF99 #FFFFCC #FFCCCC #FF99CC #FF66CC #FF33CC #CC0099 #993399 #333300 #669900 #99FF33 #CCFF66 #FFFF99 #FFCC99 #FF9999 #FF6699 #FF3399 #CC3399 #990099 #666633 #99CC00 #CCFF33 #FFFF66 #FFCC66 #FF9966 #FF6666 #FF0066 #CC6699 #993366 #999966 #CCCC00 #FFFF00 #FFCC00 #FF9933 #FF6600 #FF5050 #CC0066 #660033 #996633 #CC9900 #FF9900 #CC6600 #FF3300 #FF0000 #CC0000 #990033 #663300 #996600 #CC3300 #993300 #990000 #800000 #993333
Edit Your Remark!
Login Please!

Delete Post >

Delete Comment >

Please wait...