in reply to Find duplicate digits

Not very satisfying as a solution, but it works.

#! perl -slw use strict; m[ (?:^[^0]*0[^0]*0[^0]*$)| (?:^[^1]*1[^1]*1[^1]*$)| (?:^[^2]*2[^2]*2[^2]*$)| (?:^[^3]*3[^3]*3[^3]*$)| (?:^[^4]*4[^4]*4[^4]*$)| (?:^[^5]*5[^5]*5[^5]*$)| (?:^[^6]*6[^6]*6[^6]*$)| (?:^[^7]*7[^7]*7[^7]*$)| (?:^[^8]*8[^8]*8[^8]*$)| (?:^[^9]*9[^9]*9[^9]*$) ]x and print for '0000' .. '9999';

Update: ... but only for 4 digit numbers. By inverting the logic and only printing numbers that don't contain 3 repeated digits, it should work for numbers of any length.

#! perl -slw use strict; m[ (?:[^0]*0[^0]*0[^0]*0[^0]*)| (?:[^1]*1[^1]*1[^1]*1[^1]*)| (?:[^2]*2[^2]*2[^2]*2[^2]*)| (?:[^3]*3[^3]*3[^3]*3[^3]*)| (?:[^4]*4[^4]*4[^4]*4[^4]*)| (?:[^5]*5[^5]*5[^5]*5[^5]*)| (?:[^6]*6[^6]*6[^6]*6[^6]*)| (?:[^7]*7[^7]*7[^7]*7[^7]*)| (?:[^8]*8[^8]*8[^8]*8[^8]*)| (?:[^9]*9[^9]*9[^9]*9[^9]*) ]x or m[(?=(\d).*\1)] and print for '000000' .. '999999';

Examine what is said, not who speaks -- Silence betokens consent -- Love the truth but pardon error.
Lingua non convalesco, consenesco et abolesco. -- Rule 1 has a caveat! -- Who broke the cabal?
"Science is about questioning the status quo. Questioning authority".
In the absence of evidence, opinion is indistinguishable from prejudice.

Replies are listed 'Best First'.
Re^2: Find duplicate digits
by Anonymous Monk on Feb 15, 2006 at 15:35 UTC
    Thanks, BrowserUk :)

    How do I modify your code to add a new line to each printed number?

      If you included -l on your shebang line as I have, it would add the newlines for you, but since many people do not like simple :), you can do this:

      #! perl -sw use strict; m[ (?:^[^0]*0[^0]*0[^0]*$)| (?:^[^1]*1[^1]*1[^1]*$)| (?:^[^2]*2[^2]*2[^2]*$)| (?:^[^3]*3[^3]*3[^3]*$)| (?:^[^4]*4[^4]*4[^4]*$)| (?:^[^5]*5[^5]*5[^5]*$)| (?:^[^6]*6[^6]*6[^6]*$)| (?:^[^7]*7[^7]*7[^7]*$)| (?:^[^8]*8[^8]*8[^8]*$)| (?:^[^9]*9[^9]*9[^9]*$) ]x and print "$_\n" for '0000' .. '9999';

      Examine what is said, not who speaks -- Silence betokens consent -- Love the truth but pardon error.
      Lingua non convalesco, consenesco et abolesco. -- Rule 1 has a caveat! -- Who broke the cabal?
      "Science is about questioning the status quo. Questioning authority".
      In the absence of evidence, opinion is indistinguishable from prejudice.
Re^2: Find duplicate digits
by Anonymous Monk on Feb 15, 2006 at 15:40 UTC
    Please ignore my earlier post below. I figured that out. Sorry about that...