/* Generate all spellings of Tallys Yunes in Picat. Idea based on http://hakank.org/picat/mankell.pi and Tallys' Facebook post: https://www.facebook.com/tallys/posts/10214478874433553 (Around Sep 2 2017) """ A woman named "Deborah", with whom I exchange emails every now and then, writes my name incorrectly as "Tally" in every message she sends me. So last time I had to email her a document, I purposely omitted the last letter from her name, saying "Hi Debora." It felt great! Her response in the follow-up email? "Thanks, Tally!" #IgiveUp #foreignerProblems """ The following regular expression was used for any (mis)use of Tallys' name: t(a|e)ll?(y|u)s? (y|j|oh)ne?s? And here's all 384 generated variants: talys yunes talys yune talys yuns talys yun talys yones talys yone talys yons talys yon talys yohnes talys yohne talys yohns talys yohn talys junes talys june talys juns talys jun talys jones talys jone talys jons talys jon talys johnes talys johne talys johns talys john taly yunes taly yune taly yuns taly yun taly yones taly yone taly yons taly yon taly yohnes taly yohne taly yohns taly yohn taly junes taly june taly juns taly jun taly jones taly jone taly jons taly jon taly johnes taly johne taly johns taly john talus yunes talus yune talus yuns talus yun talus yones talus yone talus yons talus yon talus yohnes talus yohne talus yohns talus yohn talus junes talus june talus juns talus jun talus jones talus jone talus jons talus jon talus johnes talus johne talus johns talus john talu yunes talu yune talu yuns talu yun talu yones talu yone talu yons talu yon talu yohnes talu yohne talu yohns talu yohn talu junes talu june talu juns talu jun talu jones talu jone talu jons talu jon talu johnes talu johne talu johns talu john tallys yunes tallys yune tallys yuns tallys yun tallys yones tallys yone tallys yons tallys yon tallys yohnes tallys yohne tallys yohns tallys yohn tallys junes tallys june tallys juns tallys jun tallys jones tallys jone tallys jons tallys jon tallys johnes tallys johne tallys johns tallys john tally yunes tally yune tally yuns tally yun tally yones tally yone tally yons tally yon tally yohnes tally yohne tally yohns tally yohn tally junes tally june tally juns tally jun tally jones tally jone tally jons tally jon tally johnes tally johne tally johns tally john tallus yunes tallus yune tallus yuns tallus yun tallus yones tallus yone tallus yons tallus yon tallus yohnes tallus yohne tallus yohns tallus yohn tallus junes tallus june tallus juns tallus jun tallus jones tallus jone tallus jons tallus jon tallus johnes tallus johne tallus johns tallus john tallu yunes tallu yune tallu yuns tallu yun tallu yones tallu yone tallu yons tallu yon tallu yohnes tallu yohne tallu yohns tallu yohn tallu junes tallu june tallu juns tallu jun tallu jones tallu jone tallu jons tallu jon tallu johnes tallu johne tallu johns tallu john telys yunes telys yune telys yuns telys yun telys yones telys yone telys yons telys yon telys yohnes telys yohne telys yohns telys yohn telys junes telys june telys juns telys jun telys jones telys jone telys jons telys jon telys johnes telys johne telys johns telys john tely yunes tely yune tely yuns tely yun tely yones tely yone tely yons tely yon tely yohnes tely yohne tely yohns tely yohn tely junes tely june tely juns tely jun tely jones tely jone tely jons tely jon tely johnes tely johne tely johns tely john telus yunes telus yune telus yuns telus yun telus yones telus yone telus yons telus yon telus yohnes telus yohne telus yohns telus yohn telus junes telus june telus juns telus jun telus jones telus jone telus jons telus jon telus johnes telus johne telus johns telus john telu yunes telu yune telu yuns telu yun telu yones telu yone telu yons telu yon telu yohnes telu yohne telu yohns telu yohn telu junes telu june telu juns telu jun telu jones telu jone telu jons telu jon telu johnes telu johne telu johns telu john tellys yunes tellys yune tellys yuns tellys yun tellys yones tellys yone tellys yons tellys yon tellys yohnes tellys yohne tellys yohns tellys yohn tellys junes tellys june tellys juns tellys jun tellys jones tellys jone tellys jons tellys jon tellys johnes tellys johne tellys johns tellys john telly yunes telly yune telly yuns telly yun telly yones telly yone telly yons telly yon telly yohnes telly yohne telly yohns telly yohn telly junes telly june telly juns telly jun telly jones telly jone telly jons telly jon telly johnes telly johne telly johns telly john tellus yunes tellus yune tellus yuns tellus yun tellus yones tellus yone tellus yons tellus yon tellus yohnes tellus yohne tellus yohns tellus yohn tellus junes tellus june tellus juns tellus jun tellus jones tellus jone tellus jons tellus jon tellus johnes tellus johne tellus johns tellus john tellu yunes tellu yune tellu yuns tellu yun tellu yones tellu yone tellu yons tellu yon tellu yohnes tellu yohne tellu yohns tellu yohn tellu junes tellu june tellu juns tellu jun tellu jones tellu jone tellu jons tellu jon tellu johnes tellu johne tellu johns tellu john This Picat model was created by Hakan Kjellerstrand, hakank@gmail.com See also my Picat page: http://www.hakank.org/picat/ */ import util. main => go. go => Goal = tallys_yunes, find_flatten(("Testing " ++ Goal.to_string()),Goal), nl. % % Find all the solutions of goal Goal. % find_flatten(Text,Goal) => printf("%w (%w)\n", Text, Goal), List = findall(L,call(Goal,L)), % println([LL.flatten() : LL in List]), foreach(R in List) println(R) end, println(len=List.length), nl. % % using member % % t(a|e)ll?(y|u)s? (y|j|oh)ne?s? tallys_yunes(L) => member(T, ["t"]), % constant member(AE, ["a","e"]), member(LL, ["l","ll"]), member(YU, ["y","u"]), member(S_STAR,["s",""]), member(SPACE, [" "]), member(YJ, ["y","j"]), member(UO, ["u","o","oh"]), member(N, ["n"]), member(E_STAR,["e",""]), member(S2_STAR, ["s",""]), L = [T,AE,LL,YU,S_STAR,SPACE,YJ,UO,N,E_STAR,S2_STAR].flatten().