Norvell's Public Machinations
    Wondering what’s next for npm?Check out our public roadmap! »

    rubik-cipher
    TypeScript icon, indicating that this package has built-in type declarations

    0.1.9 • Public • Published

    Rubik cipher

    pipeline status coverage report npm version

    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

    Install

    npm i rubik-cipher

    DownloadsWeekly Downloads

    0

    Version

    0.1.9

    License

    MIT

    Unpacked Size

    65.3 kB

    Total Files

    20

    Last publish

    Collaborators

    • avatar