プログラミング言語によるルービックキューブ (3x3x3) ソルバ実装まとめ

raspberry-pi-cube-solver

本記事では、ルービックキューブ 3x3x3 のソルバ (解法プログラム) の実装をまとめます。同時にスクランブルジェネレータ (スクランブル生成プログラム) も紹介します。

ソルバとスクランブルジェネレータの関係

紹介の前に、ソルバとスクランブルジェネレータの関係を簡単に述べておきます。
パズルのスクランブルジェネレータはソルバに強く依存しています。 というのも、ソルバが存在すればランダムステートなパズルの状態から完成状態に至る手順Sを求めることが可能となり、Sの逆手順S’が完成状態からそのランダムステートへのスクランブルシーケンスとなるためです。逆手順を求めるのは一般に容易 (自明) であるため、ソルバが確立されればスクランブルジェネレータも同時に完成できる、と言うことができます。
よってルービックキューブパズルのソルバとスクランブルジェネレータには強い関係があります。

今回紹介する全てのソルバのアルゴリズムは、現在3x3x3ルービックキューブの最も効率的な解求アルゴリズムである “Kociemba’s Two-phase Algorithm” にもとづいています。コンピュータとルービックキューブ解求アルゴリズムについては以前記事を書いたのでよろしければそちらをご覧ください。

Thumbnail of ルービックキューブをアルゴリズムで解くということルービックキューブをアルゴリズムで解くということ
terabo.net
ルービックキューブを解くアルゴリズムについて書きます.この記事では具体的なアルゴリズムの話はありません.(情報工学的アプローチでの見方です.ルービックキューブを解くアルゴリズムは「群論」とも深く関わりがありますが,私は情報工学系の人間なので...

それでは、ルービックキューブ (3x3x3) ソルバ / スクランブルジェネレータをプログラミング言語ごとに紹介していきます。

Read more »

ファイアスターターでガスストーブ着火

ファイアスターター (メタルマッチ) を買ってみた。 とりあえず、ガスストーブに着火してみるテスト。 ストーブの場合、火花を散らせば火がつくので楽。

※動画ではストライカ (四角い方のスティック) の先端のギザギザしている部分をこすって火花を起こしているが、 本来は側面でこするらしい (ギザギザ面はマグネシウム片を削りだす道具らしい)。

Read more »

Insertion Finder コンパイル方法 (CentOS 6)

FMCer にはおなじみの Insertion Finder (通称 IFたん)。
ソースコード公開されてないかなって思ってたら、@uesyuu さんに教えてもらいました (見つけてくれました)。

(古い) Insertion Finderhttp://xuanyan.ws/cube/insertionfinder/

2016-08-01 追記:
上に書いたURLはもう使われていないようです。最新版のソースコードはGitHubにアップされています。
https://github.com/xuanyan0x7c7/insertionfinder

Linux 32bit/64bit 向けにバイナリも配布されていますが、自分で機能を追加したり、カスタマイズすることを考えて自分でコンパイルできるようにしておきたいです。
本記事では、Insertion Finder のコンパイル方法を説明します。 環境は CentOS 6.7 ですが、CentOS 6 なら他のバージョンでも多分同じようにいけるはずです。

2016-10-21 追記:
Cygwinでのインストール方法の記事を書きました。
Insertion Finder コンパイル方法 (CentOS 6)

Read more »

登山においてソーラーチャージャーはモバイル端末向け電源として有効か?

問い: 登山においてソーラーチャージャーはモバイル端末向け電源として有効か?
私の答え: 山行日数による。 数日であれば、ソーラーチャージャーは不要、モバイルバッテリーで十分。 長期間かつその間コンセントからの電源を確保できないならば、ソーラーチャージャーは使う価値がある。 ただし登山にはやや不向き。

本記事は、RAVPowerソーラーチャージャーを実際に購入してみて、登山時 (2015-08-12 北アルプス涸沢) で実際に使用してみたレポートです。

ravpower-solar-charger-karasawa-5

RAVPowerソーラーチャージャーとは

RAVPowerソーラーチャージャーはモバイル機器向け充電器の一種です。 ソーラーパネルがついていて太陽光を受けることで発電し、機器に電源を供給します。

Amazon.co.jp でベストセラー商品になっています。 正確な定価はわかりませんが、2015-08-30現在、4,699円と割引されて販売されています。

スペック情報です。

  • 最大出力:5V/2A + 5V/1A (2ポートあります)
  • 出力パワー:15W
  • 重量:677g
  • サイズ:810 x 260 mm(折り畳み後:260 x 190 mm)

本体は4枚のパネルで構成されています。内3枚はソーラーパネルです。
パッケージの外観と付属物の写真です。取扱説明書と取り付けようカラビナ(もちろん登攀用ではない)が付属しています。

ravpower-solar-charger-1
ravpower-solar-charger-2
ravpower-solar-charger-3

Read more »

格安2人用山岳テント Eureka Midori 2 がいい感じ

格安2人用山岳テント「Eureka Midori 2」を購入して使用してみたのでレポートを報告します。
総合的になかなか良い感じでした。

eureka-midori2-2

格安の登山テント?

登山を始めると、日帰り→山小屋とステップアップして、テント泊をしたくなってくると思います。 そして、ご存知のようにテントは登山用品の中でも高価な部類に入ります。 通常、2~3人用テントは4万~5万円ほどします (アライテント エアライズ2 等)。

本記事で紹介する、Eureka Midori 2 は1万円台で販売されています (2015-08-30時点 Amazon.co.jp 16,291円)。 Eureka はカナダのブランドです。Eureka は普通、日本語に音写したとき「ユリイカ」や「エウレカ」と発音されますが、「ヨーレイカ」が正しいブランド名なようです。

この Eureka Midori 2 は、例えば、

  • これからテント泊をしたいが安価なテントでお試ししたい場合
  • すでのソロテントを持っているけど、テント泊デビューの友人を連れて行きたいときのサブテントとして

といった場合におすすめです。

Read more »

各国のキュービングコミュニティサイト一覧

ルービックキューブの公式大会は World Cube Association (WCA) が代表して管理するポリシー、規則等によって実施されますが、 世界各国はローカライズ化されより現場に近い立場で大会やイベントを運営(大会告知ページとレジストレーションフォームの提供を含む)をしやすくするためや、 普及活動や競技者同士のつながりを支援するために、 多くの場合そのような目的の団体または機関(ここではそれをキュービングコミュニティと呼ぶ)を有しています。 日本の場合、Japan Rubik’s Cube Association (JRCA) がこれに該当します。

本記事では、キュービングコミュニティの一覧をリンク集として示します。 地域の区分は WCA Delegates | World Cube Association に準じています (一部変更)。 追加希望等がありましたら @kotarotrd までご連絡ください。

Read more »

Python ライブラリ “pandas, scikit-image” を Windows にインストール

前回の記事 Pythonの機械学習・数値計算環境 (NumPy, SciPy, matplotlib, scikit-learn) をWindowsにインストール :: terabo.net に引き続き、Windows 環境に pandas, scikit-image をインストールします。

Pythonの機械学習・数値計算環境 (NumPy, SciPy, matplotlib, scikit-learn) をWindowsにインストール

上に張ったリンクの作業は済んでいるものと仮定します。 Pandas と scikit-image のインストールは非常に簡単です。

Read more »

[iOS] Javascript でクリップボードにアクセスすることは不可能… ではどうするか

clipboard-97590_1280

Web アプリを制作していて気づいた。Javascript で「クリップボードにコピーする」等の操作を簡単に書けると思ったら、全然そんなことなかった。 でもそういうサイトみたことあるよーって思うかもしれない。私もそう思ってたから簡単にできるものだと思ってた。しかしそれらは javascript ではなかった。

本記事では、Web ブラウザでどうすれば「クリップボードへコピー」を実現できるか考えようと思う。

じゃあどうすれば良いか。

Read more »

サイト名を terabo.net に戻した

元サイト名「得手勝手ラボ」がどうもしっくりこなくてあまりかっこよくもないため、 terabo.net に戻しました。

そもそも初めは1年半ぐらいまえに自分のドメイン欲しいなって思って、自分の名字が「てら」で始まるので、 「てら+ラボ」に関連するようなドメイン取ろうと思って、telab.net が埋まってたから日本語ローマ字の terabo.net を取得したような記憶がある。

サイト名はとりあえず terabo.net にしたけど日本語の名前欲しいなって思ったから四字熟語のサイトで 「て」で終わるやつ調べてみたら得手勝手が目に止まったから得手勝手ラボにした。

でもなんか微妙に長くて語呂悪いから、まだサイトに人気が無いこの時期に(これから人気が出るとは言ってない)戻した。

Read more »

Pythonの機械学習・数値計算環境 (NumPy, SciPy, matplotlib, scikit-learn) をWindowsにインストール

あることをきっかけに機械学習に触れてみることになりました。 私の開発環境は OS が Windows 7 (64bit) です。 今回は Python 2.7 をインストールしようと思います。
Python の機械学習ライブラリ (具体的には、NumPy, SciPy, matplotlib, scikit-learn) をインストールするのに 何回かつまずいたので、自分が後々いつか再構成できるように環境構築をメモしておきます。
この記事を読まれた方の参考にもなれば幸いです。

インストール原則

大事です。これを守らないと大体失敗します。私は何度も失敗しました。繰り返さないように書いておきます。

  1. Python は 32bit 版を用いる! たとえマシンが64bit、OSが64bit、cygwin (64bit) を使用するとしても!
  2. Python 本体は cygwin のパッケージマネージャ等でインストールしない! Windows 用のバイナリをダウンロードしてインストールする!
  3. Python のライブラリ (NumPy, SciPy, matplotlib) は easy_installpip を用いずに、Windows 用バイナリからインストールする!

これに気をつければ問題は起きにくいです。逆に守らないとどっかでこけます。
1 は NumPy や SciPy が 64bit 対応してないからです。
2 は Python 単体で使用するのであれば cygwin のパッケージマネージャからインストールで問題ありませんが、Windows バイナリからインストールする方が無難です。
3 はライブラリのインストール時に、例えば SciPy は依存性があるらしく、うまくコンパイルできませんでした (下の記事を参考)。

Read more »