043 Sub-string divisibility.pl 706 B

12345678910111213141516171819202122232425262728293031323334353637
  1. #!/usr/bin/perl
  2. # Author: Daniel "Trizen" Șuteu
  3. # License: GPLv3
  4. # Website: https://github.com/trizen
  5. # https://projecteuler.net/problem=43
  6. # Runtime: 3.210s
  7. use 5.010;
  8. use strict;
  9. use integer;
  10. use ntheory qw(forperm);
  11. my $sum = 0;
  12. my @digits = 0 .. 9;
  13. forperm {
  14. my ($d1, $d2, $d3, $d4, $d5, $d6, $d7, $d8, $d9, $d10) = @digits[@_];
  15. if ( $d1 != 0
  16. and "$d2$d3$d4" % 2 == 0
  17. and "$d3$d4$d5" % 3 == 0
  18. and "$d4$d5$d6" % 5 == 0
  19. and "$d5$d6$d7" % 7 == 0
  20. and "$d6$d7$d8" % 11 == 0
  21. and "$d7$d8$d9" % 13 == 0
  22. and "$d8$d9$d10" % 17 == 0) {
  23. $sum += "$d1$d2$d3$d4$d5$d6$d7$d8$d9$d10";
  24. }
  25. } scalar(@digits);
  26. say $sum;