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(); }
public static PatternDatabase Create() { PatternDatabase asset = ScriptableObject.CreateInstance <PatternDatabase>(); AssetDatabase.CreateAsset(asset, "Assets/PatternDatabase.asset"); AssetDatabase.SaveAssets(); return(asset); }
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); } } }
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); }); }
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); }
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); }); }
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); }
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); } }
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; }); }