既に解が出てますから単なる蛇足ですが、パターンマッチングで解くと機械的に見通しよく扱えるものです。
問題は
11223344 問題の条件の番号
abBxNyEz 着用者
a*x*y*zD エプロンの持ち主
*b*N*E** ドレスの持ち主
$ ++
という表になります。ここでx,y,z,a,bは変数、*はそれぞれ別の(名前なしの)変数を表します。(変数が別だからと言って、同じ値になることが禁じられている訳ではありません。以下、実例を見ればその意味がお分かりになるかと思います。)
「列同士が矛盾しないように、虫食い(変数)のところをNEBDのどれかで埋めろ」という問題ですね。(解が1つあるとは限りません。)
なお、+印の2列を見れば、z≠E,Dは明らかです。従って、$の列を見れば、a≠E,Dも明らかなんですが、これらは一応試してみることにしましょう。どこから手を付けようか迷っちゃいますが、ドレスがらみは*が多くて早く絞り込めないでしょう。ですからaから始めてみましょう。
(1) a=N としてみる。
aのところにNを代入し、パターンが合う列を探して決められるところを決めていきます。初めは細かく操作手順を説明しましょう。まず代入しますと、
NbBxNyEz 着用者
N*x*y*zD エプロンの持ち主
*b*N*E** ドレスの持ち主
∧ ∧ 印の所のパターンが合うので、y=Nと決まります。これを代入。
NbBxNNEz 着用者
N*x*N*zD エプロンの持ち主
*b*N*E** ドレスの持ち主
∧ ∧ 印の所のパターンが合うので、これも代入して
NbBxNNEz 着用者
N*x*NNzD エプロンの持ち主
Eb*NEE** ドレスの持ち主
を得ます。重複する列を省くと、
NbBxEz 着用者
N*x*zD エプロンの持ち主
Eb*N** ドレスの持ち主
+ ++
です。ここまでで一段落。以下同じような要領です。
さて、+印の3列に注目すればただちにz≠N,E,D,がわかりますから、z=Bであり、
NbBDEB 着用者
N*D*BD エプロンの持ち主
Eb*N** ドレスの持ち主
つまり
NbBDE 着用者
N*D*B エプロンの持ち主
Eb*N* ドレスの持ち主
++ +
です。+印の3列を比較すればb≠N,E,Dなのでb=Bであり、
NBBDE 着用者
NDD*B エプロンの持ち主
EBBN* ドレスの持ち主
従って、
NBDE 着用者
ND*B エプロンの持ち主
EBN* ドレスの持ち主
ゆえに*に入れられるものは一意的に決まってしまいました。すなわち
NBDE 着用者
NDEB エプロンの持ち主
EBND ドレスの持ち主
が一つの解ですね。
(2) a=Eとしてみると
EbBxNyEE 着用者
E*x*y*ED エプロンの持ち主
*b*N*E** ドレスの持ち主
# ##
これはだめ。#印の列が矛盾しています。
(3) a=Bとしてみると --○
BbBBNyEz 着用者
B*BBy*zD エプロンの持ち主
NbNN*E** ドレスの持ち主
従って
BbNyEz 着用者
B*y*zD エプロンの持ち主
Nb*E** ドレスの持ち主
+ ++
です。+印の3列に注目すればただちにz≠B,E,Dがわかりますから、z=Nであり、
BbNDEN 着用者
B*D*ND エプロンの持ち主
Nb*E** ドレスの持ち主
つまり
BbNDE 着用者
B*D*N エプロンの持ち主
Nb*E* ドレスの持ち主
++ +
するとb≠N,E,D,Bですから、ダメですね。
(4)a=Dとしてみると --×
DbBxNyED 着用者
D*x*y*DD エプロンの持ち主
*b*N*E** ドレスの持ち主
# ##
これもだめ。#印の列が矛盾しています。
というわけで、唯一の解が存在し、
NBDE 着用者
NDEB エプロンの持ち主
EBND ドレスの持ち主