n_dimensional_circles.pl 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. #!/usr/bin/perl
  2. # Author: Daniel "Trizen" Șuteu
  3. # License: GPLv3
  4. # Date: 20 November 2015
  5. # Website: https://github.com/trizen
  6. # The area of a circle in n-dimensions:
  7. # pi * d^n / (2*n)
  8. # pi * r^n * 2^(n-1) / n
  9. # The circumference of a circle in n-dimensions:
  10. # pi * d^(n-1)
  11. # pi * r^(n-1) * 2^(n-1)
  12. use 5.010;
  13. use strict;
  14. use warnings;
  15. use Text::ASCIITable;
  16. my @d_areas;
  17. my @r_areas;
  18. my @d_circumferences;
  19. my @r_circumferences;
  20. for my $i (1 .. 9) {
  21. push @d_areas, sprintf("pi * d^%d / %s", $i, 2 * $i);
  22. push @r_areas, sprintf("pi * r^%d * %d/%d", $i, 2**($i - 1), $i);
  23. push @d_circumferences, sprintf("pi * d^%d", $i - 1);
  24. push @r_circumferences, sprintf("pi * r^%d * %d", $i - 1, 2**($i - 1));
  25. }
  26. my $table = Text::ASCIITable->new;
  27. $table->setCols('Dimension', 'Volume (d)', 'Volume (r)', 'Perimeter (d)', 'Perimeter (r)');
  28. foreach my $i (0 .. $#d_areas) {
  29. $table->addRow($i + 1, $d_areas[$i], $r_areas[$i], $d_circumferences[$i], $r_circumferences[$i]);
  30. }
  31. print $table;
  32. __END__
  33. .-------------------------------------------------------------------------------.
  34. | Dimension | Volume (d) | Volume (r) | Perimeter (d) | Perimeter (r) |
  35. +-----------+---------------+------------------+---------------+----------------+
  36. | 1 | pi * d^1 / 2 | pi * r^1 * 1/1 | pi * d^0 | pi * r^0 * 1 |
  37. | 2 | pi * d^2 / 4 | pi * r^2 * 2/2 | pi * d^1 | pi * r^1 * 2 |
  38. | 3 | pi * d^3 / 6 | pi * r^3 * 4/3 | pi * d^2 | pi * r^2 * 4 |
  39. | 4 | pi * d^4 / 8 | pi * r^4 * 8/4 | pi * d^3 | pi * r^3 * 8 |
  40. | 5 | pi * d^5 / 10 | pi * r^5 * 16/5 | pi * d^4 | pi * r^4 * 16 |
  41. | 6 | pi * d^6 / 12 | pi * r^6 * 32/6 | pi * d^5 | pi * r^5 * 32 |
  42. | 7 | pi * d^7 / 14 | pi * r^7 * 64/7 | pi * d^6 | pi * r^6 * 64 |
  43. | 8 | pi * d^8 / 16 | pi * r^8 * 128/8 | pi * d^7 | pi * r^7 * 128 |
  44. | 9 | pi * d^9 / 18 | pi * r^9 * 256/9 | pi * d^8 | pi * r^8 * 256 |
  45. '-----------+---------------+------------------+---------------+----------------'