From bf44088d4373a9520e860152c56a958332819c4b Mon Sep 17 00:00:00 2001 From: Sebastiano Tronto Date: Mon, 1 May 2023 16:33:51 +0200 Subject: Split nissy in other repos, see README.md --- TODO/2.1.md | 51 ----------------------------------------------- TODO/build-options.md | 33 ------------------------------ TODO/documentation.md | 41 ------------------------------------- TODO/easy.md | 16 --------------- TODO/installation.md | 14 ------------- TODO/new-feature-ideas.md | 32 ----------------------------- TODO/parser.md | 13 ------------ TODO/refactoring.md | 28 -------------------------- TODO/testing.md | 6 ------ TODO/webapp.md | 19 ------------------ 10 files changed, 253 deletions(-) delete mode 100644 TODO/2.1.md delete mode 100644 TODO/build-options.md delete mode 100644 TODO/documentation.md delete mode 100644 TODO/easy.md delete mode 100644 TODO/installation.md delete mode 100644 TODO/new-feature-ideas.md delete mode 100644 TODO/parser.md delete mode 100644 TODO/refactoring.md delete mode 100644 TODO/testing.md delete mode 100644 TODO/webapp.md (limited to 'TODO') diff --git a/TODO/2.1.md b/TODO/2.1.md deleted file mode 100644 index 7448094..0000000 --- a/TODO/2.1.md +++ /dev/null @@ -1,51 +0,0 @@ -# TODO-list for version 2.1 (or is it 3.0 at this point?) - -## Rework solver - -### 1. Implement minimum viable - -* Implement nxopt31 with fst_cube. Remember that the function - move_check_solved() should do one axis at the time, so that we don't move - everything before checking. -* test? - -### 2. Rework achitecture and file dependencies - -* solve.h depends only on moves(alg?) (dependency on step and trans is removed). -* Other modules have changed dependencies, might as well rework all. -* Make files smaller, do not include definition in .h, separate -data from abstract operations. -* remove cubetypes.h -* Create a module for multi-step (maybe wait?) -* Possible changes: in step solver, copy cube only if niss; add cleanup function -in solver (called by solve()) to free cube and perhaps pruning tables. -* see various TODO's in files - -### 4. More threading options - -* Lazy multithread: threads are as independent as possible and only -merged at the end. Ideal when all solutions of a certain length are requested. -* (Done) Eager multithread: current implementation, branches communicate the -number and list of solutions to stop as soon as possible. Good when only one -solution of a certain depth is required. - -## Simplify steps - -* Remove one type of rotation. -* Change steps to choicestep and stepalt to step (or was this already done?). - -## Add missing coordinates and steps - -* Check the old file for a list. Many are missing. -* Checkers in steps.c should use coordinates. - -## Missing and new commands - -* gen -* freemem -* twophase - -## Easy improvements - -* Solve should re-orient the cube if centers are off -* Solve: add options for -I (inverse only) and -L (linear = normal + inverse). diff --git a/TODO/build-options.md b/TODO/build-options.md deleted file mode 100644 index 83b8a34..0000000 --- a/TODO/build-options.md +++ /dev/null @@ -1,33 +0,0 @@ -# Build options for memory and multithreading - -## Investigate - -* Check exactly how much memory is needed for everything. -* Take note of which parts use threading (solving, genptable, other?). - -## Prepare code - -* Use define / ifdef or similar to compile and build tables only for the - parts to be used. -* If threads = 1, use a much simpler version of the solve method. Remember - that checking if enough solutions have been found is the first thing to - do in singlethread (no locking). -* Do not include pthread if threads = 1. -* Only one optimal solver should be compiled. -* Some simple steps may also need alternatives with smaller tables - (e.g. for staying sub 1Gb). For example dr and drfin. -* If necessary, work out alternatives to "twophase" for low-resource versions. - -## Makefile - -* Figure out how to change these options via makefile. For example: one - variable for the maximum allowed ram and one for the number of threads. -* (Optional) use a configure script? -* (Optional) interactive installation script? - -## Automate - -* Scout for resources during installation and choose best configuration - automatically. -* How to do this in Linux / POSIX? -* How to do this in Windows? diff --git a/TODO/documentation.md b/TODO/documentation.md deleted file mode 100644 index 050a854..0000000 --- a/TODO/documentation.md +++ /dev/null @@ -1,41 +0,0 @@ -# Documentation - -## Big documentation file on nissy's internals - -* Coordinates -* Symcoordinates -* Pruning tables -* Coordinate solving -* fst cube -* Optimized solver -* Multithreading -* Commands etc... -* Code architecture - -## examples.md - -* Example file for nissy's website and documentation folder -* With screenshots! - -## Random info - -Where to collect random information like this table? - -Table pt_nxopt31_HTM -Base value: 9 -0 1 -1 6 -2 29 -3 164 -4 1433 -5 16772 -6 205033 -7 2513871 -8 30329976 -9 342440769 -10 2815191126 -11 6147967200 -12 524918774 -13 3546 -14 0 -15 0 diff --git a/TODO/easy.md b/TODO/easy.md deleted file mode 100644 index 7d780e2..0000000 --- a/TODO/easy.md +++ /dev/null @@ -1,16 +0,0 @@ -# Easy things to improve or add - -## Improvements - -* Silent batch mode without >>> -* Solutions should be shown sorted: by length first, then by normal moves - (no niss) first, then it depends on the step (e.g. EO by axis). - -## Old commands and steps - -* drcorners (solve corners after DR) -* Search and improve suboptimal subsequences - -## New commands - -* notation: show valid moves diff --git a/TODO/installation.md b/TODO/installation.md deleted file mode 100644 index 7f632c2..0000000 --- a/TODO/installation.md +++ /dev/null @@ -1,14 +0,0 @@ -# Simplify and improve installation - -## Tables - -* Make install should generate tables, or add a "make tables" target to - generate tables. -* Make tables should also check for existing files and remove old ones - (maybe more for nissy's command than for makefile). - -## Correctness - -* Add checksum for all generated files. -* Hard-code results? Check for compatibility problems between different OSes - and filesystems - but there should not be any, since we use stdint.h. diff --git a/TODO/new-feature-ideas.md b/TODO/new-feature-ideas.md deleted file mode 100644 index 067d440..0000000 --- a/TODO/new-feature-ideas.md +++ /dev/null @@ -1,32 +0,0 @@ -# Possible new features and improvements - -This file contains non-refined ideas. Once an idea gets refined, it will -get its own file and more details. - -## Steps - -* QTM solver -* 5-side solver (for robots) -* Other steps (cross, blocks, LSE...) - -## UX features - -* Save algs as variables and edit them (like in old nissy) -* Use a logging system for previously run commands, info, results... - (e.g. when solving with -c solutions are not shown, they can be logged here) -* Configurability: add an "alias" command, run config file at startup -* Input cube state directly instead of moves (ugly from command line / file) - -## Improvements - -* Optimal solver: when asking only for one solution, scan for upper bound in - parallel using a non-optimal (but fast) solver (e.g. twophase). -* Optimal solver: up to a small bound, try with a small pruning table. -* Optimal solver: start at different depths in parallel -* Multi-step solver: make more general - -## New features - -* Allow user to specify moveset manually (see issue \#5 on github) -* EO analysis (and also DR and HTR analysis): group similar EOs (Jay) -* HTR "maze" analysis? diff --git a/TODO/parser.md b/TODO/parser.md deleted file mode 100644 index 134f0d7..0000000 --- a/TODO/parser.md +++ /dev/null @@ -1,13 +0,0 @@ -# Improve command parser - -First, expand this TODO file to be more precise. - -## Refactor - -* The syntax of a command's options should be described by data, not by a - parser function. -* A single parser function can then parse options for all commands. - -## Usability - -* Better error messages! diff --git a/TODO/refactoring.md b/TODO/refactoring.md deleted file mode 100644 index eedbd20..0000000 --- a/TODO/refactoring.md +++ /dev/null @@ -1,28 +0,0 @@ -# Refactoring - -## Init functions - -* All .h files should have a single init function. -* This function should initialize everything that this module needs, including - calling the init functions of the modules it depends on. -* To avoid multiple initialization of the same module, each should have a - static bool initialized variable. -* Everything that a module needs should be initialized by init(), avoid - initializing stuff when solving. Exception: pruning tables, move tables. -* Most functions should generate some tables and save them to disk. -* Init functions should have a consistent structure (e.g. the way they check - if the tables are already generated should be the same). - -## Cube types - -* Get rid of cubetype.h, split type definitionss into the other modules. -* Every type definition should be in the most fundamental module that needs it. - -## Code style - -* Stop declaring all variables at the beginning of a function. -* Remove variable names from prototypes. -* Sort function implementations alphabetically, ignore static vs non static. -* Rename functions and variable to have a consistent naming scheme. -* Functions that copy data: swap src and dest, follow memcpy standard. -* Read style(9) and decide what to implement. diff --git a/TODO/testing.md b/TODO/testing.md deleted file mode 100644 index 1deb93a..0000000 --- a/TODO/testing.md +++ /dev/null @@ -1,6 +0,0 @@ -# Testing - -## Write tests - -* Write tests for each module. Some of might require refactoring (this is - a good thing!) diff --git a/TODO/webapp.md b/TODO/webapp.md deleted file mode 100644 index 4f8eddf..0000000 --- a/TODO/webapp.md +++ /dev/null @@ -1,19 +0,0 @@ -# Towards a nissy webapp - -## Architecture - -* Split in client / server. -* Server can load and keep in memory all the tables, client(s) send messages to - the server to run commands. -* Use UNIX sockets only first, maybe later try WinSock. - -## Simple webapp - -* Investigate how to use fastcgi, try simple program first. -* Decide what limits to put in terms of resources and write a "filter" script - to block big requests (maybe use a timeout). - -## Advanced webapp - -* Use cubing.js for nice graphics. -* Port it to a graphical desktop version too. -- cgit v1.3