#!/usr/bin/env raku

unit sub MAIN (:v(:$verbose));

constant $DAY-AS-SECONDS = 24 * 60 * 60; # 86400

my $s     = 0;
my $e     = 0;
my $max   = 0;
my $count = 0;

for 0 .. $DAY-AS-SECONDS -1 -> $start
{
  next unless $start.is-prime;

  for $start + 1 .. $DAY-AS-SECONDS -> $end
  {
    next unless $end.is-prime;

    my $length = $end - $start;

    next unless $length.is-prime;

    my $new-max = $length > $max;
    
    say ": Prime time #{ ++$count }: $start ({ hhmmss($start) }) - $end ({ hhmmss($end) }) = $length sec ({ hhmmss($length) }) { $new-max ?? "-> new max" !! "" }" if $verbose;

    if $new-max
    {
      $s   = $start;
      $e   = $end;
      $max = $length;
    }
  }
}

say $max
  ?? "$s ({ hhmmss($s) }) - $e ({ hhmmss($e) }) = $max sec ({ hhmmss($max) })"
  !! "0";

sub hhmmss($min)
{
  my ($s, $m, $h) = $min.polymod(60, 60);
  return sprintf("%02d:%02d:%02d", $h, $m, $s);
}
