|
MATHEMATICA
|
ric[ps_, w_] := Catch[Block[{n, d, r}, If[w == {}, Throw@If[PrimeQ[n = FromDigits@ps], n, 0], Do[If[(r = ric[ps /. w[[1, 1]] -> d, Rest@w]) > 0, Throw[r]], {d, w[[1, 2]]}]]; 0]]; try[nd_, k_] := Block[{v = Array[x, nd], w, s}, s = v /. ToRules@ Reduce[Take[v, k] == Take[v, -k]]; w = Table[{e, If[e === s[[-1]], {1, 3, 7, 9}, If[e === s[[1]], Range@9, Range[0, 9]]]}, {e, DeleteDuplicates@ s}]; ric[s, w]]; a[n_] := Block[{nd = n+1, v=0},
While[(v = try[nd, n]) == 0, nd++]; v]; Array[a, 20]
|