2x2x2キューブのPBLの下段が隣接交換で上段が完成状態はどう回すべきなのか

これ。

「こういう手順が良いよ」ではなく「どうしたら良いのだろうね」という記事である。

2x2x2キューブのOrtegaメソッドでは、D面を揃え、U面を揃え、その後、下段(D面)と上段(U面)の側面を同時に揃える。 この側面を同時に揃える手順がPBL(Permutation of Both Layers)である。

側面の状態として、完成、隣接交換、対角交換がある。

下段と上段の側面の状態の組み合わせごとに手順があり、私はこのシリーズの手順を使っている。

www.youtube.com

下段 上段 手順 補足
完成 隣接 R' F R' F2 R U' R' F2 R2 上段の揃っているバーはB面
完成 対角 R' F R' F2 R U' F R' F2 R U' R
隣接 隣接 R2 U' R2' U2 F2 U' R2 上下段の揃っているバーはB面
対角 隣接 R' F R' F2 R U' R 上段の揃っているバーはF面
対角 対角 R2' F2 R2

これらの手順は覚える事が少なくて良い。(下段/上段=)「完成/隣接」の R' F R' F2 R U' R' F2 R2 は、「対角/隣接」の R' F R' F2 R U' R に「対角/対角」の R2' F2 R2 を続け(て R をまとめ)た手順。「完成/対角」の R' F R' F2 R U' F R' F2 R U' R は、「対角/隣接」の R' F R' F2 R U' R を2回繰り返し(て R を消し)た手順。「対角/対角」の R2' F2 R2 は覚えるまでもないと考えると、実質的には「隣接/隣接」の R2 U' R2' U2 F2 U' R2 と「対角/隣接」の R' F R' F2 R U' R を覚えるだけで良い。

また、 R' F R' F2 R U' R は、慣れれば、 R2' F2 R2 のそれぞれの R2 の間にちょっと合いの手を入れるくらいの気持ちで回せるはずである。私はしょっちゅう引っ掛かるが……。

上記の表には、「隣接/完成」と「隣接/対角」、「対角/完成」が無いが、これらは上下をひっくり返せば表の状態のどれかになる。問題はどうやってひっくり返すかである。表を見ると分かるように、これらの手順では下段のバーをB面に置いて回すので、D面を揃えた段階でバーをB面にするか、もしくはD面を揃える前にバーがB面に来るような向きにしておくのが良いらしい。「隣接/対角」で下段のバーがB面にあるとき、 x2' で上下をひっくり返せば、バーが上段のF面になってそのまま手順を回せる。「対角/完成」は向きが関係無いので x2' で良い。x2' は回しやすい。「隣接/完成」は、 z2 でひっくり返すと、上段のバーがB面にある「完成/隣接」になって、手順が使える。が、しかし、 z2 って回しづらくない? キューブを落としそうになる。

要は、下段がバーをB面に置いた隣接交換、上段が完成状態で回せる手順が欲しい。自分で考えたのが次の手順。

x L' U L' U2 L F' R' F2 R2

x2 するとバーがF面に来る。その状態で完成させるためには奥のコーナーを入れ替えれば良くて、それは3x3x3のJaパームの R' U L' U2 R U' R' U2 L R 。2x2x2では L と R が等価なことを利用して調整という感じ。

x を右手で回し、その間に左手の親指をD面に持ってくると、以降は持ち替えずに回せる。 F' は右手親指で跳ね上げる。悪くはないけれど、急いでいると x L' とか F' のあたりが引っ掛かる。 z2 が辛いだけなら、 D2 x2' とか x2' U2 して「完成/隣接」の手順を回せば良いのではという気もする。新たに手順を覚えたり練習したりしなくて良いというメリットも大きい。

他の手順。

ちなみに、EG-1には、D面が不完全一面でU面が完全一面の状態(逆向きのT-perm)も含まれます。手順として何を使うかは完全に好みの問題ですが、筆者はバーをL面に置いて「R2 T-perm R2」というのを使っています。

パーフェクトEG-1ガイド①~Sune,Anti-Sune以外編~|いかのおすし

R2 とTパームの最初の R がキャンセルすることを考えると、B面にバーがある状態からなら、 D R' U R' U' R' F R2 U' R' U' R U R' F' R2 だろうか。

そう、EG-1の手順をまとめているページも、上段が完成状態のものはあまり載っていない。皆どうしているのだろう。

このサイトは、PBLのところに「完成/隣接」とは別に「隣接/完成」が載っていた。

www.cuberoot.me

D R2 U' R' U R' F2 R F' R' F2

どれが良いだろうか。

教えてもらった。

アメリカのデトロイトに行ってきた(Automotive CTF 2024)

海外旅行はこのとき以来の9年ぶり。

kusano-k.hatenablog.com

飛行機もこのときが最後だったのではなかろうか。 アメリカは10年以上前に乗り継ぎで1回だけ入国したことがある。 そもそも実家への帰省以外で東京を出るのもいつぶりだろう。

そんなに引きこもっているのになぜアメリカかというと、これで旅費と滞在費が出るから。

qiita.com

この機会を逃したらデトロイトに行くことなんて無いだろうなと思って行くことにした。

パスポート

海外旅行は久しく行っていないけれど、パスポートは更新していた。 たまに海外のサイトを使うと身分証明証として要求される。 身分証明証として運転しないのに運転免許証を取るという話はマイナンバーカードで解決しつつある。 パスポートも何とかならないものか。 いや、パスポートの主目的は身分を証明することか?

ESTA

一般的に他の国に行くには「入れてください」「良いですよ」という手続きが必要。 でも、日本人は信用されているから短期の海外旅行くらいなら免除されている国が多い。 でも、アメリカは必要。 でも、ESTAという簡易版の手続きがある……と理解している。

ESTAってこんなに面倒だったかな……。 会社の情報とか、出生地とか、両親の情報まで入力させられる。 10年以上前に手続きしたときは、「あ、こんなもんで良いんだ」と思った覚えがあるが……。 面倒だったことを忘れているのか、10年間で変わったか。

最後のほうの「今までに入国拒否されたことがありますか?」みたいな質問に、間違えて「はい」と答えると、再申請しても弾かれるようになって大使館に行かないといけなくなるとかいう怖い話もググったら出てきた。

ビビっていたけれど、特に問題無く通った。

CTFの準備

そもそもコンテストのために行くので、コンテストの準備をしないといけない。

車をハックしたいなら「カーハッカーズ・ハンドブック」が良いということで、とりあえず買った。

www.oreilly.co.jp

運営から「こんなものを準備しておくと良いよ」というメールが来ていた。 その中にNFCがあった。

プログラムをから何かをしようと思うと、nfcpyというPythonライブラリが定番らしい。

qiita.com

使うNFCカードリーダーはRC-S380が良いらしい。 ただ、すでに後継機が出ていて新品が買えない。 AmazonのマーケットプレイスでRC-S380を買った。

NFCなんてどれも同じかと思いきや、規格が色々とあって、Suicaとマイナーカードは別物らしい。 へー。

RC-S380なら(Suicaの規格のほうは)カードリーダーがカード側をエミュレーションすることもできる。

残高カンストのSuicaの振りができたりしてちょっと楽しい。 ※誰でも読み書きできる部分を弄っているだけで、これで自販機で買い物をしたりはできないはず。

とりあえず、読み書きのやり方は分かったし、後は問題を見て考えれば何とかなるだろう(フラグ)。

他の準備

7年前に買ったラップトップPC(Surface Pro 5、メモリ8GB)がさすがに厳しくなってきたので、良い機会だから新しいラップトップPCを買った。

他に何か要るかな。 スーツケースは持ってる。 飛行機で便利なネックピローもなぜか持ってる。 アメリカのコンセントは形状が日本と同じだし、電圧も120Vでたいていの機器はそのまま使えるらしく、その辺の準備は不要。 何とかなるだろ。

というか、この手の海外旅行便利グッズは空港で買えるのか。 羽田空港の中に小さなビックカメラがあった。

飛行機

まずは、羽田 → ワシントンD.C.。

12時間のフライトが辛い。 飛行機は向こうが手配してくれて、United Airlines。 アメリカの航空会社。 何か映画でも観ようと思ったけど、ジャパニメーションは無いし、他の映画も日本語吹き替えはおろか、日本語字幕すら無い。 「インターステラ」とか「Tuesday」とか気になったけど、英語で聞いても理解できないだろ。 Tuesday、あらすじだけは日本語で書かれてて、面白そうだと思ったが、日本では上映されていないのか……?

en.wikipedia.org

ワシントンD.C.で乗り換え。 ここで預け入れ荷物を回収し忘れそうになったのが今回一番のヒヤリハット。 さらに、もう一度預けるのもスルーしそうになった。 チームメンバーに言われなかったら面倒なことになっていた。 「あー、日本に入国するときはスーツケースを持った状態で税関を通るよね。そういう感じか」と思っていたけど、なんか入国審査前に、通路の途中のそんなに目立たないところで預けないといけなかった。 なぜ1回ピックアップする必要があるのか謎。

時差ぼけ

私は時差ぼけは全然平気らしい。 日本とほぼ半日の時差があるので一番厳しい状況だと思うのだけど、普通に現時時間でx時ならx時の感覚。 あるいは、常日頃は夜型の生活をしていて、旅行中は朝型の生活をしていたから、ずれが小さいのかもしれない。

1日目

Automotive CTF 2024本戦。 このために来た。

……が、全然解けず。 つらい。

NFCは、コンテスト開始前にこのまっさらなカードが1人1枚配られた。 リーダーで読めない。 謎。

「タグ」がどうこう言っている問題があったのと、スタッフテーブルに車のドアの模型があったので、カードを何かするとそのドアが開くのかもしれない。 完全に一からカードを作らないだろうし、書き換えられるカードで、書き換えてどうこうだったりするのだろうか。

チームメンバーから「これを解析してくれ」と渡された実行可能ファイルも解析しきれず……。 申し訳ない。

終わってからあらためて読んだら、これだけの処理だった。

d = open("memory.dump", "rb").read()
X = d[0xab94:0xaba8]
K = d[0x8554:0x855a]
Y = ""
for x, k in zip(X, K*4):
    Y += chr(((x^k)-k)%0x100)
print(Y)
$ python3 solve.py
bh{pr0duct_AMB1tion}

このコンテストは、スコアボードが非公開だった。 翌々日に表彰式なので、そのときまでドキドキしてくれということなのだと思う。 競技プログラミングだと、終了前1時間くらいから順位表が凍結(更新されなくなる)のは良くある。 全く非公開は珍しい。 これは辛いかと思ったけど、解いたチームが多いほど問題の点数が下がっていく方式で、2チーム以上解いた問題は点数が下がるので何チーム解いたかが分かる。 1チームも解いていないか、1チーム解いたかは、点数が変わらないので分からない。 各問題について何チーム解いたかは分かるが、強い1チームが多くの問題を解いているのか、多くのチームがバラバラの問題を解いているのかも分からない。 ドキドキ具合としてはちょうど良いのかもしれない。

コンテスト終了後、チームメンバーに連れられて、クラフトビールの店に行った。 ビールもだけど、スペアリブが美味しい。

2日目

フリー。

前入りしていたチームメンバーも、コンテスト会場で話した主催社の人も勧めていたので、フォード博物館に行ってきた。

てっきり車関係の博物館だと思っていたけれど、別にそんなことはなく、何でもある。 めちゃくちゃ広い。

この蒸気機関車は模型などではなく本物だし、このサイズでも建物の片隅に置かれているという感じ。

プラスチックの射出成形を実演してくれる装置。

数学コーナーもあった。

コインをローラーで押しつぶすやつ。 日本だと硬貨を損傷するのは犯罪だけど、アメリカでは合法なのでこういう装置があるんですね~と思っていたが、今は場合によっては違法らしい。こういう土産物的なのはセーフ……? そもそもドル硬貨なんて持っていなかったからクレカで払ったけど。

www.nicesocal.com

ホテルに戻ってきて周囲を散歩。 デトロイトはカナダとの国境なので、川の向こうがカナダ。

なお、この辺は、北ではなく南がカナダ。黒い線が国境線。

hamayanさんと一緒に行ったBuddy's Pizza。

3日目

夕方の表彰式に行けばOKなので、それまではデトロイト美術館に行くことにした。

バスに乗ったら降り方が分からん。 皆何らかの手段で次の停留所で降りることを伝えているが、ボタンが見当たらない。 同じように降り方が分からないのか、「降ろしてくれ」と叫んで降りていったおばちゃんもいる。 ええ……どうしよ。 答えは窓際のワイヤーを引っ張るだった。 良く見ると、なんか運転席のほうまで繋がってる。

ここも広い。 絵とか彫像とかがいっぱいあるが……そもそも見ても分からん。 とりあえず、一番有名っぽいゴッホの絵を探した。 この絵、こんなに小さかったんだ。

Pokemon GOをしながら歩いて帰った。

地域限定ポケモンはけっこうイベントで出ているから、持っていない&アメリカにいるのはオドリドリ(ぱちぱちスタイル)だけか。 これはゲット。 事前に調べずに「持っていないやつがいたら捕まえれば良いんでしょ」と思っていて、トリミアンの地域限定フォルムは気が付かなかった。 悲しい。

pokemongo.gamewith.jp

表彰式。

4位だった。 上出来。 私は役に立っていないが……予選は多少は貢献したので許してほしい。

表彰式は車関係のカンファレンスのいちセッション扱い。 車関係だからブースを出している企業は全然分からない……と思ったらGitHubがいた。 ステッカーゲット。

帰宅

12時間のフライトはやっぱりつらいが、席が通路側だったのでだいぶ気が楽。

せっかく日本の外に出たのだから、免税品を買わないともったいない……と免税店を覗いたけど、海外の免税の価格のほうが、日本国内の課税価格より高かった。円安やばい。

あと、タバコは免税範囲が2カートンから1カートンに縮小されていた。

www.traicy.com

決済事情

マジでほぼ全てがキャッシュレスになっていてビビる。

基本的にクレカで払えるとは思っていて、「まあ、でも現金も要るよね。200ドルくらいあれば大丈夫かな」と持っていったけれど、ホテルで枕元に置いた4ドルと、帰国のときの空港で少しでもドルを使うかと払ったコーヒー代10ドル以外は現金を使っていない。 周りの客も皆キャッシュレス決済だから、この自分が持っていったドル紙幣以外はアメリカで現金を見ていない。

クレカは便利だが、不正利用が怖い。 まあ、金銭的被害は補償されるだろうけど、海外旅行の後に不正利用されてカードが再発行になり、あちこちに登録してあるカードを変更するという面倒なことになった人を知っている。

Kyashのリアルカードを発行していて、プリペイドカードだしちょうど良いかと思って持っていった。 半分くらいの店では弾かれた。 別に月額課金とかでもないし、VISAブランドだし、使えるときは使えるから海外NGということもないだろうし、何なんだろう。

三井住友VISAのナンバーレスカードと、それをiPhoneに入れたApple Payは常に使えた。 ナンバーレスカードとかApple Payとかだと、もうスキミングは気にしなくて良かったりするのだろうか。

物価

全てが高い。 めったに行かない海外旅行でそんなケチケチしなくて良いだろうと、現地にいる間はそんなに値段を気にしていなかったけれど、今あらためてクレカの明細を見るとけっこうな金額だな……。 そもそもアメリカはインフレしているらしく、小数点を消せば(100倍すれば)だいたい日本円になるでしょの感覚でまず高い。 そこから1ドル150円の円安で、さらにチップが乗る。

このハンバーガーとビールがたしか3,000円くらい。

コンビニみたいな感じのところで買ったこれが5,000円くらい。

外国人観光客の多い日本のスキー場でラーメンが3,000円とかニュースになっていたけれど、この感覚の外国人旅行者からしたら高くないな。

食事

アメリカの食事に対して、「美味しくないが量がめっちゃ多い」というイメージを持っていた。 全然そんなことはなかった。 量は普通だし、味も美味しい。

一番量が多かったのは帰りの空港で食べたハンバーガセットだろうか。 とはいえ、全然食べきれる量。

電動キックボード

街中のいたるところに電動キックボードが放置されている。 アプリで鍵を開けて乗って、好きなところに乗り捨てて良いらしい。 その乗り捨てられたものに次の誰かが乗ると。 すごい便利。

LUUPがロビー活動だの天下りだの叩かれているが、もっとロビー活動を頑張ってこれを実現してくれないものか。

試しにアプリを入れて乗ってみた。 日本でLUUPは使ったことが無いので、初めての電動キックボード。 完全に止まった状態だとアクセルが利かなくて、最初だけ自分でこぐ必要がある。 なるほど。 そういえば、海外旅行保険に入るときに「車は保証対象外だから、車に乗るなら別途保険を掛けろよ」と言われてたな。 これ、アメリカも車両扱いだったりするのかな? で怖くなってすぐ降りた。

喫煙事情

タバコは売ってないし、喫煙所は少ないし、喫煙所で吸っている人も少ない。 健康的。 喫煙者はタバコを日本から持っていったほうが良い。 噛みタバコとかもあると助かる。

多分割キューブのOLLパリティ手順の一般化

メモ。分割数ごとになんて覚えられん。

a-b の部分を反転させる手順。

aRw bRw' U2 x
aRw bRw' U2 aRw bRw' U2
(n-a)Rw' bRw U2 aLw bLw' U2
aRw' bRw U2 aRw bRw' U2 x'
(n-a)Lw' bLw U2 aRw' bRw

b=1 のときは、隣のコーナーキューブも合わせて反転させて良いので、b=0 として消せる。このとき、最後のほうの x' (n-a)Lw' は aRw' と等しくなる。これでこの辺の手順と同じになるはず。

最少手数競技のスクランブルの先頭と末尾のR' U' Fは何なのか

まとめ

スクランブルプログラムの中のソルバーも、人が解くときもまずはEOを揃えようとする。 これが一致してしまうのを避けたい。 全ての軸のEOを変え、理解しやすく覚えやすく回しやすい手順として R' U' F が追加されている。

詳細

(ルービック)キューブの競技と聞いて想像するのは、「世界記録更新3.13秒」のようないかに速く揃えるかというものである。 実は、速く揃えることではなく、いかに短い手数で揃えるのかを競う最少手数競技(FMC)という競技種目もある。 これがなかなか面白い。

kawam1123.github.io

公式のスクランブルプログラムTNoodleでスクランブルを生成してみると、速解き用と最少手数競技用でスクランブルの見た目が異なる。

速解き用。

最少手数競技用。

最少手数競技用のスクランブルは、先頭と末尾に常に R' U' F が付いている。 これが何なのか気になる。

答えはTNoodleのソースコードに書かれている。 リンク先のGoogle Groupsは消えているっぽい。

        // For fewest moves, we want to minimize the probability that the
        // scramble has useful "stuff" in it. The problem with conventional
        // Kociemba 2 phase solutions is that there's a pretty obvious
        // orientation step, which competitors might intentionally (or even
        // accidentally!) use in their solution. To lower the probability of this happening,
        // we intentionally generate dumbed down solutions.

        // We eventually decided to go with "Tom2", which is described by Tom
        // Rokicki (https://groups.google.com/d/msg/wca-admin/vVnuhk92hqg/P5oaJJQjDQAJ):

        // START TOM MESSAGE
        // If we're going this direction, and the exact length isn't critical, why not combine a bunch of the
        // ideas we've seen so far into something this simple:
        //
        // 1. Fix a set of prefix/suffix moves, say, U F R / U F R.
        // 2. For a given position p, find *any* solution where that solution prefixed and suffixed with
        //    the appropriate moves is canonical.
        //
        // That's it.  So we generate a random position, then find any two-phase solution g such
        // that U F R g U F R is a canonical sequence, and that's our FMC scramble.
        //
        // The prefix/suffix will be easily recognizable and memorable and ideally finger-trick
        // friendly (if it matters).
        //
        // Someone wanting to practice speed FMC (hehe) can make up their own scrambles just
        // by manually doing the prefix/suffix thing on any existing scrambler.
        //
        // It does not perturb the uniformity of the random position selection.
        //
        // It's simple enough that it is less likely to suffer from subtle defects due to the
        // perturbation of the two-phase search (unlikely those these may be).
        //
        // And even if the two-phase solution is short, adding U F R to the front and back makes it
        // no longer be unusually short (with high probability).
        // END TOM MESSAGE

        // Michael Young suggested using R' U' F as our padding (https://groups.google.com/d/msg/wca-admin/vVnuhk92hqg/EzQfG_vPBgAJ):

        // START MICHAEL MESSSAGE
        // I think that something more like R' U' F (some sequence that
        // involves a quarter-turn on all three "axes") is better because it
        // guarantees at least one bad edge in every orientation; with EO-first
        // options becoming more popular, "guaranteeing" that solving EO
        // optimally can't be derived from the scramble is a nice thing to
        // have, I think.  (Someone who was both unscrupulous and lucky could
        // see that R' F R doesn't affect U2/D2 EO, and therefore find out how
        // to solve EO by looking at the solution ignoring the R' F R.  That
        // being said, it still does change things, and I like how
        // finger-tricky/reversible the current prefix is.)  Just my two cents,
        // 'tho.
        // END MICHAEL MESSSAGE
        String[] scramblePrefix = AlgorithmBuilder.splitAlgorithm("R' U' F");
        String[] scrambleSuffix = AlgorithmBuilder.splitAlgorithm("R' U' F");

github.com

スクランブルは単に手順をランダムに生成しているわけではない。

大会規則で、「解くのに 2 手以上要する全ての状態からランダムに選ばれた状態(各状態は等確率)でなければならない」と定められている。

www.worldcubeassociation.org

手順をランダムに生成するだけでは、本当に全ての状態が生成されるのか分からないし、各状態が等確率で生成されるという保証も無い。 そこで、まずは状態をランダムに選び、その状態を解くことでスクランブル手順を生成している。

解く際にはKociembaのTwo-phase Algorithmというアルゴリズムが使われている。

qiita.com

https://kociemba.org/twophase.htm

このアルゴリズムを最少手数競技用語で説明すると、DR(domino reduction)の前後で分けて探索しているということである。

最少手数競技用語で説明できるように、最少手数競技の競技者が行っていることに近い。 プログラムと人間が同じ状態を同じように解くと、手順が似通ってくる可能性がある。 特に、最少手数競技の最初のステップであるEOが一致するのは良くない。 ということで、スクランブルの先頭と末尾に特定の手順が出てくるようにしている。

条件はEOを全ての軸で変えることで、後は、理解しやすくて、覚えやすくて、できれば回しやすい手順ということで R' U' F が選ばれているらしい。

末尾だけではなく先頭にも付けているのは、NISSを考えてのことだろう。

先頭と末尾で同じ手順を選ぶ必要は無いけれど、変える必要も無いので、同じ手順になっているのだと思う。

csTimerのデータ消失対策

csTimerのデータが消えてこの記事に辿り着いた人へ。 もし多少なりとも復元できているならば、今すぐ「ファイルにエクスポート」しましょう。 私は、「サーバーからインポート」で1か月前まで巻き戻ったデータが復元できたが、その後色々試す中で「サーバーにエクスポート」をポチり、実はポチった瞬間にもデータが消えていて、サーバーのデータを空っぽにしてしまった。ファイルにエクスポートしていた3か月前までさらに巻き戻ってしまった。

csTimerとは

https://cstimer.net/

ルービックキューブ系のパズルの早解き用のタイマーアプリ。 非常に高機能。 使っている人が一番多いのではないかと思う。

1万件以上の記録を残せるし、それをグラフにして見ることもできる。 「練習の成果が出て、だいぶ速く回せるようになってきたなぁ」とできる。

そんなcsTimerのデータが消えることがある。

つらい。

ということで、対策を書いていく。

エクスポート

csTimerのデータは、サーバーではなくブラウザに保存されている。何もしないと、PCが壊れたら終わり。

左上のパネルのエクスポートボタンから、記録をサーバーやファイルに出力することができる。

単に「サーバーにエクスポート」は入力したアカウントを忘れるとアウトなので、WCAIDでログインした上でcsTimerのサーバーに保存するか、GoogleアカウントでログインしてGoogleのサーバーに保存するのが良いと思う。

ただ、サーバーにエクスポートだとデーターは上書きされる。 私のように消えた状態で上書きしてしまうと、もうそれまで。 「ファイルにエクスポート」もしておくと良い。

……と思っていたけど、下の画像を良く見ると、オートエクスポートの下に「最新でないデータをインポート」があるな。前からあったっけ? これで助かるのかもしれない。

なお、100ソルブごとに自動でエクスポートすることもできる。

どうせなら1ソルブごとにエクスポート……というか、他のウェブアプリのように全てサーバー側でデータを持ってくれと思うが、きっとサーバー代が大変なことになるのだろう。というか、100ソルブごとでも大変そう。寄附するか、広告を表示しましょう。私は寄附しました。

私は、100ソルブごとのエクスポートを有効にした上で、良い記録が出たタイミングでファイルにエクスポートもしている。

IndexedDBの消失対策

PCが壊れてデータが飛ぶのは分かるが、PCもブラウザも壊れたわけではないのに、データが消えることがある。 その理由の考察と、対策になるかもしれない、ちょっとIT技術的な話。

csTimerはデータをブラウザのIndexedDBというものに保存している。

developer.mozilla.org

「データを永続的に保存する手段です」と書かれているのに、PCの空き容量が不足気味になったりすると、実は消されるらしい。 PCが壊れたわけでもないのに消えるのは、たぶんこれが原因。

消されないためにはどうしたら良いか? navigator.storage.persist() を呼び出せば良い。

developer.mozilla.org

Google Chromeの場合は、Ctrl+Shit+J で開発者ツールを開き、

navigator.storage.persist().then(console.log)

を打ち込む。これで true が出てくればOK。

なお、この開発者ツールで何かをするというのは、危険な操作である。 (この記事のような)誰が書いているかも分からないサイトに書かれたことに従って、例えば「Google検索結果の画面で開発者ツールを開いてこれを打ち込むと面白いことになるよ」に乗せられたりすると、最悪Googleアカウントが乗っ取られる。 内容を理解した上で実行しましょう。

本来は、これを実行した時点で、「通知を許可しますか?」みたいな感じのダイアログが出てきて、そこで許可をするという流れらしい。 しかし、Google Chromeの場合はダイアログが出ない。 true になるなら良いのだが、 false になることがある。

その条件が非常に複雑。 しかも、その人がどの程度そのサイトを使っているかもあったりして、人によって異なる。

qiita.com

私の場合は、 https://cstimer.net/ で通知を許可したら true になった。 https://cstimer.net/ は通知を送らないので、サイトの設定から許可をする。 通知を送らないサイトで通知を許可するというのも謎だが、Google Chromeの謎のレーティングを上げるためなので仕方がない。

あとは、Firefoxだと「永続ストレージへのデータ保存を許可しますか?」のダイアログが出てくる。csTimerが navigator.storage.persist() を呼び出しているらしく、csTimerを開くだけで良い。 開発者ツールでの操作は不要。 Firefoxを使うというのも一つの手だろう。

これで本当に消えないようになるのかは分からない。 Google Chromeで2週間前くらいにちょくちょく消えていて、この操作をしてからは消えていないけど。 もし消えることがあったら追記する。

ディスカバリーチャンネルコードコンテスト2024参加記

special.discoveryjapan.jp

DSICO presetns ディスカバリーチャンネルコードコンテスト。略称DDCC。

本戦に行ってきた。

3位まで賞金が貰えるところ、5位。惜しい。

DISCOとは?

Presented by DISCOだし、本戦はDISCOの本社。 このDISCOがどういう会社かというと、知らない人が大半だと思うし、私も過去のコンテストに出るまで知らなかった。

半導体を作っている会社……ではなく、半導体を作る機器を作っている会社。世界シェアで7割とか持っているらしい。このご時世、それは強い。

会社説明で「弊社は経常利益率がすごい!」と言っていて、「はー、株価はどんなもんなんだろうな」とググってみたらすごかった。

そういえば、AtCoder投資法というネタを聞いたことがある。AtCoderでコンテストを開いた会社の株を買うと儲かると。最近のDDCCはAtCoderが絡んでいないが、とはいえ、最初に参加した頃にでも株を買っておけば10倍になったんだな。さすがに怖くてもう買えない……。

ついでにIRを見てみたら、従業員平均年齢37.6歳で、平均年収が1,300万円以上だった。○○ホールディングスみたいな実質役員だけという会社でもないだろうに、この年収はヤバい。

https://www.disco.co.jp/jp/ir/library/doc/fs/fs84.pdf

あまり褒めてばかりだと回し者だと思われそうなので、気になりポイントも挙げておく。説明会でWillという社内通貨制度をアピールしている。「同僚へのありがとうの気持ちをポイントにしてちょっとしたボーナスに」なら他社でも聞いたことがあるけれど、ガチでこれで仕事を回しているっぽい。こういうの、好きな人はめっちゃ好きだろうけど、嫌いな人は嫌いそう。経営者目線とか持ちたくないから従業員をやっている人もいるだろうしな。

www.disco.co.jp

予選

今のDDCCにAtCoderは関わっていない。昔は関わっていて、決勝イベントにchokudaiさんがいたりしたけれど。AtCoderは好きだが、日本のプログラミングコンテストが全てAtCoderになるのはそれはそれで不健全だと思うので、自社でコンテストを開こうという企業にはがんばってほしい。

ということで、予選もAtCoderではない。事前に申込みが要るので注意。

問題もAtCoderとはちょっと毛色が違う。今年の問題は……無いな。たぶん、ここにそのうち公開されるはず。

www.disco.co.jp

問題の難易度はそんなに高くない。AtCoder ABCでD-Eくらいが解ける人なら全完を狙えると思う。非就活生枠の本戦進出は全完前提の解答時間争いになっているのではなかろうか。入力は全て与えられて、手元で実行する形式。しかし、Google Code Jamと違って使える言語に制限がある。微妙にパースしづらい入力形式はソースコードに埋め込むことを想定しているのだと思う。

過去に出たことがあるのにそれを忘れていて、もたもたしてしまった。他の人が本戦出場の連絡の話をしているのに遅れて連絡が来たので、繰り上がりだったのだと思う。

本戦

ツリーに感想を並べている。

実際に物を動かして競うのがDDCCの特徴。今回の問題はこれ。今回というか、ここ数年は毎年似たような物らしい。

奥の射出口からパチンコ玉が出てきて、それを穴に入れる。各穴は最大10個までしかカウントされないので、複数の穴を狙う必要がある。

射出口の向きと、台の傾きと、棒の回転が制御できる。良く見ると分かるように、たいていの穴は射出口との間に棒や他の穴があるので、上手いこと避ける必要がある。また、射出口と目標の穴を結んだ直線と棒の角度が大きかったり、台を大きく傾けていたりと、難しい状況で穴に入れると加点がある。

シミュレーション

最初の時間はシミュレーション。答えを提出すると、運営の用意したシミュレーターが動いてスコアが返ってくる。玉がどのよう動いたかなどは分からず、得られるのはあくまでスコアだけ。

これで正のスコアを取らないと、実機で動かすフェーズに進めないらしい。とはいえ、一番近いところは何もしなくても入るし、まあ適当に。朝早いから眠いし。

ということで、とりあえず射出口の向きだけ穴に向けた。ほとんどの穴は他の穴か棒に弾かれるけど、正の点数だけ取れば良いんでしょ……と思っていたけれど、ルールを良く読んだら、実機で動かすのはこのシミュレーションの得点順だった。早く実機で動かせればそれだけ直す時間が長くなるので、実は重要だった。

トライアル1回目

無事(?)正の点数は取れたので、実機用のコードを書く。

直接狙えない穴は、射出口の方向と台の傾きを良い感じにして狙う必要がある。実はそんなに難しくない。坂を転がるときの玉の回転モーメントを考慮した加速度は問題文で与えられていた。x軸方向とy軸方向に分離すると、等速直線運動なり等加速度直線運動なりになる。x軸方向とy軸方向それぞれについて目標の穴の位置に達するときの時刻を求め、その差が0になれば穴に入る。後は適当に。別にAtCoderのように10-6精度で求めなければいけないわけではないし、時間も厳しくないし、方向を1万通りくらい全探索することもできる。

実機用のコードも提出したときにシミュレーターによるスコアが返ってくる。……なんか一番近い穴以外を狙ったときは0点になるな。なんで……?

結局このバグが取れないまま実機でのトライアル。

www.youtube.com

邪魔にならない向きにしているはずの棒がめっちゃ邪魔をしていた。あらためてコードを読むと、1/1000度単位で指定しないといけない角度で、0を1個付け忘れ、1/10000度単位になっていた。これはひどい。

持ち物には書かれていなかったけれど、カメラかスマホか様子を撮影できるようなものはほぼ必須。記憶だけだと直しようがない。

トライアル2回目

そのバグを直して2回目。いきなり現実の摩擦を考慮したりはできないので、「なお、摩擦や空気抵抗は考えないことにする」で素直に穴を狙っている。

www.youtube.com

まあ、こんなもんでしょ。

1個目と2個目の穴は障害物が無いので何も難しくない。3個目は、摩擦があってちょっと手前に落ちたが、棒に当たって良い感じに穴に入っている。ラッキー。4個目はさすがに手前過ぎてダメ。もうちょっと奥に行かせる必要がある。5個目はまあOK。6個目は、本当は反対側の奥の隅を狙いたいのだけど、バグって上手く動かない。

これが1回目のトライアルでできてりゃな……。1回目で誤差を修正して2回目のトライアルで確認だけするということがしたかった。

ファイナル用のコード

ということで、3個目はラッキーで入っているのでそのままで良いだろう。4個目は、適当に1.1倍くらい奥に穴があると思うことにした。6個目は、2次方程式を解くところで間違えていた。2次方程式だから解が2個あるところ、逆側だとどちらの解を使うのかが変わるのか。修正。それでも、6個目がシミュレーターだとなぜか点数が入らないんだよな。謎。きっと実機なら入るだろう(間違いは後で分かる)。あと、狙う穴を変える前の待ち時間をちょっと詰めた。

で、時間はまだ余っているがやることが無くなった。時間をもっと詰めるとか、今は完全に邪魔にならない向きにしている棒をもうちょっと傾けてスコアを稼ぐとかはあるのだけど、もう実機で確認はできないし、そこで無理すると大幅なスコアダウンになりかねない。どうせ入賞を狙える感じでもないだろうし、確実にいこう。

提出。

コードは上げておいた。

github.com

そう、実機で動かすからデバッグとかがまともにできなくて大変なのであって、コード自体は普段のAtCoderに比べればとても簡単。

会社見学

最終試技の前に社内見学。

社内にプールとかジムとかある。これは単なる福利厚生だけではなく、非常用水としても使えると。なるほど。そういや、地震で近くの学校に避難したときは、プールの水でトイレを流したりしたな。

普通は直線で切っているウェハもソフトを書き換えれば丸く切れるんだぞというデモを見た。そんなんソフトだけでどうにかなるのか。

うちの技術だとシリコンウェハを透けて見えるくらい薄く削ることもできるんだとか。シリコンは、赤色のように波長の長い光のほうが透過しやすいらしい。へー。1ミクロンくらいのペナペナになるけど、そのウェハ上に作る集積回路の配線は、そこからさらに3桁くらい細いとか。

ファイナル

皆で実機の周りに集まって最終試技。

なお、これまでのトライアルでは他の人の結果は見られない。実機が衝立で囲われて、そこに1人ずつ入って自分の出力が動く様子を見ていた。なので、他の人がトライアルでどんな動きをしていたのかは分からない。

ファイナルは2回目のトライアルのスコアの低い人から順に行うということで、ここでファイナルの順番&2回目のトライアルの結果発表。

なんか1位だった。え、マジで??? あとは、そこそこの順位で「楽しかったね」か、大失敗して悲しい気持ちで帰るかのどちらかだと思っていた。「入賞できるかも?」と期待が高まる。1位なら30万円、2位なら20万円、3位なら10万円。ちなみに賞状はシリコンウェハ製。これも欲しい。

結果。

www.youtube.com

最後~。あの方向だと手前の穴に落ちるのか。シミュレーターは正しかった……。あと、棒の向きも間違えてるな。邪魔にならないように90度回した向きにしているつもりだった。

とはいえ、5位となかなかの高順位。やっぱり実環境は難しいので、確実に動かせれば、それだけでそこそこの成績になる。

いや、でも、これは悔しい。次があったらもっと気合いを入れていこう。

大田BLD2024新春と3x3x3目隠しとクロックの話

speedcubing.or.jp

目隠しの競技種目を主体とした(ルービック)キューブの大会、大田BLD2024新春に行ってきた。その辺の話をつらつらと書いていく。3x3x3目隠しが1回は成功したのでまあ満足である。

3x3x3目隠し

略称3BLD。普通の3x3x3のキューブを見ずに揃える種目。

と聞くと「そんなことできるの? 人間が短期記憶できる量であるマジカルナンバーは7±2で……」とまず思うだろう。意外とできる。100人が100人できるとまでは言わないが、特に記憶力に優れているわけでもない凡人でもできる。

普通にキューブを揃えるのとは全く方法が異なる。キューブの状態を平仮名の列に変換して覚え、揃えるときにはその平仮名に対応する手順を回してく。詳細は次の動画やPDFを参照。

www.youtube.com

BLD教本2020-1-30

以前からちょこちょこ練習をしていた。1-2分くらい、成功率9割くらいで揃えられれば、一発芸として使えるし、息抜きにも良さそうだと思っていた。まあ、10分くらい掛かるし、成功率も数割だったが……。

クロック

買ってはあった。こんなの。

動かしている様子。

中にギアがあって、複数の小さな時計が連動して動く。ピンを上下すると動く組み合わせが変わる。これを使って裏表の時計を全て12時にする。

(ルービック)キューブと何の関係が……? という気がしてくる。

TORIBOではWCAの競技種目で使われるパズルを一覧にしたページがある。そこでも浮いている。

TORIBOストア / TORIBOのおすすめ

正4面体や正12面体は、正6面体からの発展としてで分かるが、時計は謎。これで、「形は全然違うけれど、本質は同じなんですよ」というなら面白い話だけれど、そこも違う。

ルービックキューブとは異なり、ルービッククロックは解く上で操作が交換可能、つまり操作の順序は関係ない点が挙げられる。これは「操作」を「ボタンを設定してダイヤルを回す」動作単位と理解した場合であって、もちろんボタンの動かし方とダイヤルの回し方は交換可能ではない。その結果、完全な解法は他のパズルに見られる群論よりも、より易しい線形代数のテクニックを用いれば得られることとなる。

ルービッククロック - Wikipedia

キューブは R U R' U' という操作で元には戻らないが、クロックは UR1+ DR1+ UR1- DR1- で元に戻る。

パズルの性質が変われば解法の性質も変わる。キューブは何十個も手順を覚えてそれらを適宜使い分けていくが、クロックは一直線。スクランブルによって時計を回す量こそ変わるものの、ピンの動かし方は一緒。回す量の計算と回す操作をいかに速くできるかという勝負になる。面白いと思う人もつまらないと思う人もいそう。

WCAの種目にあるのは良いとして、なぜBLD(目隠し)の大会の種目に選ばれたのか。最近7 simulという解法が出てきて、これはインスペクションタイムの間に状態を数字列に変換して、回している間には裏面は一切見ない。3x3x3キューブなどでもインスペクションタイムはあるけれど、数字や文字列に変換して覚えている人は(たぶん)いない。新しい解法が目隠しの種目に近いということなのだろう……と思っていたけれど、過去には同じ主催者で7x7x7キューブがあったりするな。主催者の気まぐれかもしれない。

本大会は BLD大会推進有志の会 による 3x3x3 目隠し、4x4x4 目隠し、7x7x7 キューブの大会です。

https://speedcubing.or.jp/competition/OtaBlindSummer2023/

真相。こういうことだったらしい。

告知&申込み

FMCの大会 が終わり、「最少手数も面白いけれど、やっぱり普通に速く揃えられるようになりたいよね。練習するか」と思っていたタイミングで開催が告知された。

せっかく行って「1回も成功しませんでした……」では心が折れそうで、どうするか迷ったけれど、3x3x3目隠しに申込み。

ついでにクロックも。WCAのランキングで、世界レベルとか日本1桁順位とかは端から諦めているけれど、日本2桁順位は目指したいなと思っている。日本2桁順位と聞くとすごそうだが、種目によってはそんなに難しくない。クロックもその1つで、申し込んだ時点では単発100位が15秒くらい、平均100位20秒くらい。クロックをやってみれば分かるが、わりとすぐに達成できそうなタイム。加えて、最近新しい解法が出てきたんでしょ? それを覚えればいけるのでは? と思った(フラグ)。

クロックの練習

その新しい解法がこれ。上位陣は皆使っているらしい。

note.com

……いや、これを15秒で計算するのは無理でしょ。諦め。

簡単版。これならできそう。

note.com

他。

この記事にも書かれているように、最近の速い解法の本質は、裏返さないことではなく、クロックの最少手数である14手を同時に回して7ステップにすることなのかもしれない。あとは、その7ステップを効率的にするためにインスペクションタイムに何ができるか? でバリエーションが生まれると。

インスペクションタイムに全てを詰め込むことによって、回すときに固定の角度を回すか、ある針を別の針に合わせるだけかにすると、Tommy版になる。インスペクションタイムを楽にする代わりに、ちょっと妥協して、左手の操作で動く針に対して右手で針を合わせる操作があっても良いだろでeasy(bpaul)版。下のダイヤルは回したくない、そのためにはフリップが必須で、それならついでに実行時に裏面の情報が使えるよね? で7sfndmw4lmという感じだろうか。

bpaul版をベースに、フリップはy2よりx2のほうが楽なのでそうして、数字の順番をちょっと変えればフリップ回数も減らせるだろうと変えた解法を覚える事にした。

実際にやってみて、終わった後に裏返しても全然揃っていませんが……。ということで分析の練習をするツールを作った。

7 Simul Trainer

ご活用ください。自分では最初の少しの間しか使っていないけど。結局、回すほうも合わせて練習しないとしょうがない。

これで分かったことは、分析のときに時計回りと反時計回りを間違えることが多いらしい。どうしても差分の絶対値で見てしまう。

15秒以内での分析はできるようになった。が、ついぞ同時回しはできるようにならなかった。右手と左手を同時に動かすのは無理だよ……。覚えた数字を使わずに、ある針を別の針に合わせるステップはまだしも、分析した数値分回すところは間違えるとどうしようもなくなるし。

練習の成果はこんな感じ。

10秒は切りたかったな。ま、国内2桁順位は余裕だろ(フラグ)。

クロックの調整

針が白い時計が主に回るときは軽いのに、黒だとなんか重い。分解してみると、中央の時計が白と黒で磁石の押し込み具合が違っていた。

一番細い精密ドライバーで磁石を押し込んだら良い感じになった。同じ問題で困っている人は自己責任で試してみてほしい。小さなナットが固定されているようで固定されておらず、持ち上げたときにポロっと落ちたりするので、無くさないように注意。

QiYiか他のメーカーが新しいクロックを出すときには、ツールレスで分解できるようにしてほしい。ついでに磁力調整機能もお願いしたいが……めっちゃ高くなりそうだ。

クロックのルール変更

F3) The competitor may change the state of the pins during the inspection. These changes are not counted as moves.

https://www.worldcubeassociation.org/regulations/#F3

2024年1月1日から、インスペクションタイム中にピンを操作することができるようになるという話が流れてきた。大田BLD2024新春は2024年なので対象。

できるというか、動かしてもDNFにならないというか。これはありがたい。大会で解いている動画を見ると、タイマーを開始する前にクロックを立ててそっと置いている様子がある。寝かせて置くと、ピンが動いてDNFになってしまうので。立てておくときに緊張して倒してしまいそうで怖かった。

ロゴ無しセンターキャップ

ルール上、目隠しで使うキューブにはロゴがあってはいけない。手触りで面が分かってしまうからだろう。

ロゴ無しのセンターキャップがTORIBOに売っていたなあと思ったが、完売。

store.tribox.com

そもそも、手元のGAN13とGAN14のセンターキャップを確認したら、互換性は無かった。センターキャップの発売後にGAN14が出て、商品名が更新されていないだけだと思っていたけれど、そうではなかった。

GANの公式ショップで買った。

shop.gancube.com

センターキャップ自体は0.99ドルと安いのだけど、送料が9.9ドル……。

キューブを買うと、ドライバーとか巾着袋とか手順表とか謎のカードとか色々とおまけが入っているのだから、ロゴ無しセンターキャップも入れてくれないかな。

あるいは、WCAがロゴを認めてくれれば良いのだけど。1面にロゴがあるだけで有利になることあるか? と思ったが、あらためて考えてみると使い道はあるな。M2法ではM2を多用するところ、私はこのM2がM'になるミスが多かった。これが手触りで確認できてしまう。ここをミスらない人でも、ロゴのある位置で今が偶数番目の文字なのか奇数番目なのかが確認できる。ロゴ禁止のルールが変わることは無さそう。

そもそも他社のキューブだとロゴ無しセンターキャップを売っていないだろうし、何かで削って消すのが一般的らしい。

アイマスク

目隠しをするためにアイマスクが必要。持ってない。日が昇ってから寝る生活をしていたら、明るくても寝られるようになってしまった。

何でも良いのだろうけど、あまり安物だと大事なところで紐が切れたりしそうだし、そこそこのものが欲しい。でも、アイマスクのことは何も分からん。そもそも、本来は寝るときに使うもので、目隠しのために使うものではないので、高いものが目隠し用途として良いとも限らないだろう。

インストールだけはしたPokémon Sleepのアイマスクを買った。

アイマスク Pokémon Sleep カビゴン : ポケモンセンターオンライン

ちょっと小さい気がしないでもないが、それ以外に特に不満は無い。キャラクターものだし、同品質の他のものと比べれば割高かもしれないが。

コンタクトレンズ

メガネを掛けたままではアイマスクを付けられないことに気が付いた。

手はキューブを持ったままで首を振ってアイマスクを付ける「nod don」という技があるらしいが、そこまでするつもりはない。ただ、メガネを外してアイマスクを付けてと時間を掛けていると、記憶が飛びそう。「目隠しをするのだからメガネは要らないだろ」と言われそうだが、分析フェーズでは見ないといけない。私の視力だと、ギリギリ見えなくはないけれど、ちょっと厳しい。

人生で1回くらいは試してみたかったので、生まれて初めてコンタクトレンズを買った。

目にレンズを入れることはギリできるかもしれないが、正確に位置を合わせるなんてできるものなのか? と思っていた。ある程度なら瞬きなどで勝手に黒目の中心に動く。へー。むしろ、外すときにずらそうとして、瞬きをしてしまうと元に戻る。なぜずらすのかというと、黒目と白目の間には段差があり、ずらすと外しやすくなるから。段差なんてあったんだ。へー。

ということで、コンタクトレンズを手に入れたが、慣れないものだから、付けていると気になってしょうがない。コンタクトレンズは止めよう。メガネを外してアイマスクを付けたほうがマシ。大会では他にもそうしている人がいた。

メガネを掛けなくてもはっきりものが見えるというのは新鮮だった。まあ、このコンタクトレンズはそのうち何か役に立つ機会があるでしょう。

会場

会場は東京大田区の池上会館というところ。Google先生に行き方を訊いてみると、最寄り駅は西馬込か蒲田で、どちらからも徒歩20分くらい掛かるな……。でも、今あらためて検索したら、池上線を使うルートが出てきた。なぜ当日は出なかったのだろう。本数が少ないのか?

会場の建物の近くにえらく広い墓地があった。力道山もここに眠っているらしい。

会場。

部屋でdocomo回線が繋がらない。そんなことある? 駅からちょっと遠いと言ったって普通に街中だぞ。フリーWi-Fiがあったので、それで凌いだ。

5x5x5目隠し

最初の競技。ジャッジが割り当てられていた。

ジャッジは正当な理由無く拒否できない。へー。

1e2) 全ての競技者はジャッジをできるように用意をしなければならない。ジャッジをするように要請されたときには、WCA 代理人の裁量により、正当な理由(例:パズルに慣れていないため)においてのみジャッジを免除される。罰則:大会における失格(参照:規則 2k)。

https://www.worldcubeassociation.org/regulations/translations/japanese/#1e2

目隠しだと、ジャッジが板をすっと競技者の顔とキューブの間に差し挟むのは知っている。知っているが……5x5x5で目隠しって揃えるのに10分とか掛かるんじゃ……。腕が攣りそう。と不安だった。こんな感じの首に掛ける板が用意されていた。競技者がこれを使えば、ジャッジが板を持つ必要は無いと。

しかし、組み立て方が分からない。

競技者「これどうやって使うの?」

私「さあ……」

で、周囲の人に訊いたりしていた。

フレームと板が上手いこと組み合わさるはずだ……と試しても正解が分からないのはそれはそうで、これ、本来はハーモニカを固定するためのものらしい。それにプラ段ボールを貼り付けて目隠しに流用している。

しかし、5x5x5のキューブを目隠しで揃えるとかよくできるもんだな。記憶しないといけない量は平仮名で約100文字くらい。3x3x3のルービックキューブを4-5個目隠しで揃えることに相当する。記憶もそうだけど、約100文字分の手順を1回もミス無く回しきらないといけない。たとえ紙に平仮名をメモしておいたとしてもできる気がしない。

1試技目と2試技目が失敗。3試技目で成功していた。すごい。

ジャッジしていた人は、大会の最後で表彰されていた。ベトナムのNR(national record)だったらしい。NRというか、所属国ベトナムで初めての5x5x5目隠し成功らしい。ジャッジで何かやらかしてこの記録をふいにすることがなくて良かった。いや、NRでなくてもやらかしてはだめだが。

昼食

街中だし、近くにファストフード店くらいあるでしょ。無いな。こういう集会所にはちょっとした飲食店が……。小洒落たカフェしかない。ケーキとか食べても腹が膨れないなぁと思いながらメニューを見たら、なぜか担々麺があった。

美味しいのだが、いかんせん量が少ない。たしか大盛オプション的なものがあったので、付ければ良かった。

初心者レクチャー

競技者向けでもジャッジ向けでもある。ありがたい。

先述のようにクロックのピンは動かしても良くなったので、動かしたからといってDNFにするなよとか。板を顔とキューブの間に挟むのは1手目を動かした後だとか。これは、アイマスクを付けた後でも、1手目を動かす前ならアイマスクを外してキューブを確認することが許されているから。

あとは、競技者とジャッジで、ソルブ終了の合図を事前に決めておきましょうとか。ルール上、ソルブ中にキューブから手を離してはいけないことはないので、キューブを机に置いたときにストップウォッチを止めてしまうと、まずいことになる可能性がある。スタックタイマーを止めるときのように机に両手を置くのを合図にするのが一般的ですと。あれ、ルールには口頭で終了を伝えると書かれていたような……。競技者とジャッジが合意していれば良いのか……? と思った。

B5b) ストップウォッチを使用する場合、競技者はパズルを競技面に戻しジャッジに口頭で試技終了を知らせることによってソルブを終了する。その瞬間、ジャッジはストップウォッチを止める。

https://www.worldcubeassociation.org/regulations/translations/japanese/#B5b

これ、邦訳版の規則が古いらしい。最新の英語版だとこう。

B5b) When using a stopwatch as the only timer, the competitor stops the solve by releasing the puzzle and notifying the judge that they have stopped the solve. The judge stops the stopwatch as soon as the competitor does this.

B5b1) The competitor's default notification signal consists of releasing the puzzle(s) from their hands and placing their hands on the surface, with palms down. The competitor and the judge may agree on another appropriate notification before the start of the attempt.

https://www.worldcubeassociation.org/regulations/#B5b

3x3x3複数目隠し

これもジャッジ。

ジャッジをしていた人は7個揃えていた。1個を揃えられるかどうかの私には、これができることが信じられない。「場所法」と言って、例えば家から最寄りの駅までの道順を想像し、その途中に物を置いていく様子をイメージすると、100文字でも覚えられるらしい。単純に文字列を覚えるよりも情報量としては多いはずだが、人間の記憶は不思議。ヒトという生物は、文字を使うようになるはるか前から、食べられる果物がどこに生えているかとかを覚えていて……ということなのだろうか。

3x3x3目隠し

メインイベント。最近成功率が下がっていて、あまり揃う気がしなくて憂鬱だった。

1試技目。アイマスクを外したら揃っていなかった。はい……。録画をしていたので確認してみたところ、BF↔UFの U2' M' U2' M' の U2' が U' になっていた。どこをどう間違えたか確認するのは普段からやっておくべきだった。「あー、ダメだったか。じゃあ次」では成長が無い。

2試技目。めっちゃ時間を掛けて丁寧にやった。成功。5:47.19。タイムは遅いけれど、3x3x3目隠しの記録を残せたので満足。

3試技目。

ジャッジ「3試技目どうする?」

挑戦せずに棄権という選択肢もあると。なるほど。今回の大会では、3試技での累積時間が最大10分間という制限があった。残り1分間くらい。2試技目は「丁寧にやろう」で時間を気にしていなかったけど、この制限時間もけっこう危うかったんだな。諦めない気持ちは大切だが……どう考えても無理なので棄権。

最後のグループは、世界が違うというか、皆すごい速さで揃えている。なるほど、一番遅い人がグループの律速になるから、速いであろう人を1個のグループにまとめると全体の進行が速くなるのか。

クロック

10秒台前半の記録が残せれば満足だし、それはいつも通りにできれば達成できるはず。ということで気楽に……。

結果。

……。全然だめ。

1試技目で覆いが外されると、クロックの向きが12時が上ではなく、「え、あれ……」と混乱した。向きが違っても最後のステップを変えるだけで良いはずなのだけれど、「12時のマークが3時の位置にあったりすると混乱するだろうなぁ」とその後の試技も向きを直してからやっていた。若干時間が掛かるようになるし、なんかテンパってもうだめ。だいたい揃うようにはなったので、1~4試技目は最後に裏面を確認し、そこである程度のタイムが確定したら、最後は裏面を見ないで記録を狙おうかな~とか始まる前は思っていたが……。

いや、「3x3x3でも向きはランダムだったでしょ?」と言われればその通りなのだけど、3x3x3はcolor neutral(向きを気にしない)で揃えていて、全く意識していなかった。クロックも、最初に向きを直す練習をするのではなく、3x3x3のクロス色を選ぶように向きを選ぶ練習をするべきなのだろう。「覚える数字のうちこの数字の絶対値が小さくなる向きを選ぶのが良い」とかの記述は見ていたけれど、「コンマ数秒を争うような腕前じゃないしな」で正面向きでしか練習していなかった。次の機会があればそのときには……。