#!/usr/local/bin/perl # odddiam.pl - Generate block pattern to fit circle with odd diameter # # Copyright 2015 David Meyer +JMJ # (License and documentation at bottom of file.) # Modules ########################################################### #use strict; use warnings; use Getopt::Std; # Configuration ##################################################### # Globals ########################################################### # Functions ######################################################### # Process arguments ################################################# %options = (); getopts('', \%options); # Main driver ####################################################### $diam = shift; if ($diam % 2 == 0) {die "Argument is not odd";} $r = ($diam - 1) / 2; $rb = $r + 1; print < odddiam.pl output END for $z (0 .. $r) { for $x (0 .. $r) { $dist = sqrt($x*$x + $z*$z); if ($dist <= $r && $dist < $rb) { $result = '@@'; } elsif ($dist <= $r) { $result = 'AA'; } elsif ($dist < $rb) { $result = 'BB'; } else { $result = ' '; } # print "$x\t$z\t$result\n"; print ""; } print "\n"; } print "
$result
\n\n\n"; exit 0 __END__ # Documentation ##################################################### =head1 NAME template.pl - Perl script template (command line) =head1 SYNOPSIS/USAGE =head1 DESCRIPTION Mark up code elements with C<>, file names with F<> (or C<> for readability), command names with B<>. Also I<> for italics, U<> for underline. Entities: E ('<'), E ('>'). =head1 OPTIONS =item B<-o> I, B<--option>=I =head1 RETURN VALUE =head1 ERRORS =head1 DIAGNOSTICS =head1 EXAMPLES =head1 ENVIRONMENT =over 6 =item VARIABLE Description of usage of environment variable C. =back =head1 FILES =head1 BUGS, LIMITATIONS, AND CAVEATS =head1 NOTES =head1 AUTHOR David Meyer =head1 HISTORY =head1 COPYRIGHT AND LICENSE Copyright 201x David Meyer =head1 SEE ALSO # Emacs control ##################################################### #Local variables: #mode: perl #End: