fork download
  1. #!/usr/bin/perl
  2. use 5.016;
  3. use warnings;
  4. use List::Util qw(sum);
  5.  
  6. sub f {
  7. my ($filter, $list) = @_;
  8.  
  9. return sub{
  10. @{$_[0]} or return ($filter->(@{$_[1]}) ? 1 : 0);
  11.  
  12. return sum map{
  13. __SUB__->(
  14. [@{$_[0]}[0 .. $_ - 1, $_ + 1 .. $#{$_[0]}]],
  15. [@{$_[1]}, $_[0]->[$_]]
  16. )
  17. } (0 .. $#{$_[0]});
  18. }->($list, []);
  19. }
  20.  
  21. sub filter {
  22. $_[0] * ($_[1] . $_[2]) + ($_[3] . $_[4] . $_[5]) ==
  23. ($_[6] . $_[7] . $_[8] . $_[9])
  24. }
  25.  
  26. say f(\&filter, [0 .. 9]);
  27.  
Time limit exceeded #stdin #stdout 5s 3892KB
stdin
Standard input is empty
stdout
Standard output is empty