コード例 #1
0
    public void Start()
    {
        patternDatabase = AssetDatabase.LoadAssetAtPath("Assets/Database/PatternDatabase.asset", typeof(PatternDatabase)) as PatternDatabase;
        presetDatabase  = AssetDatabase.LoadAssetAtPath("Assets/Database/PatternPresetDatabase.asset", typeof(PatternPresetDatabase)) as PatternPresetDatabase;

        PatternListSync();
        FrameSync();
    }
コード例 #2
0
    public static PatternDatabase Create()
    {
        PatternDatabase asset = ScriptableObject.CreateInstance <PatternDatabase>();

        AssetDatabase.CreateAsset(asset, "Assets/PatternDatabase.asset");
        AssetDatabase.SaveAssets();

        return(asset);
    }
コード例 #3
0
 static void BreakdownPdbs(params string[] filenames)
 {
     foreach (var filename in filenames)
     {
         Console.WriteLine("\n" + filename);
         var pdb       = new PatternDatabase(filename);
         var breakdown = pdb.GetValueCounts().OrderBy(m => m.Key).ToArray();
         foreach (var kvp in breakdown)
         {
             Console.WriteLine("{0}: {1}", kvp.Key, kvp.Value);
         }
     }
 }
コード例 #4
0
        static Func <byte[], uint> GetIDAStarHeuristicWithMirror15()
        {
            var vl15  = new PatternDatabase("15dj-vl.data");
            var vr15  = new PatternDatabase("15dj-vr.data");
            var hPDB  = AdditivePdbHeuristic(null, vl15, vr15);
            var hPDB2 = AdditivePdbHeuristic(MirrorState15, vl15, vr15);

            return(state =>
            {
                var hOrig = hPDB(state);
                var hMirror = hPDB2(state);
                return Math.Max(hOrig, hMirror);
            });
        }
コード例 #5
0
ファイル: World.cs プロジェクト: yhaghvirdi/SequenceProcessor
        public static void ConsumeDatabase()
        {
            var index = 1;
            List <DatabaseConnector.Pattern> list;

            do
            {
                list = PatternDatabase.ReadAll(index, Settings.DatabaseReadPageSize);
                Data.AddRange(list.Select(dbEntity => new Entity(dbEntity.Name, false)
                {
                    Sequence = new BitArray(dbEntity.Pattern1)
                }));
                index++;
            } while (list.Count > 0);
        }
コード例 #6
0
        static Func <byte[], uint> GetIDAStarHeuristicWithMirror24()
        {
            var tr24  = new PatternDatabase("24dj-tr.data");
            var br24  = new PatternDatabase("24dj-br.data");
            var bl24  = new PatternDatabase("24dj-bl.data");
            var tl24  = new PatternDatabase("24dj-tl.data");
            var hPDB  = AdditivePdbHeuristic(null, tr24, br24, bl24, tl24);
            var hPDB2 = AdditivePdbHeuristic(MirrorState24Fast, tr24, br24, bl24, tl24);

            return(state =>
            {
                var hOrig = hPDB(state);
                var hMirror = hPDB2(state);
                return Math.Max(hOrig, hMirror);
            });
        }
コード例 #7
0
        static void CreatePDB(string[] args)
        {
            if (args.Length > 1)
            {
                outputFormat = args[1];
            }
            uint rows = Convert.ToUInt32(args[2]);
            uint cols = Convert.ToUInt32(args[3]);

            byte[] pattern = args[4].Split(',').Select(m => Convert.ToByte(m)).ToArray();
            byte[] goal    = Enumerable.Range(0, (int)(rows * cols)).Select(Convert.ToByte).ToArray();
            lastMillis = 0;
            timer      = Stopwatch.StartNew();
            var pdb = PatternDatabase.Create(rows, cols, pattern, goal, ShowCreateStats, ExpandCreateState);

            timer.Stop();
            Console.WriteLine();
            Console.WriteLine("Completed building Pattern Database.  Saving to {0}", outputFormat);
            pdb.Save(outputFormat);
        }
コード例 #8
0
        static void Main(string[] args)
        {
            PatternDatabase.Initialize();
            World.Initialize(new Wordsmyth());

            var a   = new Wordsmyth();
            var txt = string.Empty;

            txt += a.GetWordDefinition("tree") + ". ";
            txt += a.GetWordDefinition("plant") + ". ";
            txt += a.GetWordDefinition("jungle") + ". ";
            txt += a.GetWordDefinition("wood") + ".";

            //World.AddMeaning( tree, "tall plant" );
            //var tall = World.GetOrCreate( "tall" );
            //var plant = World.GetOrCreate( "plant" );
            //var human = World.GetOrCreate( "human" );
            //var humanLinks = World.FindLinks( human );
            //var treeLinks = World.FindLinks( tree );

            //tree.SaveToDatabase();
            //tall.SaveToDatabase();
            //plant.SaveToDatabase();
            //human.SaveToDatabase();

            //World.ConsumeDatabase();

            Logger.Level2Log($"Starting Words basic");
            var wbBasic = new WordBase();

            wbBasic.Populate(WordsDump.WordsBasic);
            World.ConsumeWordBase(wbBasic, 1, true);

            Logger.Level2Log($"Starting Words objects");
            var wbObjects = new WordBase();

            wbObjects.Populate(WordsDump.WordsObjects);
            World.ConsumeWordBase(wbObjects, 1, true);

            //var files = Directory.GetFiles( "../../../../Wordbase/" );
            //var filesCount = files.Length;
            //for ( var i = 0; i < files.Length; i++ ) {
            //  if ( EscapePressed ) break;
            //  Logger.Level2Log( $"Starting file number {i}/{filesCount}: {files[i]}" );
            //  var wb = new WordBase();
            //  wb.Populate( files[i] );
            //  World.ConsumeWordBase( wb, 1 );
            //}

            if (!EscapePressed)
            {
                World.GetLinkDumpList();
            }

            //Logger.Alarm();

            while (true)
            {
                Console.Write("What? ");
                var input = Console.ReadLine();
                CommandProcessor.ProcessInput(input);
            }
        }
コード例 #9
0
        private void CalculateBestCrozzle()
        {
            loopC = 2;

            bestpattern       = new PatternDatabase();
            bestpattern.score = 0;
            bestpattern.board = new string[crozzle_H][];
            for (int i = 0; i < crozzle_H; i++)
            {
                bestpattern.board[i] = new string[crozzle_W];
            }

            int h_length = 0;

            changedPattern = new string[WORD_LIST_C.Length];

            if (GAME_D == 1)
            {
                int n = 0;
                foreach (string s in SortByLength(WORD_LIST_C))
                {
                    changedPattern[n] = s;
                    n++;
                }
                h_length = changedPattern[0].Length;
            }
            else if (GAME_D == 2)
            {
                List <WordWithWeight> weightSort = new List <WordWithWeight>();
                for (int n = 0; n < WORD_LIST_C.Length; n++)
                {
                    WordWithWeight temp = new WordWithWeight(WORD_LIST_C[n]);
                    weightSort.Add(temp);
                }
                weightSort = weightSort.OrderByDescending(x => x.weight).ThenBy(x => x.weight).ToList();

                for (int n = 0; n < weightSort.Count; n++)
                {
                    changedPattern[n] = weightSort[n].word;
                }
                if (changedPattern.Length > 1)
                {
                    string ts = changedPattern[0];
                    changedPattern[0] = changedPattern[1];
                    changedPattern[1] = ts;
                }
                h_length = changedPattern[0].Length;
            }

            int limit = (crozzle_H - 1) * (crozzle_W - h_length + 1) * loopC;

            shouldStop = false;

            secondPassed       = 0;
            secCounter.Enabled = true;

            secondPassedLabel.Invoke((MethodInvoker) delegate
            {
                secondPassedLabel.Text = "Total seconds passed: " + secondPassed;
            });

            for (int startX = 0; startX < crozzle_H - 1; startX++)
            {
                if (shouldStop)
                {
                    break;
                }
                for (int startY = 0; startY < crozzle_W - h_length + 1; startY++)
                {
                    if (shouldStop)
                    {
                        break;
                    }
                    for (int loop = 0; loop < loopC; loop++)
                    {
                        if (shouldStop)
                        {
                            break;
                        }
                        data_Table_CreatedCrozzle = new DataTable();

                        NewCrozzle gameboard = new NewCrozzle(crozzle_W, crozzle_H, changedPattern);
                        gameboard.generateBoard(startX, startY, false);
                        crozzle_Array = gameboard.displayGrid();

                        int _cname = 0;
                        foreach (string t in crozzle_Array[0])
                        {
                            data_Table_CreatedCrozzle.Columns.Add(_cname.ToString(), typeof(string));
                            _cname++;
                        }

                        for (int i = 0; i < crozzle_H; i++)
                        {
                            data_Table_CreatedCrozzle.Rows.Add(crozzle_Array[i]);
                        }
                        Thread.Sleep(100);
                        crozzleDataGridView.Invoke((MethodInvoker) delegate
                        {
                            crozzleDataGridView.DataSource = data_Table_CreatedCrozzle;
                        });
                        Thread.Sleep(100);

                        int score = 0;
                        score = CrozzleListDataValidation();
                        if (score > bestpattern.score)
                        {
                            Console.WriteLine(score);
                            bestpattern.board = crozzle_Array;
                            for (int x = 0; x < crozzle_H; x++)
                            {
                                for (int y = 0; y < crozzle_W; y++)
                                {
                                    bestpattern.board[x][y] = crozzle_Array[x][y];
                                }
                            }
                            bestpattern.score = score;
                        }

                        crozzleProgressBar.BeginInvoke(
                            new MethodInvoker(() =>
                        {
                            int value = (startX) * (crozzle_W - h_length + 1) * loopC + (startY * loopC) + (loop + 1);
                            value     = 50 * value;
                            value    /= limit;
                            crozzleProgressBar.Value = value;
                        }
                                              )
                            );
                        Thread.Sleep(100);
                    }
                }
            }

            limit = (crozzle_W - 1) * (crozzle_H - h_length + 1) * loopC;
            for (int startY = 0; startY < crozzle_W - 1; startY++)
            {
                if (shouldStop)
                {
                    break;
                }
                for (int startX = 0; startX < crozzle_H - h_length + 1; startX++)
                {
                    if (shouldStop)
                    {
                        break;
                    }
                    for (int loop = 0; loop < loopC; loop++)
                    {
                        if (shouldStop)
                        {
                            break;
                        }
                        data_Table_CreatedCrozzle = new DataTable();

                        NewCrozzle gameboard = new NewCrozzle(crozzle_W, crozzle_H, WORD_LIST_C);
                        gameboard.generateBoard(startX, startY, true);
                        crozzle_Array = gameboard.displayGrid();

                        int _cname = 0;
                        foreach (string t in crozzle_Array[0])
                        {
                            data_Table_CreatedCrozzle.Columns.Add(_cname.ToString(), typeof(string));
                            _cname++;
                        }

                        for (int i = 0; i < crozzle_H; i++)
                        {
                            data_Table_CreatedCrozzle.Rows.Add(crozzle_Array[i]);
                        }
                        Thread.Sleep(100);
                        crozzleDataGridView.Invoke((MethodInvoker) delegate
                        {
                            crozzleDataGridView.DataSource = data_Table_CreatedCrozzle;
                        });
                        Thread.Sleep(100);

                        int score = 0;
                        score = CrozzleListDataValidation();
                        if (score > bestpattern.score)
                        {
                            Console.WriteLine(score);
                            bestpattern.board = crozzle_Array;
                            for (int x = 0; x < crozzle_H; x++)
                            {
                                for (int y = 0; y < crozzle_W; y++)
                                {
                                    bestpattern.board[x][y] = crozzle_Array[x][y];
                                }
                            }
                            bestpattern.score = score;
                        }

                        crozzleProgressBar.BeginInvoke(
                            new MethodInvoker(() =>
                        {
                            int value = (startY) * (crozzle_H - h_length + 1) * loopC + (startX * loopC) + (loop + 1);
                            value     = 50 * value;
                            value    /= limit;
                            crozzleProgressBar.Value = 50 + value;
                        }
                                              )
                            );
                        Thread.Sleep(100);
                    }
                }
            }

            FinalSetUp();
            secCounter.Enabled = false;

            //as new crozzle has created
            Crozzle_Created = true;
            secondPassedLabel.Invoke((MethodInvoker) delegate
            {
                buttonSaveCrozzle.Visible = true;
            });
        }