Just a test of
this solution because it's a neat way (sorting network style) of picking the odd ball out:
f[s_] := StringJoin[{
Order[s[[{1, 2, 3, 4}]], s[[{5, 6, 7, 8}]]],
Order[s[[{1, 2, 5, 9}]], s[[{3, 4, 10, 11}]]],
Order[s[[{3, 7, 9, 10}]], s[[{1, 4, 6, 12}]]]
} /. {-1 -> "L", 0 -> "B", 1 -> "R"}];
g[r_] := r /. {
"BBB" -> {0, 0},
"BBL" -> {12, -1},
"BBR" -> {12, +1},
"BLB" -> {11, -1},
"BLL" -> {9, +1},
"BLR" -> {10, -1},
"BRB" -> {11, +1},
"BRL" -> {10, +1},
"BRR" -> {9, -1},
"LBB" -> {8, -1},
"LBL" -> {6, -1},
"LBR" -> {7, -1},
"LLL" -> {0, 0},
"LLB" -> {2, +1},
"LLR" -> {1, +1},
"LRB" -> {5, -1},
"LRL" -> {3, +1},
"LRR" -> {4, +1},
"RBB" -> {8, +1},
"RBL" -> {7, +1},
"RBR" -> {6, +1},
"RLB" -> {5, +1},
"RLL" -> {4, -1},
"RLR" -> {3, -1},
"RRB" -> {2, -1},
"RRL" -> {1, -1},
"RRR" -> {0, 0}
};
s = ConstantArray[0, 12];
b = True;
Do[
s[[i]] += j;
b = b && g[f[s]] == {i, j};
s[[i]] -= j;
, {i, 12}, {j, {-1, 1}}
];
b
> True