blob: a3e7bf6fc31daa1d569e3613856347e8956d4d7f (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
|
CREATE SCHEMA IF NOT EXISTS pwc157;
CREATE OR REPLACE FUNCTION
pwc157.brazilian( int )
RETURNS int
AS $CODE$
use Math::Base::Convert;
use Syntax::Keyword::Try;
for my $base ( 2 .. $_[0] - 1 ) {
elog( DEBUG, "Base $base " );
try {
my $bc = Math::Base::Convert->new( 10, $base );
my $n = $bc->cnv( $_[0] );
elog( DEBUG, "Converted value $_[0] -> $n in base $base" );
my @digits = split( //, $n );
my %symbols;
for my $d (@digits) {
$symbols{ $d }++;
}
my $seen = 0;
for my $k ( keys %symbols ) {
$seen++ if $symbols{ $k } > 0;
}
return 1 if $seen == 1;
} catch {
elog( DEBUG, "Exception");
next;
}
}
return 0;
$CODE$
LANGUAGE plperlu;
|