First perfect square in base n with n unique digits: Difference between revisions

From Rosetta Code
Content added Content deleted
m (patch a weasel gap)
m (Nail down the spec a little tighter.)
Line 1: Line 1:
Find the first perfect square in a given base '''N''' that has at least '''N''' digits and
Find the first perfect square in a given base '''N''' that has at least '''N''' digits and
exactly '''N''' ''significant unique'' digits; display the number in base '''N'''.
exactly '''N''' ''significant unique'' digits when expressed in base '''N'''.


E.G. In base '''10''', the first perfect square with at least '''10''' unique digits is '''1026753849''' ('''32043²''').
E.G. In base '''10''', the first perfect square with at least '''10''' unique digits is '''1026753849''' ('''32043²''').
Line 8: Line 8:
;Task
;Task


* Find and display here, on this page, the first perfect square in base '''N''', with '''N''' significant unique digits when expressed in base '''N''', for each of base '''2''' through '''12'''.
* Find and display here, on this page, the first perfect square in base '''N''', with '''N''' significant unique digits when expressed in base '''N''', for each of base '''2''' through '''12'''. Display each number in the base '''N''' for which it was calculated.


* (optional) Do the same for bases '''13''' through '''16'''.
* (optional) Do the same for bases '''13''' through '''16'''.

Revision as of 01:23, 21 May 2019

Find the first perfect square in a given base N that has at least N digits and exactly N significant unique digits when expressed in base N.

E.G. In base 10, the first perfect square with at least 10 unique digits is 1026753849 (32043²).

You may use analytical methods to reduce the search space, but the code must do a search. Do not use magic numbers or just feed the code the answer to verify it is correct.

Task
  • Find and display here, on this page, the first perfect square in base N, with N significant unique digits when expressed in base N, for each of base 2 through 12. Display each number in the base N for which it was calculated.
  • (optional) Do the same for bases 13 through 16.

Perl 6

Works with: Rakudo version 2019.03

<lang perl6># Only search perfect squares that have at least N digits;

  1. smaller could not possibly match.

sub first-square (Int $n) {

   my $start = (($n - 1)/2).exp($n).floor || 1;
   my $sq = ($start .. *).map( *² ).hyper.first: *.base($n).comb.Bag.elems >= $n;
   sprintf "Base %2d: %10s² == %s", $n, $sq.sqrt.base($n), $sq.base($n);

}

say "First perfect square with N unique digits in base N: "; say .&first-square for flat

  2 .. 12, # required
 13 .. 16  # optional
</lang>
Output:
First perfect square with N unique digits in base N:
Base  2:         10² == 100
Base  3:         22² == 2101
Base  4:         33² == 3201
Base  5:        243² == 132304
Base  6:        523² == 452013
Base  7:       1431² == 2450361
Base  8:       3344² == 13675420
Base  9:      11642² == 136802574
Base 10:      32043² == 1026753849
Base 11:     111453² == 1240A536789
Base 12:     3966B9² == 124A7B538609
Base 13:    3828943² == 10254773CA86B9
Base 14:    3A9DB7C² == 10269B8C57D3A4
Base 15:   1012B857² == 102597BACE836D4
Base 16:   404A9D9B² == 1025648CFEA37BD9