#!/usr/bin/perl -w

# Copyright 2010 Kevin Ryde

# This file is part of Math-Aronson.
#
# Math-Aronson is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by the
# Free Software Foundation; either version 3, or (at your option) any later
# version.
#
# Math-Aronson is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
# or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
# for more details.
#
# You should have received a copy of the GNU General Public License along
# with Math-Aronson.  If not, see <http://www.gnu.org/licenses/>.


# This is a few lines of nonsense showing which letters make finite or
# infinite sequences, or apparently infinite.
#
# The letters like "Z" which end at 1 are because in "Z is the first"
# there's that first Z but no more.  Only the letters in "is the first" can
# continue past the first (or corresponding "est la premiere" for French).
#

use strict;
use warnings;
use Math::Aronson;

foreach my $lang ('en', 'fr') {
  print "lang $lang\n";

  foreach my $letter ('A' .. 'Z') {
    my @show;
    foreach my $without_conjunctions (0, 1) {
      my $aronson = Math::Aronson->new
        (lang => $lang,
         letter => $letter,
         without_conjunctions => $without_conjunctions);
      my $value;
      my $i = 0;
      for (;;) {
        if ($i++ > 5000) {
          push @show, "infinite";
          last;
        }
        my $next = $aronson->next;
        if (! defined $next) {
          push @show, "ends at $value";
          last;
        }
        $value = $next;
      }
    }
    if ($show[0] ne $show[1]) {
      $show[0] .= ", or without conjunctions $show[1]";
    }
    print "$letter $show[0]\n";
  }
  print "\n";
}
exit 0;
