aboutsummaryrefslogtreecommitdiff
path: root/TODO
diff options
context:
space:
mode:
authorSebastiano Tronto <sebastiano@tronto.net>2023-01-14 22:33:09 +0100
committerSebastiano Tronto <sebastiano@tronto.net>2023-01-14 22:33:09 +0100
commitfcb3ac9b02c3ed150fbf6d539613510cc83627ea (patch)
tree7ad41077725e771dab91cab6df39bf23026442a7 /TODO
parentd97a625e8d96337dfa6a158cd247462b9cac29a5 (diff)
downloadnissy-fcb3ac9b02c3ed150fbf6d539613510cc83627ea.tar.gz
nissy-fcb3ac9b02c3ed150fbf6d539613510cc83627ea.zip
Re-organized TODO file
Diffstat (limited to 'TODO')
-rw-r--r--TODO/2.1.md38
-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.md30
-rw-r--r--TODO/parser.md13
-rw-r--r--TODO/refactoring.md28
-rw-r--r--TODO/testing.md24
-rw-r--r--TODO/webapp.md19
10 files changed, 256 insertions, 0 deletions
diff --git a/TODO/2.1.md b/TODO/2.1.md
new file mode 100644
index 0000000..e35016a
--- /dev/null
+++ b/TODO/2.1.md
@@ -0,0 +1,38 @@
1# TODO-list for version 2.1 (or is it 3.0 at this point?)
2
3## Rework solver
4
5* Split solve in solve_coord, solve_generic (and maybe solve_singlethread, see
6 notes about build options).
7* Add a void * extradata to DfsArg.
8* remove cube from dfsarg? (i still need to save the scramble somewhere,
9 but I really only use it in dfs_niss)
10* Re-work prepare_step process for solve_generic (nxopt table is special).
11* is_valid should also unnis and / or cleanup the alg.
12
13## New optimal solver (use fst)
14
15* Implement nxopt31 with fst_cube. Remember that the function
16 move_check_solved() should do one axis at the time, so that we don't move
17 everything before checking.
18
19## Simplify steps
20
21* Remove one type of rotation.
22* Change steps to choicestep and stepalt to step (or was this already done?).
23
24## Add missing coordinates and steps
25
26* Check the old file for a list. Many are missing.
27* Checkers in steps.c should use coordinates.
28
29## Missing and new commands
30
31* gen
32* freemem
33* twophase
34
35## Easy improvements
36
37* Solve should re-orient the cube if centers are off
38* Solve: add options for -I (inverse only) and -L (linear = normal + inverse).
diff --git a/TODO/build-options.md b/TODO/build-options.md
new file mode 100644
index 0000000..83b8a34
--- /dev/null
+++ b/TODO/build-options.md
@@ -0,0 +1,33 @@
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
new file mode 100644
index 0000000..050a854
--- /dev/null
+++ b/TODO/documentation.md
@@ -0,0 +1,41 @@
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
new file mode 100644
index 0000000..7d780e2
--- /dev/null
+++ b/TODO/easy.md
@@ -0,0 +1,16 @@
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
new file mode 100644
index 0000000..7f632c2
--- /dev/null
+++ b/TODO/installation.md
@@ -0,0 +1,14 @@
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
new file mode 100644
index 0000000..b619e36
--- /dev/null
+++ b/TODO/new-feature-ideas.md
@@ -0,0 +1,30 @@
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* Multi-step solver: make more general
26
27## New features
28
29* EO analysis (and also DR and HTR analysis): group similar EOs (Jay)
30* HTR "maze" analysis?
diff --git a/TODO/parser.md b/TODO/parser.md
new file mode 100644
index 0000000..134f0d7
--- /dev/null
+++ b/TODO/parser.md
@@ -0,0 +1,13 @@
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
new file mode 100644
index 0000000..eedbd20
--- /dev/null
+++ b/TODO/refactoring.md
@@ -0,0 +1,28 @@
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
new file mode 100644
index 0000000..9b6f23a
--- /dev/null
+++ b/TODO/testing.md
@@ -0,0 +1,24 @@
1# Testing
2
3## Architecture
4
5* Folder structure: each module (.h file) has a corresponding test/module_name
6 folder containing the important tests.
7* How to test pre / post -init()?
8* Makefile: one target for each module with correct dependencies.
9* Makefile: perhaps write a specific makefile for testing in test folder.
10
11## Test sttructure
12
13* Make consistent
14* Little output for success
15* Stop on first failed? (automatic with makefile)
16
17## Write tests
18
19* Pretty much all are missing, except fst.
20* Start from bottom (utils.c)
21
22## Other
23
24* Move test_coord from coord.c to test folder.
diff --git a/TODO/webapp.md b/TODO/webapp.md
new file mode 100644
index 0000000..4f8eddf
--- /dev/null
+++ b/TODO/webapp.md
@@ -0,0 +1,19 @@
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