aboutsummaryrefslogtreecommitdiff
path: root/challenge-164/deadmarshal/perl/ch-2.pl
blob: 42bc0c90df0e3cd0e39d2ffa8be6e4fd9b7915d5 (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
#!/usr/bin/env perl
use strict;
use warnings;
use List::Util qw(sum0);

sub is_happy{
  my ($n) = @_;
  my %seen;
  while(1){
    $n = sum0(map {$_ ** 2} split //, $n);
    return 1 if $n == 1;
    return 0 if $seen{$n}++;
  }
}

sub happy_numbers{
  my $i = 0;
  my $count = 0;
  while($count < 8){
    if(is_happy($i)){
      print "$i ";
      $count++;
    }
    $i++;
  }
}

happy_numbers;