aboutsummaryrefslogtreecommitdiff
path: root/challenge-052/dave-cross/perl/ch-1.pl
blob: 5e52ac3e2c1c98995c7fe5626be0c79b1abd2876 (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
#!/usr/bin/perl

use strict;
use warnings;
use feature 'say';

use File::Basename;

my ($start, $end) = get_params();

for ($start .. $end) {
  say "$_ is a stepping number" if is_stepping($_);
}

sub is_stepping {
  my ($x) = @_;

  my @digits = split //, $x;
  for (0, 1) {
    return if $digits[$_] + 1 != $digits[$_ + 1];
  }
  return 1;
}

sub get_params {
  my $me = basename $0;
  my $usage = "Usage: $me start end\n";
  $usage .= "(where 'start' and 'end' are integers between 100 and 999)\n";

  die $usage if @ARGV < 2;

  for (@ARGV) {
    die $usage if /\D/;
    die $usage if length != 3;
  }

  return sort { $a <=> $b } @ARGV;
}