示例#1
0
        public static FinalAttractor[] GetIDA(LatLng startcoord, double radius, int meta, QuantumRandomNumberGeneratorWrapper rnd, out string shaGid)
        {
            FinalAttractor[] result = new FinalAttractor[0];
            int al = 0; int cou = 0;

            shaGid = null;
            while ((al == 0) && (cou < 10))
            {
                cou++;
                int No        = getOptimizedDots(radius);
                int bytesSize = requiredEnthropyBytes(No);
                //byte[] byteinput = new byte[No]; // todo use byte or hex dependent on sourcetype
                //rnd.NextBytes(byteinput);
                byte[] byteinput = rnd.NextHexBytes((int)bytesSize, meta, out shaGid);
                if (meta == 1)
                {
                    bytesSize = bytesSize * 10;
                }
                int engin1 = initWithBytes(getHandle(), byteinput, bytesSize);
                int fa     = findAttractors(engin1, significance, filtering_significance);
                al     = getAttractorsLength(engin1);
                result = new FinalAttractor[al];
                unsafe
                {
                    IntPtr value;
                    value = getAttractors(engin1, radius, startcoord, 23);
                    if (value != null)
                    {
                        for (int j = 0; j < (int)al; j++)
                        {
                            result[j] = new FinalAttractor();
                            Marshal.PtrToStructure(value, result[j]);
                            value += Marshal.SizeOf <FinalAttractor>() /* == 192 */ + 16 /* need this to fix alignment on non-Windows platforms */;
                        }
                    }
                    //releaseAttractors(value, al);
                    //todo make release stuff here
                }
                releaseEngine(engin1);
            }
            return(result);
        }
示例#2
0
        public static FinalAttractor[] SortIDA(FinalAttractor[] source, string idatype, int idacount)
        {
            FinalAttractor[] result = new FinalAttractor[0];
            int att = 0; int voi = 0;

            foreach (FinalAttractor ida in source)
            {
                if (ida.X.type == 1)
                {
                    att++;
                }
                else if (ida.X.type == 2)
                {
                    voi++;
                }
            }
            FinalAttractor[] aatt = new FinalAttractor[att];
            FinalAttractor[] avoi = new FinalAttractor[voi];
            att = 0; voi = 0;
            foreach (FinalAttractor ida in source)
            {
                if (ida.X.type == 1)
                {
                    aatt[att] = ida; att++;
                }
                else if (ida.X.type == 2)
                {
                    avoi[voi] = ida; voi++;
                }
            }

            if ((idatype == "attractor") && (att > 0))
            {
                aatt = BubbleSort(aatt, att);
                if (att < idacount)
                {
                    idacount = att;
                }
                result = new FinalAttractor[idacount];
                for (int j = 0; j < idacount; j++)
                {
                    result[j] = aatt[j];
                }
            }
            else
            if ((idatype == "void") && (voi > 0))
            {
                avoi = BubbleSort(avoi, voi);
                if (voi < idacount)
                {
                    idacount = voi;
                }
                result = new FinalAttractor[idacount];
                for (int j = 0; j < idacount; j++)
                {
                    result[j] = avoi[j];
                }
            }
            else
            if ((idatype == "any") && ((att > 0) || (voi > 0)))
            {
                source = BubbleSort(source, source.Count());
                if ((att + voi) < idacount)
                {
                    idacount = att + voi;
                }
                result = new FinalAttractor[idacount];
                int c = 0;
                int j = 0;
                while ((j < source.Count()) && (c < idacount))
                {
                    if ((source[j].X.type == 1) || (source[j].X.type == 2))
                    {
                        result[c] = source[j]; c++; j++;
                    }
                    else
                    {
                        j++;
                    }
                }
            }
            return(result);
        }
示例#3
0
        private extern static void finalize();                                                              // !!!CAUTION!!! this frees all engines systemwide, call before unloading the dll

        public static string Tolog(ITurnContext context, string type, FinalAttractor ida, string shortCode) //idas
        {
            string resp = "Intention Driven Anomaly found" + "\n\n";

            if (type == "blind")
            {
                resp = "Mystery Point Generated" + "\n\n";
            }

            var code = "";

            if (type == "blind")
            {
                code = "X-" + shortCode;
            }
            else
            if (ida.X.type == 1)
            {
                code = "A-" + shortCode;
            }
            else
            if (ida.X.type == 2)
            {
                code = "V-" + shortCode;
            }

            resp += code + " (" + ida.X.center.point.latitude.ToString("#0.000000", System.Globalization.CultureInfo.InvariantCulture)
                    + " " + ida.X.center.point.longitude.ToString("#0.000000", System.Globalization.CultureInfo.InvariantCulture) + ")" + "\n\n";
            if (ida.X.type == 1)
            {
                if (type != "blind")
                {
                    double bearing = ida.X.center.bearing.finalBearing;
                    if (bearing < 0)
                    {
                        bearing = (bearing + 360) % 360.0;
                    }

                    resp += "Type: Attractor" + "\n\n";
                    resp += "Radius: " + (int)(ida.X.radiusM) + "m" + "\n\n";
                    resp += "Power: " + ida.X.power.ToString("#0.00", System.Globalization.CultureInfo.InvariantCulture) + "\n\n";
                    resp += "Bearing: " + ida.X.center.bearing.distance.ToString("#0m", System.Globalization.CultureInfo.InvariantCulture) + " / "
                            + bearing.ToString("#0.0°", System.Globalization.CultureInfo.InvariantCulture) + "\n\n";
                }
            }
            else if (ida.X.type == 2)
            {
                if (type != "blind")
                {
                    double bearing = ida.X.center.bearing.finalBearing;
                    if (bearing < 0)
                    {
                        bearing = (bearing + 360) % 360.0;
                    }

                    resp += "Type: Void" + "\n\n";
                    resp += "Radius: " + (int)(ida.X.radiusM) + "m" + "\n\n";
                    resp += "Power: " + (1 / ida.X.power).ToString("#0.00", System.Globalization.CultureInfo.InvariantCulture) + "\n\n";
                    resp += "Bearing: " + ida.X.center.bearing.distance.ToString("#0m", System.Globalization.CultureInfo.InvariantCulture) + " / "
                            + bearing.ToString("#0.0°", System.Globalization.CultureInfo.InvariantCulture) + "\n\n";
                }
            }
            string pl = "";

            if (ida.X.rarity == 0)
            {
                pl = @"N/A";
            }
            else
            if (ida.X.rarity == 1)
            {
                pl = "POOR";
            }
            else
            if (ida.X.rarity == 2)
            {
                pl = "COMMON";
            }
            else
            if (ida.X.rarity == 3)
            {
                pl = "UNCOMMON";
            }
            else
            if (ida.X.rarity == 4)
            {
                pl = "RARE";
            }
            else
            if (ida.X.rarity == 5)
            {
                pl = "EPIC";
            }
            else
            if (ida.X.rarity == 6)
            {
                pl = "LEGENDARY";
            }
            else
            if (ida.X.rarity == 7)
            {
                pl = "UNICORN";
            }
            else
            if (ida.X.rarity == 8)
            {
                pl = "SINGULARITY";
            }

            if (type != "blind")
            {
                if (ida.X.rarity > 0)
                {
                    resp += "Abnormality Rank: " + pl + "\n\n";
                }
                resp += "z-score: " + ida.X.z_score.ToString("#0.00", System.Globalization.CultureInfo.InvariantCulture) + "\n\n";
            }
            return(resp);
        }