0.1.9 • Published 6 years ago
rubik-cipher v0.1.9
Rubik cipher
Basic implementation of rubik cipher.
Installation
npm install rubik-cipher --save
Usage
RubikCipherConfig
Configuration object that is passed when creating new RubikCipher | field | type | default | required | explanation | |:--------------:|:-------:|:-------:|:--------:|:-----------------------------------------------------------------:| | cubeSize | number | 2 | no | How large is the cube (n*n)) | | groupSize | number | 1 | no | By how many chars group the divided string | | fillRest | boolean | true | no | If the rest of cube spaces will be filled or left empty | | fillWithRandom | boolean | false | no | If the spaces will be filled by char 'x' or with random character |
JavaScript
Creation
const RubikCipher = require('rubik-cipher');
// Creates cube with default parameters
const defaultCube = new RubikCipher('hello world!');
// Creates cube with RubikCipherConfig
const configCube = new RubikCipher('hello world!', {
cubeSize: 2,
groupSize: 1,
fillRest: true,
fillWithRandom: true,
});
// Creates and decodes cube with selected key config
// keyCube.Text should be 'testxxxxxxxxxxxxxxxxxxxx'
const keyCube = new RubikCipher('xsxtxtxxxxxexxxxxxxxxxxx', '2+1+1+0+B111 L012 B113 D111 B013');
Values
// By using default parameters the fillRest is true, so the rest of the string after typed text is char 'x'
// example: 'hello world!xxxxxxxxxxxx'
const currentText = cube.Text;
// Generated combination that follows pattern: 'B111 L012 B113 D111 B013'
// B113 -> move+isWide+depth+rotation -> move = B, isWide = 1 (true), depth = 1, rotation = 3 (3 equals to -1)
const currentRandomCombination = cube.Combination;
// Gets the current key that is in format: 'cubeSize+groupSize+fillRest+fillWithRandom+Combination'
// example: '2+1+1+0+B111 L012 B113 D111 B013'
// where cubeSize is 2, groupSize is 1, fillRest is true, fillWithRandom is false and Combination is 'B111 L012 B113 D111 B013'
const currentKey = cube.Key;
Modifications
// Scrambles the cube cubeSize^3 times
cube.scramble();
// Scrambles the cube 20 times.
cube.scramble(20);
// Adds cubeSize^3 more generated moves to the combination.
cube.addScramble();
// Adds 20 more generated moves to the combination.
cube.addScramble(20);
// Manual string sequence turn
cube.turn('L112 U112 B013 D111');
// Manual object array sequence turn
cube.turn([{ depth: 1, wide: false, target: 'U', rotation: 1 }]);
// Clears the cube of scrambles
cube.reset();
Examples
const RubikCipher = require('rubik-cipher');
const cube = new RubikCipher('HelloWorld!', {
groupSize: 1,
fillRest: true,
fillWithRandom: false,
});
cube.scramble();
const ciphreKey = cube.Key;
const ciphreText = cube.Text;
const result = new RubikCipher(ciphreText, ciphreKey);
const decodedText = result.Text;
TypeScript
import RubikCube from 'rubik-cipher';
const cube = new RubikCipher('HelloWorld!', {
groupSize: 1,
fillRest: true,
fillWithRandom: false,
});
cube.scramble();
const ciphreKey = cube.Key;
const ciphreText = cube.Text;
const result = new RubikCipher(ciphreText, ciphreKey);
const decodedText = result.Text;
Test
npm run test