Panda Noir

JavaScript の限界を究めるブログでした。最近はいろんな分野を幅広めに書いてます。

ルービックキューブ用ライブラリを作りました

github.com

概要

  • TypeScript で書かれています
  • d.tsファイルを同梱しています
  • テストカバレッジは99%です
  • ルービックキューブの回転をシミュレートできます
  • 回転記号の表記ゆれにも対応しています

インストール

npmで公開しています。

$ npm install @pandanoir/rubikscube

unpkgからダウンロードして使うこともできます。

<script src="https://unpkg.com/@pandanoir/rubikscube@0.1.0/dist/cube.js"></script>

TSで書かれています

すべてTSで書いてあります。そのため、型チェックによって快適に補完できます。たとえば、存在しない回転記号で回そうとすると型エラーが起こります。

const cube = new Cube();
cube.rotate('R'); // OK
cube.rotate('Mw'); // Type error

かなり厳格に型をつけたので、使いやすいと思います。

表記ゆれにも対応

回転記号には統一された規格がないので、表記ゆれがあります。

  • Rw2'
  • Rw'2
  • R2'
  • R'2

本ライブラリはすべての表記に対応しています。

対応回転記号

  • R, L, U, D, F, B
  • M, S, E
  • x, y, z
  • (r), (u), (f)

また、それぞれ180度回転、反転、ワイド回転にも対応しています。

回転記号を一括で入力可能

たとえば J-perm をこのように入力できます。

cube.rotate('R', 'U', `R'`, `F'`,'R', 'U', `R'`, `U'`, `R'`, 'F', 'R2', `U'`, `R'`, `U'`)