示例#1
0
        /// <summary>
        /// Emulates the Java function "String..hashCode()".
        /// </summary>
        /// <param name="Texto">Any valid string.</param>
        /// <returns>Returns the emulated Java hash code as a 32 bit integer.</returns>
        internal static int Obtener_Código_Hash_String(string Texto)
        {
            try
            {
                if (!string.IsNullOrEmpty(Texto))
                {
                    List <int> Lista_Base          = Calculadora_Infinita.Traducir_Número("31");
                    List <int> Lista_Multiplicador = new List <int>(new int[] { 1 });
                    List <int> Lista_Valor         = new List <int>(new int[] { 0 });
                    for (int Índice = Texto.Length - 1, Índice_Potencia = 0; Índice >= 0; Índice--, Índice_Potencia++)
                    {
                        try
                        {
                            int        Valor_Caracter       = (int)Texto[Índice];
                            List <int> Lista_Multiplicación = Calculadora_Infinita.Operación_Multiplicación(Calculadora_Infinita.Traducir_Número(Valor_Caracter.ToString()), Lista_Multiplicador);
                            Lista_Valor = Calculadora_Infinita.Operación_Suma(Lista_Valor, Lista_Multiplicación);
                            if (Índice > 0)
                            {
                                Lista_Multiplicador = Calculadora_Infinita.Operación_Multiplicación(Lista_Multiplicador, Lista_Base);
                            }
                        }
                        catch { break; }
                    }
                    List <List <int> > Lista_Valor_Binario = Calculadora_Infinita.Operación_Convertir_a_Base(Lista_Valor, new List <int>(new int[] { 2 }));

                    return(int.Parse(Calculadora_Infinita.Traducir_Número_Sin_Puntuación(Calculadora_Infinita.Operación_Resta(Calculadora_Infinita.Operación_Convertir_desde_Base(Lista_Valor_Binario.GetRange(Math.Max(0, Lista_Valor_Binario.Count - 31), Math.Min(31, Lista_Valor_Binario.Count)), new List <int>(new int[] { 2 })), Lista_Valor_Binario.Count > 31 && Lista_Valor_Binario[Lista_Valor_Binario.Count - 32][0] != 0 ? new List <int>(new int[] { 2, 1, 4, 7, 4, 8, 3, 6, 4, 8 }) : new List <int>(new int[] { 0 })))));

                    //Lista_Valor_Binario = null;
                    //Lista_Valor = null;
                    //Lista_Multiplicador = null;
                    //Lista_Base = null;
                }
            }
            catch (Exception Excepción) { Depurador.Escribir_Excepción(Excepción != null ? Excepción.ToString() : null); }
            return(0);
        }
示例#2
0
        internal decimal Calcular_Semilla(string Texto, int Base)
        {
            try
            {
                this.Cursor             = Cursors.WaitCursor;
                TextBox_Semilla.Text    = null;
                TextBox_Resultados.Text = null;
                if (!string.IsNullOrEmpty(Texto) && Base >= 1)// && Base <= 1024)
                {
                    string     Texto_Operaciones   = null;
                    List <int> Lista_Base          = Calculadora_Infinita.Traducir_Número(Base.ToString());
                    List <int> Lista_Multiplicador = new List <int>(new int[] { 1 });
                    List <int> Lista_Valor         = new List <int>(new int[] { 0 });
                    for (int Índice = Texto.Length - 1, Índice_Potencia = 0; Índice >= 0; Índice--, Índice_Potencia++)
                    {
                        try
                        {
                            int        Valor_Caracter       = (int)Texto[Índice];
                            List <int> Lista_Multiplicación = Calculadora_Infinita.Operación_Multiplicación(Calculadora_Infinita.Traducir_Número(Valor_Caracter.ToString()), Lista_Multiplicador);
                            Lista_Valor = Calculadora_Infinita.Operación_Suma(Lista_Valor, Lista_Multiplicación);
                            if (Índice > 0)
                            {
                                Lista_Multiplicador = Calculadora_Infinita.Operación_Multiplicación(Lista_Multiplicador, Lista_Base);
                            }
                            Texto_Operaciones += Texto[Índice] + " = " + Valor_Caracter.ToString() + " * (" + Program.Traducir_Número(Base) + "^" + Índice_Potencia.ToString() + ") = " + /*Valor_Caracter.ToString() + " * " + Calculadora_Infinita.Traducir_Número(Lista_Multiplicador) + " = " + */ Calculadora_Infinita.Traducir_Número(Lista_Multiplicación) + "\r\n";
                        }
                        catch { break; }
                    }
                    Texto_Operaciones += "\r\nAdding all the previous results will give the full seed.";
                    List <List <int> > Lista_Valor_Binario = Calculadora_Infinita.Operación_Convertir_a_Base(Lista_Valor, new List <int>(new int[] { 2 }));

                    Texto_Operaciones += "\r\n\r\n";
                    //Texto_Operaciones += "Minecraft seed (in ): " + Calculadora_Infinita.Traducir_Número_Sin_Puntuación(Lista_Valor) + "\r\n\r\n";
                    Texto_Operaciones += "Full seed of infinite bits: " + Calculadora_Infinita.Traducir_Número_Sin_Puntuación(Lista_Valor) + "\r\n\r\n";
                    for (int Índice = 64, Índice_1 = 63; Índice >= 1; Índice--, Índice_1--)
                    {
                        Texto_Operaciones += Índice.ToString() + (Índice != 1 ? " bits seed = " : " bit seed = ") + Calculadora_Infinita.Traducir_Número_Sin_Puntuación(Calculadora_Infinita.Operación_Resta(Calculadora_Infinita.Operación_Convertir_desde_Base(Lista_Valor_Binario.GetRange(Math.Max(0, Lista_Valor_Binario.Count - Índice_1), Math.Min(Índice_1, Lista_Valor_Binario.Count)), new List <int>(new int[] { 2 })), Lista_Valor_Binario.Count >= Índice && Lista_Valor_Binario[Lista_Valor_Binario.Count - Índice][0] != 0 ? Listas_Bits_64[Índice_1] : new List <int>(new int[] { 0 }))) + (Índice > 1 ? "\r\n" : null);
                    }

                    TextBox_Semilla.Text = Calculadora_Infinita.Traducir_Número_Sin_Puntuación(Calculadora_Infinita.Operación_Resta(Calculadora_Infinita.Operación_Convertir_desde_Base(Lista_Valor_Binario.GetRange(Math.Max(0, Lista_Valor_Binario.Count - 31), Math.Min(31, Lista_Valor_Binario.Count)), new List <int>(new int[] { 2 })), Lista_Valor_Binario.Count > 31 && Lista_Valor_Binario[Lista_Valor_Binario.Count - 32][0] != 0 ? new List <int>(new int[] { 2, 1, 4, 7, 4, 8, 3, 6, 4, 8 }) : new List <int>(new int[] { 0 })));

                    //Descodificar_Semilla_Numérica(TextBox_Semilla.Text); // 28-04-2018.
                    //Obtener_Texto_Semilla(TextBox_Semilla.Text); // 13-03-2019.

                    TextBox_Resultados.Text = Texto_Operaciones;

                    /*Text_Semilla_Personalizada.Text = Calculadora_Infinita.Traducir_Número_Sin_Puntuación(Calculadora_Infinita.Operación_Resta(Calculadora_Infinita.Operación_Convertir_desde_Base(Lista_Valor_Binario.GetRange(Math.Max(0, Lista_Valor_Binario.Count - (Bits_Global - 1)), Math.Min(Bits_Global - 1, Lista_Valor_Binario.Count)), new List<int>(new int[] { 2 })), Lista_Valor_Binario.Count >= Bits_Global && Lista_Valor_Binario[Lista_Valor_Binario.Count - Bits_Global][0] != 0 ? Calculadora_Infinita.Operación_Potencia(new List<int>(new int[] { 2 }), Calculadora_Infinita.Traducir_Número((Bits_Global - 1).ToString())) : new List<int>(new int[] { 0 })));
                     *
                     *
                     * Text_Semilla_8_Bits.Text = Calculadora_Infinita.Traducir_Número_Sin_Puntuación(Calculadora_Infinita.Operación_Resta(Calculadora_Infinita.Operación_Convertir_desde_Base(Lista_Valor_Binario.GetRange(Math.Max(0, Lista_Valor_Binario.Count - 7), Math.Min(7, Lista_Valor_Binario.Count)), new List<int>(new int[] { 2 })), Lista_Valor_Binario.Count > 7 && Lista_Valor_Binario[Lista_Valor_Binario.Count - 8][0] != 0 ? new List<int>(new int[] { 1, 2, 8 }) : new List<int>(new int[] { 0 })));
                     * Text_Semilla_16_Bits.Text = Calculadora_Infinita.Traducir_Número_Sin_Puntuación(Calculadora_Infinita.Operación_Resta(Calculadora_Infinita.Operación_Convertir_desde_Base(Lista_Valor_Binario.GetRange(Math.Max(0, Lista_Valor_Binario.Count - 15), Math.Min(15, Lista_Valor_Binario.Count)), new List<int>(new int[] { 2 })), Lista_Valor_Binario.Count > 15 && Lista_Valor_Binario[Lista_Valor_Binario.Count - 16][0] != 0 ? new List<int>(new int[] { 3, 2, 7, 6, 8 }) : new List<int>(new int[] { 0 })));
                     * Text_Semilla_32_Bits.Text = Calculadora_Infinita.Traducir_Número_Sin_Puntuación(Calculadora_Infinita.Operación_Resta(Calculadora_Infinita.Operación_Convertir_desde_Base(Lista_Valor_Binario.GetRange(Math.Max(0, Lista_Valor_Binario.Count - 31), Math.Min(31, Lista_Valor_Binario.Count)), new List<int>(new int[] { 2 })), Lista_Valor_Binario.Count > 31 && Lista_Valor_Binario[Lista_Valor_Binario.Count - 32][0] != 0 ? new List<int>(new int[] { 2, 1, 4, 7, 4, 8, 3, 6, 4, 8 }) : new List<int>(new int[] { 0 })));
                     * Text_Semilla_64_Bits.Text = Calculadora_Infinita.Traducir_Número_Sin_Puntuación(Calculadora_Infinita.Operación_Resta(Calculadora_Infinita.Operación_Convertir_desde_Base(Lista_Valor_Binario.GetRange(Math.Max(0, Lista_Valor_Binario.Count - 63), Math.Min(63, Lista_Valor_Binario.Count)), new List<int>(new int[] { 2 })), Lista_Valor_Binario.Count > 63 && Lista_Valor_Binario[Lista_Valor_Binario.Count - 64][0] != 0 ? new List<int>(new int[] { 9, 2, 2, 3, 3, 7, 2, 0, 3, 6, 8, 5, 4, 7, 7, 5, 8, 0, 8 }) : new List<int>(new int[] { 0 })));
                     * //Text_Semilla_128_Bits.Text = Calculadora_Infinita.Traducir_Número_Sin_Puntuación(Calculadora_Infinita.Operación_Resta(Calculadora_Infinita.Operación_Convertir_desde_Base(Lista_Valor_Binario.GetRange(Math.Max(0, Lista_Valor_Binario.Count - 127), Math.Min(127, Lista_Valor_Binario.Count)), new List<int>(new int[] { 2 })), Lista_Valor_Binario.Count > 127 && Lista_Valor_Binario[Lista_Valor_Binario.Count - 128][0] != 0 ? Ventana_Calculadora_Infinita.Traducir_Número("170141183460469231731687303715884105728") : new List<int>(new int[] { 0 }))); ;
                     * //Text_Semilla_256_Bits.Text = Calculadora_Infinita.Traducir_Número_Sin_Puntuación(Calculadora_Infinita.Operación_Resta(Calculadora_Infinita.Operación_Convertir_desde_Base(Lista_Valor_Binario.GetRange(Math.Max(0, Lista_Valor_Binario.Count - 255), Math.Min(255, Lista_Valor_Binario.Count)), new List<int>(new int[] { 2 })), Lista_Valor_Binario.Count > 255 && Lista_Valor_Binario[Lista_Valor_Binario.Count - 256][0] != 0 ? Ventana_Calculadora_Infinita.Traducir_Número("170141183460469231731687303715884105728") : new List<int>(new int[] { 0 }))); ;
                     * Text_Semilla_Completa.Text = Calculadora_Infinita.Traducir_Número_Sin_Puntuación(Lista_Valor);*/

                    Lista_Valor_Binario = null;
                    Lista_Valor         = null;
                    Lista_Multiplicador = null;
                    Lista_Base          = null;
                }

                /*Text_Operaciones.Refresh();
                 * Text_Semilla_8_Bits.Refresh();
                 * Text_Semilla_16_Bits.Refresh();
                 * Text_Semilla_32_Bits.Refresh();
                 * Text_Semilla_64_Bits.Refresh();
                 * Text_Semilla_Completa.Refresh();*/
            }
            catch (Exception Excepción) { Depurador.Escribir_Excepción(Excepción != null ? Excepción.ToString() : null); }
            finally { this.Cursor = Cursors.Default; }
            return(0m);
        }