fork download
  1. #!/usr/bin/perl
  2.  
  3. sub f{($_,$n)=@_;s/(-?\d+)?~(-?\d+)?|(-?\d+)/!(defined$3?$n!=$3:length$1&&$1>$n||length$2&&$n>$2)+0/ge;s/skip/&&!/g;s/,/||/g;eval}
  4.  
  5. # Testing.
  6.  
  7. use Test::More;
  8.  
  9. ok f('10~20 ', 14);
  10. ok f('10~20 ', 20);
  11. ok !f('10~20 skip 14~18', 17);
  12. ok f('~ skip 6 ', 8 );
  13. ok f('16,17 skip 16 ', 16);
  14. ok !f('(16,17) skip 16 ', 16);
  15. ok f('~10,5~ ', 8 );
  16. ok f('~10,5~ ', 4 );
  17. ok f('6 skip 6,~ ', 6 );
  18. ok f('-20~-10 ', -14);
  19. ok !f('-20~-10 ', -21);
  20. ok !f('0~2 ', -2);
  21. ok f('~2 ', -2);
  22. ok !f('0 ', 1);
  23. done_testing;
  24.  
Success #stdin #stdout 0.01s 20304KB
stdin
Standard input is empty
stdout
ok 1
ok 2
ok 3
ok 4
ok 5
ok 6
ok 7
ok 8
ok 9
ok 10
ok 11
ok 12
ok 13
ok 14
1..14