Document of CubeChampleAPI

概要

CubeChampleAPIは、Two-Phase-Algorithm をベースにした3x3x3キューブのスクランブル生成およびソルバのAPIです。

  1. ランダム状態へのスクランブル
  2. コーナーのみのスクランブル
  3. エッジのみのスクランブル
  4. パリティ有り状態へのスクランブル
  5. パリティ無し状態へのスクランブル
  6. 設定したキューブの状態へのスクランブル (逆手順にすればソルバ)

の6種類作成可能です。
パリティとは、コーナー・エッジをそれぞれ3-cycle-methodで解いていったとき、コーナー・エッジにぞれぞれ2点交換が残ってしまう状態のことを意味します。

URI

http://cube.terabo.net/apis/chample[.format]

[.format]は下の表を参照してください。

[.format] レスポンスの形式 MINEタイプ
.xml XML application/xml
.json JSON application/json
.jsonp JSONP application/javascript
.txt or 省略 plain-text text/plain

メソッド

GET

クエリパラメータ

キー デフォルト値 説明
n 1~100の整数 なし スクランブルの個数
t 0~4の整数 なし スクランブルの種類
(0:通常 1:コーナーのみ 2:エッジのみ 3:パリティ有り 4:パリティ無し)
f URFDLBのみで構成された54文字の文字列 なし キューブの状態(詳細は下で説明)

キューブの状態は以下の展開図で、「U1~U9 R1~R9 F1~F9 D1~D9 L1~L9 B1~B9」の順に、その位置にどの面のステッカーがあるかをURFDLBのアルファベットで表した9*6=54文字のアルファベット文字列で定義します。
例えば、完成状態から M2 S2 E2 でできるチェッカーキューブの状態は、「UDUDUDUDURLRLRLRLRFBFBFBFBFDUDUDUDUDLRLRLRLRLBFBFBFBFB」で表します。
また、キューブの状態をリクエストに送ったとき、スクランブル個数や種類を一緒に送ったとしてもこれらは無視されます。

         U1 U2 U3
         U4 U5 U6
         U7 U8 U9
L1 L2 L3 F1 F2 F3 R1 R2 R3 B1 B2 B3
L4 L5 L6 F4 F5 F6 R4 R5 R6 B4 B5 B6
L7 L8 L9 F7 F8 F9 R7 R8 R9 B7 B8 B9
         D1 D2 D3
         D4 D5 D6
         D7 D8 D9

レスポンス

結果はHTTPレスポンスのメッセージボディに指定されたフォーマットで返ります。文字コードはUTF-8、改行コードはLFです。
結果の内容をまとめると下の表のようになります。

状況 ステータスコード メッセージ
制限回数オーバー
不正なクエリ値
400 具体的なエラーメッセージ
サーバエラー
プログラムエラー
キューブ状態があり得ない状態
500 具体的なエラーメッセージ
正常終了 200 plain-text形式のとき、キューブの状態とスクランブル文字列が交互に現れる。
その他の形式のとき、下のレスポンス例を見てください。

制限

連続アクセスを防ぐために同一IPアドレスからのアクセスは60回/1時間に制限しています。毎時0分になるとリセットされます。

例1. ランダムなスクランブルを3つ作成

XML形式: http://cube.terabo.net/apis/chample.xml?n=3&t=0
結果の一例: (ステータスコード: 200)

<?xml version="1.0" encoding="UTF-8"?>
<results>
  <scramble>
    <facelets>DLUUURBRFLBFURDLUUDDURFBBFDRDFLDFDUBFLRLLFLFURDRBBBLRB</facelets>
    <sequence>U L2 D' B2 D L2 B2 U2 B2 D F D B R2 U2 L' D2 U F L2</sequence>
  </scramble>
  <scramble>
    <facelets>LRLUUFUDDFUBURBFBDRLRRFRULUBULFDRLLBBBFBLDDDRDFULBDRFF</facelets>
    <sequence>F2 U2 R2 F2 D' U' B2 U L2 B2 R' F' L B' U L B2 F L2 R' B</sequence>
  </scramble>
  <scramble>
    <facelets>LBRLUUURDFBULRLDUFBDRRFDLFBBLRFDRLDLDBRBLFFUUFRBUBDDFU</facelets>
	<sequence>L2 B2 F2 U2 L2 F2 U' R2 B2 D' B U' F R' B' L B R' B' R' U</sequence>
  </scramble>
</results>

JSON形式: http://cube.terabo.net/apis/chample.json?n=3&t=0
結果の一例: (ステータスコード: 200)

{
  "results" : [
    {
      "facelets" : "DLUUURBRFLBFURDLUUDDURFBBFDRDFLDFDUBFLRLLFLFURDRBBBLRB",
      "sequence" : "U L2 D' B2 D L2 B2 U2 B2 D F D B R2 U2 L' D2 U F L2"
    },
    {
      "facelets" : "LRLUUFUDDFUBURBFBDRLRRFRULUBULFDRLLBBBFBLDDDRDFULBDRFF",
      "sequence" : "F2 U2 R2 F2 D' U' B2 U L2 B2 R' F' L B' U L B2 F L2 R' B"
    },
    {
      "facelets" : "LBRLUUURDFBULRLDUFBDRRFDLFBBLRFDRLDLDBRBLFFUUFRBUBDDFU",
      "sequence" : "L2 B2 F2 U2 L2 F2 U' R2 B2 D' B U' F R' B' L B R' B' R' U"
    }
  ]
}

plain-text形式: http://cube.terabo.net/apis/chample.txt?n=3&t=0
結果の一例: (ステータスコード: 200)

DLUUURBRFLBFURDLUUDDURFBBFDRDFLDFDUBFLRLLFLFURDRBBBLRB
U L2 D' B2 D L2 B2 U2 B2 D F D B R2 U2 L' D2 U F L2
LRLUUFUDDFUBURBFBDRLRRFRULUBULFDRLLBBBFBLDDDRDFULBDRFF
F2 U2 R2 F2 D' U' B2 U L2 B2 R' F' L B' U L B2 F L2 R' B
LBRLUUURDFBULRLDUFBDRRFDLFBBLRFDRLDLDBRBLFFUUFRBUBDDFU
L2 B2 F2 U2 L2 F2 U' R2 B2 D' B U' F R' B' L B R' B' R' U
LDFBUDFRDRLLLRRDFBUFBBFULBRDUFUDUBLUULRBLDLRBDFFDBRRFU
D' U L2 U2 R2 U F2 R2 U' R B2 U' R2 U2 F U' R U B2 D2
FFDLUFLRLDRBFRBLBLBDBDFUBFDRLFUDRRLFUUUBLLFRURDRUBDUBD
D R2 F2 R2 B2 D F2 D B D2 B2 R' D F2 U B D' L R

例2. エッジのみのスクランブルを1つ作成

XML形式: http://cube.terabo.net/apis/chample.xml?n=1&t=2
結果の一例: (ステータスコード: 200)

<?xml version="1.0" encoding="UTF-8"?>
<results>
  <scramble>
    <facelets>UFUBUUUFURFRRRFRBRFDFUFUFLFDUDLDRDRDLDLLLBLDLBLBRBBBDB</facelets>
    <sequence>U2 B2 L2 F2 U L2 R2 D B2 F2 R D B F' L' F' D' R2 B2 R2 U'</sequence>
  </scramble>
</results>

JSON形式: http://cube.terabo.net/apis/chample.json?n=1&t=2
結果略

plain-text形式: http://cube.terabo.net/apis/chample.txt?n=1&t=2
結果略

例3. チェッカーキューブへのスクランブル

XML形式: http://cube.terabo.net/apis/chample.xml?f=UDUDUDUDURLRLRLRLRFBFBFBFBFDUDUDUDUDLRLRLRLRLBFBFBFBFB
結果略

JSON形式: http://cube.terabo.net/apis/chample.json?f=UDUDUDUDURLRLRLRLRFBFBFBFBFDUDUDUDUDLRLRLRLRLBFBFBFBFB
結果略

plain-text形式: http://cube.terabo.net/apis/chample.txt?f=UDUDUDUDURLRLRLRLRFBFBFBFBFDUDUDUDUDLRLRLRLRLBFBFBFBFB
結果略

例4. 完成状態へのスクランブル

XML形式: http://cube.terabo.net/apis/chample.xml?f=UUUUUUUUURRRRRRRRRFFFFFFFFFDDDDDDDDDLLLLLLLLLBBBBBBBBB
結果略

JSON形式: http://cube.terabo.net/apis/chample.json?f=UUUUUUUUURRRRRRRRRFFFFFFFFFDDDDDDDDDLLLLLLLLLBBBBBBBBB
結果略

plain-text形式: http://cube.terabo.net/apis/chample.txt?f=UUUUUUUUURRRRRRRRRFFFFFFFFFDDDDDDDDDLLLLLLLLLBBBBBBBBB
結果: (ステータスコード: 200)

UUUUUUUUURRRRRRRRRFFFFFFFFFDDDDDDDDDLLLLLLLLLBBBBBBBBB
F2 L2 D2 L2 F2 R2 U2 B2 L R' U2 L' R'

Note: 最短が求まるわけではない。

例5. 不正なクエリ

XML形式: http://cube.terabo.net/apis/chample.xml?n=1000000&t=0
結果 (ステータスコード: 400)

<?xml version="1.0" encoding="UTF-8"?>
<error>Query 'n' must be defined and must be between 1-100, when query 'f' is undefined.</error>

JSON形式: http://cube.terabo.net/apis/chample.json?n=1000000&t=0
結果 (ステータスコード: 400)

{
  "error": "Query 'n' must be defined and must be between 1-100, when query 'f' is undefined."
}

plain-text形式: http://cube.terabo.net/apis/chample.txt?n=1000000&t=0
結果 (ステータスコード: 400)

Query 'n' must be defined and must be between 1-100, when query 'f' is undefined.

例6. あり得ないキューブ状態

XML形式: http://cube.terabo.net/apis/chample.xml?f=UUUUUUUUUUUUUUUUUUUUUUUUUUUDDDDDDDDDDDDDDDDDDDDDDDDDDD
結果 (ステータスコード: 500)

<?xml version="1.0" encoding="UTF-8"?>
<error>The program exited with an error.</error>

JSON形式: http://cube.terabo.net/apis/chample.json?f=UUUUUUUUUUUUUUUUUUUUUUUUUUUDDDDDDDDDDDDDDDDDDDDDDDDDDD
結果略

plain-text形式: http://cube.terabo.net/apis/chample.txt?f=UUUUUUUUUUUUUUUUUUUUUUUUUUUDDDDDDDDDDDDDDDDDDDDDDDDDDD
結果略

アプリケーション

Champler!
GUIをくっつけたもの。

この記事をシェアする:Tweet about this on TwitterShare on FacebookShare on Google+Share on TumblrEmail this to someone