Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Linq;
- using System.Collections.Generic;
- namespace CombConsole {
- public class Comb {
- public static IEnumerable<List<T>> SubSetsGeneration<T>(T[] input) {
- var resList = new List<List<T>>();
- int n = input.Length;
- int[] a = new int[n + 1];
- while (a[n] != 1) {
- var list = new List<T>();
- for (int i = 0; i < n; i++)
- if (a[i] == 1)
- list.Add(input[i]);
- resList.Add(list);
- int j = 0;
- while (a[j] == 1) {
- a[j] = 0;
- j++;
- }
- a[j] = 1;
- }
- return resList;
- }
- public static IEnumerable<List<T>> RepetitionPlacing<T>(T[] input, int k) {
- var resList = new List<List<T>>();
- int n = input.Length;
- int[] b = new int[k];
- while (b[k - 1] != n - 1) {
- var list = new List<T>();
- for (int i = 0; i < k; i++)
- list.Add(input[b[i]]);
- resList.Add(list);
- int j = 0;
- while (b[j] == n - 1) {
- b[j] = 0;
- j++;
- }
- b[j]++;
- }
- return resList;
- }
- public static IEnumerable<List<T>> Combinations<T>(T[] input, int k) {
- var resList = new List<List<T>>();
- int n = input.Length;
- int[] b = new int[k];
- for (int i = 0; i < k; i++)
- b[i] = i;
- int ii = 0;
- while (ii != -1) {
- var list = new List<T>();
- for (int i = 0; i < k; i++)
- list.Add(input[b[i]]);
- resList.Add(list);
- int mx = n - 1;
- ii = k - 1;
- for (; ii >= 0; ii--) {
- if (b[ii] < mx) {
- b[ii]++;
- for (int j = ii + 1; j < k; j++)
- b[j] = b[j - 1] + 1;
- break;
- }
- mx = b[ii] - 1;
- }
- }
- return resList;
- }
- public static IEnumerable<List<T>> Premutations<T>(T[] input, int k) {
- var resList = new List<List<T>>();
- int n = input.Length;
- int[] b = new int[k];
- for (int i = 0; i < k; i++)
- b[i] = i;
- int ii = 0;
- while (ii != -1) {
- var list = new List<T>();
- for (int i = 0; i < k; i++)
- list.Add(input[b[i]]);
- resList.Add(list);
- int mx = n - 1;
- for (ii = k-1; ii >= 0; ii--) {
- if (b[ii] < mx) {
- b[ii]++;
- for (int j = ii + 1; j < k; j++)
- b[j] = b[j - 1] + 1;
- break;
- }
- mx = b[ii] - 1;
- }
- }
- return resList;
- }
- }
- class Program
- {
- static void Main(string[] args)
- {
- //Comb cb = new Comb();
- /*for (double mx = 1.0; mx <= 100; mx++)
- {
- double pro = 1;
- for (double i = 1.0; i <= mx; i += 1.0)
- pro *= (1.0 - (i / 365.0));
- Console.WriteLine($"{mx}: {1-pro}");
- }*/
- /*int i = 0;
- foreach(var item in Comb.SubSetsGeneration(new int[] { 1, 2, 3, 4, 5}))
- Console.WriteLine("{0}: {1}", ++i, String.Join(", ", item));
- */
- /*int j = 0;
- foreach (var item in Comb.RepetitionPlacing(new int[] { 1, 2, 3, 4, 5 }, 2).OrderBy(el => el.Count()))
- Console.WriteLine("{0}: {1}", ++j, String.Join(", ", item));*/
- int k = 0;
- foreach (var item in Comb.Combinations(new int[] { 1, 2, 3, 4, 5 }, 4).OrderBy(el => el.Count()))
- Console.WriteLine("{0}: {1}", ++k, String.Join(", ", item));
- //Console.WriteLine(cb.ToString());
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement