プログラムでナンプレを解こうとしたら長旅が始まった話2

前回

hemus.hatenablog.com

次回

hemus.hatenablog.com

 

隠しレーザー・隠しコレーザー

ナンプレをしたことがあれば普通に使う技術。実装した。

puzzle.dev

puzzle.dev

 

N国同盟

2国,3国の単純なものは意識していたが、候補集合を考える発想はなかった。2国に止まらずN国に拡張できるのも面白い。実装した。

puzzle.dev

puzzle.dev

 

井形レーザー

井の字にレーザーが走る。シャープでも良さそう。このテクニックは知らなかった。実装した。

puzzle.dev

 

XYチェイン

このテクニックは説明を見ても理解しづらい。

でも実装すると機能しており有効な手段っぽい。ということで実装した。

puzzle.dev

 

シンプルチェイン

XYチェインに続いて理解しづらいが、実装した。

puzzle.dev

 

リベンジ

ここまで約20時間を費やして解法を実装した。

どの程度解けたか確認!

f:id:Hemus:20210912203922p:plain

リベンジ

ほとんど変わってなくない?

f:id:Hemus:20210908230210p:plain

前回

 

プログラムでナンプレを解こうとしたら長旅が始まった話1

たまたま見かけたのがきっかけでした

SNSで「誰か自作したナンプレ解いてくれないかな」という投稿を見かけた。

そのナンプレは以下のようなものだった。

※本人に迷惑がかかるといけないのでリンクは控えます

f:id:Hemus:20210908223343p:plain

見かけた問題

この問題を見た時ふと思い出したのだ。

「数年前に作ったプログラムで解けるんじゃね?俺天才じゃね?」

 

プログラムでナンプレを解こうとしたらプログラムが見つからなくて長旅が始まった話

ナンプレを解くプログラムを実行しようとMac内を探すこと30分経過、見つからない。

githubを探してもない。35分経過。

外付けHDDを探してもない。45分経過。

上みっつをもう一周探してみるも見つからない。1時間経過。

 

気持ちが折れかけた時、もう一ヶ所だけ可能性のある場所を思い出した。

TimeMachineを探したらあるかもしれない!年に一回もバックアップしてないけど!

 

2021/04/某日 ない

2019/12/某日 ない

2018/04/某日 ない

2017/11/某日 あった!あったよ!!!!

※これ以前のバックアップなし

 

この時点で1時間30分経過。

まだ闘いは始まってすらいない。

 

動かすのに苦戦したダイジェスト

  • プログラム(Java)はあったけど実行環境ないからEclipseから入れるよ!
  • Eclipse Standardだと面倒くさそうだったからAll in Oneで入れ直すよ!
  • ナンプレの問題入力データ作るのにスプレッドシート使っちゃうよ!関数よくわかんなくて時間かかったよ!
  • スプレッドシートからテキストファイルにコピペするエディタとしてなんでもいいからXcode使っちゃうよ!
  • Xcode使ったせいでペーストすると文末の連続したタブが勝手に消えたりするよ!
  • なんとか動いたけど久しぶりなせいで入力データミスっててエラー出まくりだよ!
  • ここまでに4時間経過したよ!

 

ようやく実行に成功

ようやく実行に成功したので実行結果載っけちゃうよー!

解けてなくない?

f:id:Hemus:20210908230210p:plain

実行結果

私は誓った。

絶対にプログラムで解いてやる、と。

※話しの続きが永遠にない可能性があります。

 

四年も前の処理を確認する

三日前のプログラムも覚えてないのに四年も前のプログラムなんて記憶に無。そんなに解法を実装した記憶もなかったので、ナンプレ解き方テクニック集とともにプログラムを見直した。

puzzle.dev

結果、テクニック6までとテクニック9が実装されているのがわかった。テクニック6までは一種のルールに則れば自動で解けるので、実質はテクニック9「二国同盟」のみ実装した状態だった。

それでも4年前に作った時は250問近く解いており(解いた問題を保存する機能がある)、なぜそんなに解けたのかというと、解けるまで仮置きしてマシンパワーでぶん回していたから。81マスだと仮置きで深さ3も再帰したら0.1秒もかからず解けるらしい。

一方で、今回の問題は576マス。上のような解けっぷりだと仮置きではとても厳しい。

 

さて、ナンプレ解き方テクニック集を参考に実装しますか。

 

hemus.hatenablog.com

40%キーボードを作ってみた Chomo48(仮)

 

Keyboard Layout Editorでレイアウト

特徴

  1. 愛用しているCorneCherryのキー配列から移行できること。
  2. 親指で使用するキーがfjの真下に1uが収まっていること。

f:id:Hemus:20210818113255p:plain

Chomo48

www.keyboard-layout-editor.com

 

 

Keyboard Firmware Builderで配線

自動配線だと横13pinになった。サイト上で修正して12pinに。

f:id:Hemus:20210818113522p:plain

Chomo48配線

f:id:Hemus:20210818113539p:plain

Chomo48のpin接続

kbfirmware.com

 

Keyboard Plate Generatorでプレート作成

kbplate.ai03.com

 

プレートを元にケース作成(3Dプリンタ想定)

3DプリンタKP3Sで出力するため、横18cmに収まるように分割。

分割する際、片手で持っても平気なようにトップとボトムで互い違いに設計してみた。

  • スイッチ穴は14.0mmではなく14.2mmで設計
  • 各プリント物の接地面は0.25mmのクリアランス

f:id:Hemus:20210818114342p:plain

Fusion360スケッチ

f:id:Hemus:20210818114357p:plain

Chomo48ボトムプレート

f:id:Hemus:20210818114422p:plain

Chomo48トッププレート

f:id:Hemus:20210818114445p:plain

Chomo48ケース全体像

 

QMK Firmware

Keyboard Firmware Builderでダウンロードしたzipからいい感じに作成。

f:id:Hemus:20210818141633p:plain

Chomo48のQMKダウンロード

 

SU120を使用して配線して完成

作成中の写真は撮っていないためいきなり完成品。

※追記 分解するきっかけがあったので写真を追加

f:id:Hemus:20210826212122j:plain

分解1

f:id:Hemus:20210826212143j:plain

分解2

基盤はsu120をポリウレタン銅線で繋げて作成。

余ってるキーキャップを嵌めて完成!

f:id:Hemus:20210818140559j:plain

Chomo48完成(全体)

f:id:Hemus:20210818140625j:plain

Chomo48完成(拡大左)

f:id:Hemus:20210818140646j:plain

Chomo48完成(拡大右)

 

感想

トッププレートは厚さ1.4mmで作成したところ、スイッチの嵌め込みによって歪みが出た。そのままねじ止めするとさらに歪んでしまったため、ネジとスペーサーの間に静音リングを噛ませて軽くねじ止め、歪みを軽減。トッププレートは厚さ3mm以上にするか、アクリルやpcbで作った方が良さそう。

空中配線と比較してsu120を使った方が面倒だったが、スイッチの交換が可能になったため利点は大きい。ポリウレタン銅線を使ってなかったら気持ちが折れてたかもしれない(縦に全て結線する苦行)。

キーボードを作成するのは楽しい。

 

この記事はChomo48(仮)で書きました。

自作キーボードキット meishi2

2020年12月始め、自作キーボードキット meishi2 を購入、作成した。

 

f:id:Hemus:20210718204025j:plain

キットと道具

f:id:Hemus:20210718204532j:plain

中学校以来の半田付け

f:id:Hemus:20210718204110j:plain

デフォルト軸セット

f:id:Hemus:20210718204210j:plain

meishi2完成図

はんだ付けよりもqmk firmwareの準備に苦戦。

軸はリニア軸が好きだと判明。

最初の一歩にはいい自作キットでした。

 

 

HHKBのキーボードルーフ兼パームレストを自作!

 

HHKB (Happy Hacking Keyboard) はお高い

HHKBはお値段も高いがHeightも高いため、パームレストがないと手首が痛くなってくる。そのため一緒に使用しているキーボードルーフをパームレスト代わりに使用していたが、若干高さが足りず、また強度に不安があった。*1

HHKBとキーボードルーフ

HHKB+キーボードルーフ

純正のパームレストが購入できる

HHKBのパームレストは純正のものが存在し、木製やアクリル製が購入できる。

専用に作られたパームレストのため抜群に使いやすいと思うのだが、お値段が少し高い。それに一時的にではあるがキーボードルーフをパームレストとして使っていたため、物が増えるのが煩わしいと感じてしまった。*2

 

欲しいのが売ってないなら作ればいいじゃない!

パームレストは所詮木製!キーボードルーフもキーを覆うことができればいいため高さのない木箱のようなものを自作したらいい!そんな勢いで作ってしまおう!

 

純正キーボードルーフの大きさ

手元に純正のキーボードルーフはあったためサイズを測ってみた。

キーボードルーフとして間違ってもNGなのがキーを押してしまうこと。そのため内側の空間のサイズを測定した。*3

f:id:Hemus:20201206212856j:plain

 

材料一覧

材料一覧

材料一覧

材料として重要なのは次の2つ。

  • アガチス工作材 5x100x600 (写真は切った後なので300mmちょっと)
  • ヒノキ 3x5x900
  • ずれ防止のゴム板など (今回はキャンドゥで玄関マットずれ防止のパッドを使用)

アガチス工作材を天板、ヒノキを足として使用する。

天板は奥行きが100mmで足が手前と奥に3mmずつで内側94mmが確保できる。板を切るのが一度で済むし手間が少ない。木材には詳しくないためアガチス工作材が適しているのかはわからないが、強度は十分だと思う。*4

 

他に使用した細かい道具としては

  • 木工用ボンド
  • 1000円くらいのしっかりしたハサミ(ヒノキの切断に使える)
  • ノコギリ
  • 水性ニスの道具一式(今回はオールナット色を使用)

 

水性ニスに必要な道具や使い方

 

 

 

作成手順

  1. アガチス工作材を290mmで切断し、5x100x290の天板とする。
  2. ヒノキを100mmで切断し、3x5x100を4本作成する。
  3. ヒノキを284mmで切断し、3x5x284を4本作成する。
  4. ヒノキ3x5x100を2本をボンドでくっつけ、3x10x100にする。2組作成。
  5. くっつ方のイメージ f:id:Hemus:20201206215936j:plain
  6. 同様にヒノキ3x5x284を2本くっつけ、3x10x284にする。2組作成。
  7. ヒノキの足を天板の外周にボンドでくっつける。
  8. ずれ防止パッドを裁断し、ヒノキの足にくっつける。

※紙やすりで整えたりニスを塗る工程は省略。ニスは最後に塗った。

 

完成したキーボードルーフ兼パームレスト

完成したキーボードルーフ兼パームレスト

完成したキーボードルーフ兼パームレスト

いい具合に仕上がったキーボードルーフ兼パームレスト

表面はニスを3度塗り。とても好みの色。

 

完成したキーボードルーフ兼パームレスト裏面

完成したキーボードルーフ兼パームレスト裏面

裏面と横面は1回だけニス塗り。

触るとガサガサで発色も悪いため、時間を見て上塗り予定。ボンドが邪魔をしてニスが染みにくいのが残念。もう少しやすりがけをしたらうまく行ったのだろうか。

 

HHKB+キーボードルーフ

HHKB+キーボードルーフ

キーボードルーフをHHKBに被せた様子。ジャストフィット。

 

HHKB+パームレスト

HHKB+パームレスト

パームレストとしてのサイズ感も申し分ない。高さは純正のキーボードルーフの13mmより高い16mm。純正のパームレストは15.5〜17.5mmのためちょうどいい。

 

最後に

かかった費用は1500円以下で、ボンドやニス塗りの待ち時間を省くと5時間程度で作れたと思う。実際には材料を購入し、ニスの塗り方を調べたり、ヤスリがけをしたりと結構手間がかかっているのだが、キーボードルーフ兼パームレストという買うことができないものを自作したのにとても満足している。

同じようなものが欲しい人は是非作ってみて欲しい。

*1:Yシャツのボタンが当たる音が不快という理由も。

*2:会社で使用しているため不在時は引き出しにしまうため少ない方が助かる。

*3:キーボードルーフを持っていない人は厚めの型紙で同じようなものを作成して試すといいかも。

*4:私はDIYが不慣れ。簡単で楽な方法をチョイス。