All pastes #12664 Raw Edit

Alfabeto

public text v1 · immutable
#12664 ·published 2005-05-26 06:44 UTC
rendered paste body
using System;
using System.Collections;

public class Operaciones
{
	public static void Main(string[] args)
	{
		if (args.Length != 2)
		{
			Console.WriteLine(@"BAD USAGE: mono Alfabeto.exe potencia alfabeto,separado,por,comas");
			return;
		}
		int Potencia = int.Parse(args[0]);
		string[] elementos = args[1].Split(',');
		Alfabeto alfabeto = new Alfabeto();
		foreach(string elemento in elementos)
			alfabeto.Add(new Elemento(elemento));
       		Alfabeto resultado = Alfabeto.Pow(alfabeto, Potencia);
		for (int i = 0; i < resultado.Count; i++)
			Console.Write(resultado[i].Value + ",");
		Console.WriteLine();
	}
}

public class Alfabeto
{
	
	ArrayList Elementos = new ArrayList();

	public void Add(Elemento Item)
	{
		Elementos.Add(Item);
	}

	public int Count
	{
		get
		{
			return Elementos.Count;
		}
	}

	public Elemento this [int index]
	{
		get
		{
			return Elementos[index] as Elemento;
		}
	}

	public Alfabeto Clone()
	{
		Alfabeto clon = new Alfabeto();
		foreach(Elemento Item in Elementos)
			clon.Add(new Elemento(Item.Value));
		return clon;
			
	}

	public static Alfabeto operator* (Alfabeto Factor1, Alfabeto Factor2)
	{
		Alfabeto resultado = new Alfabeto();
		for (int i = 0; i < Factor1.Count; i++)
			for (int j = 0; j < Factor2.Count; j++)
			{
				resultado.Add(new Elemento(Factor1[i].Value + Factor2[j].Value));
			}
		return resultado;
	}
	
	public static Alfabeto Pow(Alfabeto Base, int Potencia)
	{
		if (Potencia < 0)
			throw new Exception("No se permiten potencias negativas");
		else if (Potencia == 0)
			return new Alfabeto();
		else if (Potencia == 1)
			return Base.Clone();
		else
		{
			Alfabeto Resultado = Base.Clone();
			for (int i = 0; i < Potencia - 1; i++)
			{
				Resultado *= Base;
			}
			return Resultado;
		}
	}
}

public class Elemento
{
	string valor;

	public Elemento(string Value)
	{
		valor = Value;
	}

	public string Value
	{
		get
		{
			return valor;
		}
		set
		{
			valor = value;
		}
	}
}