wirelyre / tetra-tools Goto Github PK
View Code? Open in Web Editor NEWHome Page: https://wirelyre.github.io/tetra-tools/pc-solver.html
License: Other
Home Page: https://wirelyre.github.io/tetra-tools/pc-solver.html
License: Other
Proposed groupings:
IISTZ
, unordered shapes of pieces composing the solution)
The two groupings are likely to be very similar for queries where a grouping is useful.
Sort of depends on #5.
This is all throughout the crate, but especially solution-info
and its deserializer. Passing other data is very inconvenient.
JSON should be used for all Rust–JS data marshalling.
Perhaps srs-4l
should use Serde for real and implement Serialize
and Deserialize
on its several relevant types. Many of them will turn into strings.
Whenever you have a full solid row in the initial field, it drops down to the bottom of the field in each of the possible solves. The pieces within the possible solves don't shift up after the full solid row is moved to the bottom, so said pieces get partially covered. In some cases, depending on where the solid row in the initial field is, a gap is formed in the middle of pieces.
How they "should" look (if we were to assume that the solid row dropping to the bottom is intentional):
fumen codes with special characters do not load properly through direct link
example: v115@9gF8DeF8CeG8BeH8CeA8JeAgWEAa+VWC
the fumen link is able to load the fumen from its url code but the pc solver link is not
this is because special characters in the fumen code are raw and get parsed differently than intended
Currently implemented as SRS with six 180º kicks. But TETRIO uses SRS+, a variant that changes I quarter kicks.
All pieces other than I match the current implementation. The correct full kick table for I under TETRIO:
{
"ne": [[ 2, -2], [ 3, -2], [ 0, -2], [ 0, -3], [ 3, 0]],
"es": [[-2, 1], [-3, 1], [ 0, 1], [-3, 3], [ 0, 0]],
"sw": [[ 1, -1], [ 3, -1], [ 0, -1], [ 3, 0], [ 0, -3]],
"wn": [[-1, 2], [ 0, 2], [-3, 2], [ 0, 0], [-3, 3]],
"ns": [[ 0, -1], [ 0, 0], [ 1, 0], [-1, 0], [ 1, -1], [-1, -1]],
"sn": [[ 0, 1], [ 0, 0], [-1, 0], [ 1, 0], [-1, 1], [ 1, 1]],
"ew": [[-1, 0], [ 0, 0], [ 0, 2], [ 0, 1], [-1, 2], [-1, 1]],
"we": [[ 1, 0], [ 0, 0], [ 0, 2], [ 0, 1], [ 1, 2], [ 1, 1]]
"nw": [[ 1, -2], [ 0, -2], [ 3, -2], [ 3, -3], [ 0, 0]],
"en": [[-2, 2], [-3, 2], [ 0, 2], [-3, 0], [ 0, 3]],
"se": [[ 2, -1], [ 0, -1], [ 3, -1], [ 0, 0], [ 3, -3]],
"ws": [[-1, 1], [ 0, 1], [-3, 1], [ 0, 3], [-3, 0]],
}
It's not possible to just paste these in, because these reversed rotations don't have inverted offsets.
Options:
KickTable<const QUARTER: usize, const HALF: usize>
, full kick tables for each physics–shape pair(&[Kick], &[Kick], &[Kick])
, each component selected at runtime and runtime-sizedI have low hopes for (2) because I suspect the compiler unrolls the kick loops and it's fast. (3) seems ugly. On the other hand, (1) would clean up some existing code too!
The downsides of (1) are more static data and monomorphized code. The latter can be reduced if necessary by duplicating final kicks.
legal-boards
will also need to handle Jstris 180 and TETRIO separately, because some Jstris placements will be illegal in TETRIO and vice versa.
This project should have a Python interface.
Right now, everyone's fumen/stacker/search code is strewn around and not easily compatible. This could be fixed with a nice Python interface, so that simple scripts can call into high-performance solvers. Ideally, research would be easily reproducible with a single script.
There are plenty of values which can be Python objects at no practical cost. Basically, the inputs and outputs of searches. Performance only really matters during a search.
u64
chunksA declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.