3 ms·
Is that really so much harder? Somehow, I expect you'd get a lot of opaque regexes like: sub isIP { return (shift =~ m/^((\d{1,2}|1\d{2}|2[0-4]\d|25[0-5
by Natsu 15y ago
Is that really so much harder? Somehow, I expect you'd get a lot of opaque regexes like:
sub isIP {
return (shift =~ m/^((\d{1,2}|1\d{2}|2[0-4]\d|25[0-5])\.){3}(\d{1,2}|1\d{2}|2[0-4]\d|25[0-5])$/)? 1 : 0;
}
- kragen 15y agoI failed to note in my earlier comment that yes, it is so much harder. Fizzbuzz requires that you write a loop, print some strings, and either maintain a couple of counters or use the modulo operator. Your solution requires: - writing a subroutine - understanding Perl parameter passing - understanding Perl regexps, including =~, anchoring, alternatives, metacharacter escaping, character classes, and repeat counts; - the ternary operator. And then you could probe things like: - Do they know how to fix the bug in your version where it incorrectly accepts an IP address with a newline appended to it? - Do they know it would still work without the return and the ?1:0? - Can they figure out that they could simplify and clarify the code substantially with qr? - Do they understand why someone might prefer a non-regexp-based approach? :)
- kragen 15y agoI think we did get someone solving it that way once, and modulo Unicode, it's arguably a reasonable solution. But there are other one-line solutions that are more transparent. The Stanford CS Ph.D. candidate whose solution included a Perl function for converting decimal numbers of up to three digits to binary was rejected.