異世界を想う【並行パズル邂逅記】

こんばんは。きなこ屋です。

2023年夏、Solyu様が異世界を旅されてきたことは記憶に新しく。

solyu.hatenablog.com

並行パズルという手土産に与ったものですから、折角の機会なので、私もこれらのパズルを作ってみました。

残念ながらおよそ人間用の問題は作れませんでしたので、Puzzle Squareへの投稿は断念...。

四隅に切れ

opt-pan.github.io

[四隅に切れ] ★3

先鋒を飾る一作。四角に切れより選択肢が多く、全部切れたと思ったら隅じゃなかった、ということもしばしば。盤面が広く数字が大きいと制限がかなり強くなるので、小さい問題の方が作りやすそうです。

Castle Walker

opt-pan.github.io

[Castle Walker] ★4

リフレクトリンクもそうですが、十字交差のヒントは目立ちやすい入り口であり、取り敢えず手を動かしたくなるものですね。第一感はグラーデヴェク。数字と色とでヒントの種類が多いので、手筋の幅が広いのではないでしょうか。

加算コーナー

opt-pan.github.io

[加算コーナー] ★5++

数字系好きには垂涎の一品。盤面が狭いと1や2が簡単に隣接してしまいます。丸数字を六角形の辺上に配置するとか、盤面の形状を変えるバリエーションもありそうです。

余談ですが我々の世界では「加算クロス」→「カックロ」になったそうですね。こちらは...加算コーナー→カッコー?

〜やわけ

opt-pan.github.io

[〜やわけ] ★3

へやわけもそうですが、部屋を分けるというネーミングにより忠実です。解き味で近いのはあきちわけ・黒帯。2×2禁やひとつながりよりも強い「蛇」の性質については研究が必要そうです。

フェンスミノ

opt-pan.github.io

(双対版:Penpa+)

[フェンスミノ] ★5

操作は双対版の方が直感的に思えます。この見た目で内外系パズルですが、慣れるには相当な時間を要しました。上手いこと見やすい編集/解答ツールが出来ると伸びそうです。

ハニーテリトリー

opt-pan.github.io

注:唯一解は保証されていません。

[ハニーテリトリー] ★?

私は、ハニーアイランドがすごく苦手なのです...。一手一手が確定しない感じが影響しているのかもしれません。これは素直なバリアントといった感じで、従って、その...。

対称星

opt-pan.github.io

[対称星] ★4

ネーミングがまず良い。実はこちらの世界線の天体ショーも作ったことはありませんでした。1×1の領域は作れないので絵を描く芸当は少し難しくなりましたが、パズルとしては自由度が上がっている気がします。

美術回廊

opt-pan.github.io

[美術回廊] ★5++

記号と考えることが多く、初見では混乱しました。実は見た目よりずっと制約が強いパズルの一つですね。筆者はシャカシャカが大好きなので、この解答方式がもっと増えてくれることを期待します。

RBPループ

opt-pan.github.io

[RBPループ] ★3

Pがやばいですね。こちらの世界でも色マスを塗れるのはかなり難易度に貢献していましたが、交差というよりT字路はなかなかお目にかかれません。本質的にはヤジリンなので、誰かが突き詰めそうなタイプです。

ナンバーワープ

opt-pan.github.io

[ナンバーワープ] ★2

私はですね、ナンバーリンクというパズルが(未知のノイズにかき消される)

ループという、紙面でもツールでもなかなか再現しづらい題材を、かなり強い制約によってまとめられています。

 

というわけでパズル達を見て、作って、堪能いたしました。個人的に好きなのは〜やわけ、ルールに慣れればフェンスミノも掘り下げられそうです。この世界の皆様はいかがでしょうか。互いの世界のパズルが繁栄しますように。

シャカシャカで加算器を作る

こんばんは。きなこ屋です。

シャカシャカで足し算を実装した覚書を残します。

完成図

自分は電子回路について全くの初心者ですので、加算器についての正確な情報はWikipediaをご参照いただくとして、まずは完成形を紹介します。簡単に言えば、シャカシャカの問題を解くだけで2進数の計算ができるという機構です。なお実用性は皆無です。

 

puzsq.logicpuzzle.app

 

[図1] 4桁の加算器。赤と青がそれぞれ左から0011と1001を表す。
問題を最後まで解くと、紫部分が1100(01100)になる。

この図は「3+9=12」を表しています。2進法で言うところの「0011+1001=1100」です。上部にある8個の2×2正方形(赤・青)が入力、下部にある5個の2×2正方形(紫)が出力になっています。三角形が入る場合(◇)は1、入らない場合(□)は0を表すというわけです。

より正確には、入力マスのすぐ上にある0や1が直接の入力を司っています。pzprRTでリアルタイムソルバーを有効にして、これらの数字を変更してみると、それに従って出力も変化するのが観察できるでしょう。

(URL入力用のリンク:https://puzz.link/p?shakashaka/46/30/.......................................................0..........0..........1..........1............h.........h.........h.........h...........h.........h.........h.........h......1....1.....0....1.....0....1.....1....1.......h...h....h...h....h...h....h...h......h..i....h..i....h..i....h..i......1....h....1....h....1....h....1....h......h...1.....h...1.....h...1.....h...1.......i..h....i..h....i..h....i..h......h1.i....h1.i....h1.i....h1.i........h.h......h.h......h.h......h.h.......j1......j1......j1......j1........j.......j.......j.......j..........hc......hc......hc......hc..........i........i........i........i......g..bh...g..bh...g..bh...g..bh...i.h.i.i.h.i.i.h.i.i.h.i...ic.1...ic.1...ic.1...ic.1.....1..h..h..1..h..h..1..h..h..1..h..h....h.h.jb.h.jb.h.jb.h.i....h..1.j.h..1.j.h..1.j.h..1.i....1...hc......hc......hc......hb....h.j.......j.......j.......j.....i.j.......j.......j.......j.....i.h.........h.........h.........h.......1....1..........1..........1..........1.......h...h.........h.........h.........h......h...h.........h.........h.........h.................................................../)

[図2] 13+2=15 (1101+0010=1111)

[図3] 12+6=18 (1100+0110=10010)

繰り返し構造をさらに増やせば、解答能力の許す限り、何桁でも足し算ができることになります。また、意図した構造ではありませんが、上部の入力を片方だけにして、下部に0や1を入れて逆の入力とすることで、引き算も一応できます(答が0~15でない場合はパズルとして解なしになります)。

動機

きっかけはこの問題です。[リンク]

[図4] その辺に落ちていた問題。おてごろLv.9

小さいながら先読みだか仮置きだかが必要な問題です。この形自体はかなり前からヒント数字の効率を上げるアイデアとして持っていました。

さてこの問題、数字がない状態でちょうど4個の解を持ちます。

[図5] 数字がない状態でのすべての解。

図を見れば、左上2マス目に1を入れることで唯一解になることが分かります。そして、他に数字1つでこの問題を唯一解にする方法は、同じマスに0を入れるか、右下に0を入れるしかないと分かります。

では、盤面を少し広げて、外部からヒントを与える場合はどうでしょうか。

[図6] 盤面外からヒントを与える。両方とも0の場合、図5の左端の解になる。

図5を見てみると、上と左下の2箇所(図6の0の位置)を決めてやれば、どの場合でも唯一解になることが見て取れます。言い換えれば、上と左下の2箇所のヒントが4つの解にそれぞれ対応しているわけです。これは真理値表ではありませんか!

[図7] 

例えば、図7のように正方形と1を配置してみると、2箇所のヒントが両方とも0である場合のみ、下の正方形に三角形が入ることになります。あたかもスイッチを操作するかのようです。

2×2の正方形は、三角形が入るか入らないかの2択になりますから、これをON/OFFに対応させることができます。ということで、ヒント側も2×2の正方形に置き換えてみましょう。

[図8] 上と左の2×2正方形を入力とする。

[図9] 図8で上と左を指定した場合の解。

図9では、上と左が両方ともONの場合のみ、下もONになることが分かります。これはAND回路に他なりません。

かくして、シャカシャカ電子回路プロジェクト(?)は誕生したのでした。

設計

[図9] 図5の入出力の様子。

図5のような形(以下ゲートと呼称)を回路に組み込むには条件があります。ゲートがn個の入力を受ける場合、ゲートは外部からの情報がない状態でちょうど2ⁿ個の解を持つ必要があります(一部例外を除く)。

解が2ⁿより少ない場合、ある入力に対しては解が存在しないことになり、回路が壊れます(そのような入力を受けないと分かっている場合を除く)。解が2ⁿより多い場合、ある入力に対して複数の解が存在することになり、唯一解になりません。

従って、解が2個や4個であるような形を探して、それが上手く目的の入出力を行ってくれるように調整する必要があります。現状1~2入力のゲートは考えうる全種類が再現できました。まだ試行錯誤は済んでいませんが、発見できたゲートを下に挙げます。

ケーブル

単純に2×2正方形どうしを1で繋いだ場合、ON/OFFが反転します。これが素朴なNOTゲートになります。NOTを2回繋げば自明なゲートができます。

※以下の図では、赤が入力A、青が入力B、紫が出力としています。

[図10] 裏の裏は表

ON/OFFをそのまま伝達する方法は他にもあります。マス数に応じて使い分けます。

[図11] 左から1番目、2番目:混線に気を付ければ3マス先に送るのは容易。
3番目:同時に橙部分に¬Aを作れて分岐しやすい。
4番目:4マス先に送る場合。形がシンプル。

ANDとOR(1)

先程の図4は、実はANDと同時にORゲートも兼ねることができます。2つを同時に取り出したいときもコンパクトに纏まりますね。

反転させればNANDNORも作ることができます。

[図12] 紫はORゲート、橙はANDゲート。

ANDとOR(2)

この形は、一度に最大3つの異なる出力を生みます。ただ位置を考えると効率よく使える状況は限られそうです。

S₂=B→Aなので、反転を組み合わせれば、2入力のほとんどのゲートを作ることができます。残るXORはこの次で。

[図13] O₁=A∧B
S₁=A∧¬B
S₂=A∨¬B=B→A

ケーブルの交差

ゲートに繋ぐために信号を交差させたい?そんな時はこれ!

[図14] 赤を橙に、青を紫に移す。

整流器とXOR

ON/OFFで信号を表す性質上、値域が0,1,2である信号を処理することは困難です。ですが、図の右下の整流器を付けることにより、信号をON/OFFに還元することができます。最後のXORゲートもここで再現できました。ぶっちゃけこれが万能です。

[図15] O₁=A xor B (1を取り出す)
S₁=A nand B (0を取り出す)
S₂=A nor B (2を取り出す)

加算器の実現

というわけで、これらを組み合わせることで足し算機構である加算器を再現することができます。

[図16] 半加算器。ANDとXORを出力する。

[図17] 全加算器。AとBに加え、下位の繰り上がりCを入力として持つ。
半加算器を2つ繋げた形。

まとめ

論理回路に知識のある人なら、足し算より面白いことが出来そうです。

これよりサイズの小さい加算器を再現していただける方、面白いアイデアを形にしていただける方を心待ちにしています。

シャカシャカ作問記 '23 9/1

こんばんは。きなこ屋です。

ふとシャカシャカを作る過程を残しておきたいと思い立ち、ある夜の実録としてまとめました。

導入(0~10%)

まずpuzz.linkかぱずぷれを開いてサイズを決めましょう。いつも通り10×10にします。もう10×10はだいたい作り尽くした気もします(気が早い)。

最近は背景色で遊ぶのがマイブームなので、ぱずぷれを選択。

初期状態。Tシャツと半ズボンで寝っ転がりたい広さ。

導入を決めましょう。盤面全体の難易度統一のためにも、まず難易度を設定する必要があります。1の手筋で飛び回るタイプの、作りなれたアゼンを目指します。

ご存知の通り、きなこ屋の作風はほぼ一本道・閑散・手筋重視です。確定する数字はおろか、0なども濫用は避けたいところ。探せば見つかるくらいの小サイズ手筋を入り口にしましょう。

黒マス2個で出来る導入手筋たち。4つ全部分かる貴方は達人です。

分かりやすく「電灯形」(勝手な呼び方)にしましょう。導入以外出番がありませんからね...

「電灯形」。1の真上が白マスにならないことによる。

使いやすいヒントが生まれたので、これを次の一手に繋げたいところです。

序盤(10~40%)

導入で生まれた2つの三角形をもとに、次の1手を考えます。よく使うのは1の手筋ですが、それでも日によって思いつく選択肢は異なります。今日はこんなラインナップ。

次の1手。

右上と左上:1の手筋はオーソドックスです。知っている人なら一目でしょう。かなり離れた位置に三角形を設置できるのも強み。

左下:幅2√2の長方形を作れるのはなかなか魅力的です。一方で閑散とした盤面では4の処理は簡単ではありません。

右下:このレベルのヒント効率は稀です。あとは周囲に数字をいくつか載せるだけで完成しそう。

どのパターンも魅力的です。この1手がこの問題を決定づけそうですが...

 

 

うむ、決められないのでとりあえずL字禁で妥協しましょう。

左下2を配置。L字禁。

後回しにしたツケはすぐに巡ってきます。この次も悩ましいところ。左下に良い感じの空間ができたので、中央右下寄りに何か置きたいですね。

Re:次の1手。

しかし、ここで暫し詰まります。どのパターンも下辺の処理が難しくなってしまいました。

左:容易でないながらも広い面積を決められて大変効率が良いです。が、左下の空間にはあと1つ黒マスを入れる必要があり、ヒントどうしが近すぎるきらいがあります(きなこ屋的には桂馬飛びの黒マスはかなり近いです)。

中央:配置した2の左が白マスになり得ないことから右下に三角形が生まれます。次の展開が狙えそうです。ただ、下辺にもう1個白マスを配置した場合、この手筋を潰してしまう可能性が高く、怖いところです。

右:数字なしでかなりの領域を埋めることができます。問題は、埋めた領域が次につながらない点にあります。右下の空間は手筋が入れられそうですが、それが左下と干渉しづらいのが悩みどころです。

悩んだ時は、琴線に触れるものが出るまで色々試すに限ります。

「呼鳥門」(仮称)。左下が確定せず断念

実に悩んだ結果、下辺を単独で考えると上手くいかない、という結論に至りました。そこで、最初の電灯形から生えたもう1つの三角形に頼ります。

すると、これを別の導入手筋で拾う案が浮かびました。

右下に導入手筋を投入。2の右と下はいずれも白マスにならない。

少しばかり密なれど、自然な形にありつきました。下辺も黒マス1個で済ませられそうです。一旦これで進みましょう。

中盤(40~70%)

中央に幅2√2の大きめの四角形が出来そうです。これをどうにかして右上で処理したいところです。右上に1を置く案はありますが、最終的に電灯形を壊さないことも念頭に置かなければなりません。

右上の決め方に逡巡。

さてこの形を見て、ふと思いつくことがあります。本作は難易度重視で進めたため、数字統一や対称形の趣向は視野にありませんでした。しかし、我に帰って盤面を凝視すると、斜めの線対称形にすることができそうです。

左上と右上に黒マスを追加。線対称形を狙う。

しかも都合の良いことに、左上の黒マスが矛盾しないばかりか、2が確定してくれます。これはかなりの僥倖です。形が少し難しいものの、アゼンならちょうど良いでしょう。

先ほどの幅2√2の四角形が確定し、中央に大きめの空間ができました。ヒントの追加なしでできるのもピッタリで、今のところ解き味に文句なしです。

左上を確定。2の左は白マス。

終盤(70~100%)

既に盤面の大部分は埋まりました。埋まり具合もなかなか都合が良く、右辺と下辺をそれぞれ黒マス1個で処理できそうです。一方、対称形なのでヒント数字は非対称にしたいところです。

最後の1~2手を上手くまとめられるか否かでその作の完成度が決まると言っても過言ではありません。

あとは試行錯誤なので、その過程は割愛するとして...

埋まりきった。希望通り、1と2を1つずつ追加するだけで済んだ。

というわけで完成盤面はこちら。

完成盤面。まだ寝転がる余地はありそうだ。

ひとまず、ペンシルパズルソルバー様で唯一解か否かと難易度をチェックします。

...アゼンLv.71、無事唯一解でした。ヒントがやや多め(基準は7個(当社比))のため、妥当でしょう。

そして、再度解いてみて、感触を確かめます。なるべく作った時とは別の場所(右下など)から進めることを心がけています。下辺の1が心配でしたが、致命的に作為を外れることはなさそうです。

ということでパズスクにアップロード。作り始めからここまで30分程度(スクショに要した時間を除く)を要しました。下辺の処理に手間取ったとはいえ、十分すぎるほど僥倖に見舞われたといえましょう。

 

...こんな作り方をする人はいない気がします。

皆様はどうやってシャカシャカを作っているのでしょうか。

らくらく・おてごろをまともに作ったためしのない身としては気になるところであります。

 

↓↓↓解いてみたい方はこちら↓↓↓

puzsq.logicpuzzle.app