Maybe something like .. STORE CAST(0 AS I) TO lnCheck
lcDtString = STRCONV(DTOS(DATE()), 12) =ALINES(laValues, m.lcDtString, 0, CHR(0)) FOR lnPosn = 1 TO 8 STORE VAL(laValues(m.lnPosn)) TO lnVal ? lnVal IF BITTEST(m.lnCheck, m.lnVal) *- Have a duplicate number - do what ever =MESSAGEBOX(laValues(m.lnPosn) + " appears more than once.") EXIT ELSE STORE BITSET(m.lnCheck, m.lnVal) TO lnCheck ENDIF ENDFOR -----Original Message----- From: ProfoxTech [mailto:profoxtech-boun...@leafe.com] On Behalf Of Gene Wirchenko Sent: Monday, 18 July 2016 2:29 AM To: profoxt...@leafe.com Subject: Checking for All-Different Characters Hello: I write a logic/math puzzle each week. They appear in my blog (http://genew.ca/) and two local newspapers. Here is the latest problem: "Consider a date in YYYY-MM-DD format. What is the next date where all eight digits will be different?" I solved this by hand. I decided to verify my solution with a program. I often cook up something in GW-BASIC, but since VFP has date functions, I decided to go with it. It was very easy to set up the framework of the loop. What threw me for a loop is how to check that all of the digits are different. I ended up converting the date to string with dtos() and then testing the string with a rather ugly-looking condition. Is there something faster? ***** Start of Code ***** * 16s-16.prg * Date Puzzle * Last Modification: 2016-07-17 * * Consider a date in YYYY-MM-DD format. What is the next date where all * eight digits will be different? ? "*** Execution begins." ? program() close all clear all set talk off set exact on set century on set date ansi * local startdate startdate=date() ? "Start Date: "+transform(startdate) local trydate, looping trydate=startdate looping=.t. do while looping local trydtos trydtos=dtos(trydate) if right(trydtos,4)="0101" ? "Working on year "+left(trydtos,4) endif if; iif("0"$trydtos,1,0)+; iif("1"$trydtos,1,0)+; iif("2"$trydtos,1,0)+; iif("3"$trydtos,1,0)+; iif("4"$trydtos,1,0)+; iif("5"$trydtos,1,0)+; iif("6"$trydtos,1,0)+; iif("7"$trydtos,1,0)+; iif("8"$trydtos,1,0)+; iif("9"$trydtos,1,0)#8 trydate=trydate+1 else && solution looping=.f. endif enddo ? "Solution is "+transform(trydate)+"." * close all clear all ? "*** Execution ends." return ***** End of Code ***** Sincerely, Gene Wirchenko [excessive quoting removed by server] _______________________________________________ Post Messages to: ProFox@leafe.com Subscription Maintenance: http://mail.leafe.com/mailman/listinfo/profox OT-free version of this list: http://mail.leafe.com/mailman/listinfo/profoxtech Searchable Archive: http://leafe.com/archives/search/profox This message: http://leafe.com/archives/byMID/profox/008801d1e083$0ffde490$2ff9adb0$@ozemail.com.au ** All postings, unless explicitly stated otherwise, are the opinions of the author, and do not constitute legal or medical advice. This statement is added to the messages for those lawyers who are too stupid to see the obvious.