aboutsummaryrefslogtreecommitdiff
path: root/TODO.md
blob: 790b520bb1adc93fa878885ea0254f9753f151ec (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
# TODO list

This is a list of things that I would like to add or change at some point.
It's more of a personal reminder than anything else.

## Commands

### Commands that are available in nissy 1.0, but not in this version (yet):
* drcorners (solve corners after dr)
* search and improve non-optimal subsequences
* unniss (rewrite A (B) -> B' A)
* scramble [dr, corners only, edges only, htr, ...]
* save and edit algs as "variables"
* invert an alg

### More steps for `solve`
* QTM optimal solving
* Block-building steps (cross, roux blocks, ...)
* Other common steps (LSE, ...)

### Improvements to currently implemented commands
* batch mode: add separator / info on which command it is executing
(also change man page for this)
* solve should re-orient first if needed and not just give up if centers are off
* solve should try up to a small bound without loading the large pruning table
* drfin for HTR scrambles should try all 3 axis and pick the best solutions;
  in general every step that automatically detects orientation should do this
* for solve -v, solving in different orientation does not give meaningful info,
  because I need to transform the alg as I go.
* for solve -v, print certain info like average branching value

### New features
* cleanup: translate an alg to the standard HTM moveset + reorient at the end
* configurability: add an `alias` command, run config file at startup

## Distribution

* README.md: cite nxopt
* Add EXAMPLES.md file
* better man page
* webapp (cgi)

## Technical stuff

## Performance
* solve (allow_next): filter out based on base_move; only check once for each
  triple of moves; how to deal with different movesets?
* try htr corners + edges in slice but not oriented (300Mb table);
  de Bondt's trick does not work, but I can use full symmetry and
  take advantage of the fact that it is a subset invariant under half-turns
  (like in light optimal solver)
* Another idea: DR + cornershtr (5Gb table); same as above, de Bondt's trick
  does not work but I can use half-turn trick
* On the contrary: DR + separate UD corners allow dB's trick, but no ht-trick

## Coordinates, symmetries, pruning tables
* Cleanup symcoord.c: some coordinates and symdata are never actually used;
remove also sd_eofbepos and just use sd_coud for khuge (this changes the
coordinate so the whole table must be generated again!) or viceversa
* Use pruning values mod 4 instead of mod 16 (or maybe not, I like the
current system)

### Structural changes
* client/server architecture: run a server process in the background so that
  multiple client processess can send it queries and get results; this would
  open up the door for a web-based version or graphical clients

Generated with cgit - Back to sebastiano.tronto.net