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

Generated with cgit - Back to sebastiano.tronto.net