Yzzyx has asked for the wisdom of the Perl Monks concerning the following question:
I'm looking for a faster way to determine if all the digits in a 10 character string are unique.
Running this once is fast enough, but my program does this thousands of times. Each time the string is different, of course.
One slow way:
Another slow way:
Thanks!
Running this once is fast enough, but my program does this thousands of times. Each time the string is different, of course.
One slow way:
#!/usr/bin/perl -w use strict; while ( <> ) { chomp; die unless /^\d{10}$/; &uniq ( $_ ) == 1 ? print "1\n" : print "0\n"; } sub uniq { for ( 0 .. 9 ) { return 0 if $_[0] !~ /$_/; } return 1; }
Another slow way:
#!/usr/bin/perl -w use strict; while ( <> ) { chomp; die unless /^\d{10}$/; &uniq ( $_ ) == 1 ? print "1\n" : print "0\n"; } sub uniq { my $x = $_[0]; my @x = sort split //, $x; $x = join "", @x; $x =~ tr/0-9//s; length $x == 10 ? return 1 : return 0; }
Thanks!
Back to
Seekers of Perl Wisdom