mst |
frikinz: but you're welcome to ignore us, just come back for your "I told you so" when the penny finally drops :D |
rindolf |
buu: define penny finally drops |
rindolf |
buubot: define penny finally drops |
buubot |
rindolf: penny n 1: a fractional monetary unit of Ireland and the United Kingdom; equal to one hundredth of a pound 2: a coin worth one-hundredth of the value of the basic unit [syn: {cent}, {centime}] [also: {pence} (pl)] |
dngor |
frikinz: Reflex is still pretty raw, but it's eventy without so much loopy. |
rindolf |
In Hebrew we say "The phone token has fallen" instead of "the penny finally drops". |
dngor |
Is that related to "the other shoe has dropped"? |
rindolf |
dngor: well, it means the same thing as the English expression - "I finally got to the bottom of it." |
rindolf |
Or understood it. |
dngor |
Oh, they're completely different idioms. |
* mst |
beats dngor with a slipper |
rindolf |
mst: :-D |
Su-Shee |
kinky. |
mst |
Su-Shee: wrt the topic ["Su-Shee wants the web-development framework that makes web-development hard, difficult and complicated"], it's called Maypole :) |
rindolf |
mst: heh. |
rindolf |
mst: yes, I can imagine that about Maypole. |
Su-Shee |
mst, avar: thank you so much. ;) |
Su-Shee |
please mail the sourcecode to rindolf who put it in the topic ;) |
rindolf |
Su-Shee: I can CPAN it. |
Su-Shee |
the topic? |
mutewit |
I have a string and am looking for a quick way to extract all 5-character slices out of it. |
rindolf |
Su-Shee: :-) |
rindolf |
IRC-Freenode-Perl-Topic-SuShee-WebDevelFrameworks-v0.0.1.tar.gz |
mutewit |
For eg. 'abcdef' returns 'abcde', 'bcdef' |
mutewit |
Any suggestions? |
rindolf |
mutewit: use subst |
rindolf |
mutewit: use substr |
rindolf |
mutewit: with a map |
rindolf |
eval: my $long_str = "0123456789abcdefgh"; [map { substr($long_s, $_, $_+5 } (0 .. length($long_s)-5)] |
buubot |
rindolf: ERROR: syntax error at (eval 36) line 1, at EOF |
rindolf |
eval: my $long_str = "0123456789abcdefgh"; [map { substr($long_s, $_, $_+5) } (0 .. length($long_s)-5)] |
buubot |
rindolf: [] |
mutewit |
rindolf: Awesome. |
rindolf |
eval: my $long_s = "0123456789abcdefgh"; [map { substr($long_s, $_, $_+5) } (0 .. length($long_s)-5)] |
buubot |
rindolf: ["01234",123456,2345678,"3456789a","456789abc","56789abcde","6789abcdefg","789abcdefgh","89abcdefgh","9abcdefgh","abcdefgh","bcdefgh","cdefgh","defgh"] |
rindolf |
Thrid time the charm! |
mst |
... thrid |
* rindolf |
hits buubot with a big strict pragma. |
* mst |
turns the slipper on rindolf |
rindolf |
mst: yes, my typing sucks today. |
rindolf |
But f**k it! IRC is not exactly the declaration of independence. |
pragma_ |
ow! |
rindolf |
pragma_: pardon? |
* rindolf |
hits pragma_ with mst's slipper so it will really hurt. |
pragma_ |
why are you hitting buubot with me? |
rindolf |
pragma_: the strict pragma. |
rindolf |
pragma_: not you. |
rindolf |
perlbot: strict |
perlbot |
rindolf: Perl strictures - http://perldoc.perl.org/strict.html |
rindolf |
pragma_: ^^^ |
rindolf |
pragma_: we call the lowercase modules pragmata (sp?) in Perl. |
rindolf |
http://en.wiktionary.org/wiki/Special:Search?search=pragmata - hmm.... |
rindolf |
I thought pragmata was a valid plural of pragma. |
dngor |
ow? ow! |
mutewit |
rindolf: Are you sure that generates only strings of length 5? |
rindolf |
mutewit: well, you need to watch from fencepost errors. |
mst |
mutewit: hey, he got you half way there |
rindolf |
mutewit: oh wait. |
mst |
mutewit: how about you read p3rl.org/substr and p3rl.org/map and have a go yourself |
rindolf |
mutewit: yes , you need substr($long_s, $_, 5) |
mst |
mutewit: this is a help-you-to-learn channel |
mst |
mutewit: not a "write your code for you" channel |
rindolf |
mutewit: and beware from fencepost errors. |
rindolf |
like substr($long_s , 1000, 5) |
rindolf |
Because that will be "" |
rindolf |
Or a 4 chars length. |
mutewit |
rindolf: I wanted the length argument to be 5 :p |
mutewit |
mst: I understand, I just missed the $_ + 5 issue. |
mst |
mutewit: right. what I'm saying is, you should have experimented |
rindolf |
mutewit: yes, I know. |
mst |
mutewit: then shown us the experiment and said "I can't work out why this is still wrong, here's what I've worked out so far" |
mst |
mutewit: then we can help you learn |
mst |
mutewit: assuming learning to write stuff yourself is what you're aiming for |
* rindolf |
waits for tybalt89 to come up with a funky regex to do it. |
mst |
(if it isn't, please just throw yourself off a cliff or something, kthx ;) |
rindolf |
mst: I think that's the case, no need to preach to mutewit about it. |
mutewit |
mutewit: I did, and figured out the soln. when switching windows. |
mst |
mutewit: aye. I'm just trying to explain how to get the most learning out of us as well as the most working code. |
* rindolf |
sometimes thinks we spend much more IRC volume discussing netiquette than actually suffering from the bad netiquette. |
mutewit |
But by the time I came back to the channel there was a whole page of "preaching". |
mutewit |
I was using a split method with array indexing and it felt too much like a C-approach. |
rindolf |
mutewit: oh, you split the string into chars? |
mst |
yeah, by the time you've done map, join, split, ... |
mst |
you've basically just reimplemented substr badly :) |
mutewit |
rindolf: That's what I was doing, but the map/substr approach is a lot cleaner. |
rindolf |
mutewit: yeah/ |
rindolf |
mutewit: split into chars sometimes has some uses. |
rindolf |
mutewit: but this reminds me too much of SICP. |
rindolf |
perlbot: sicp |
perlbot |
rindolf: http://mitpress.mit.edu/sicp/ - "Structure and Interpretation of Computer Programs" - A Classical Text on Programming |
rindolf |
mutewit: see - http://www.shlomifish.org/lecture/Perl/Lightning/Too-Many-Ways/slides/slide13.html |
rindolf |
mutewit: this is how an SICP programmer will implement a simple text processing task. |
mutewit |
SICP, love the book. |
mutewit |
and all the OCaml work this year has given rise to a functional bent of mind |
mutewit |
which is kinda screwing around with my perl code. |
rindolf |
mutewit: yeah. |
rindolf |
mutewit: http://www.shlomifish.org/lecture/Perl/Lightning/Too-Many-Ways/slides/slide12.html - this is the fastest Perl solution. |
rindolf |
At least in speed. |
rindolf |
It can be a little shorter with a regex lookahead, but it's less elegant and slower. |
rindolf |
http://www.shlomifish.org/lecture/Perl/Lightning/Too-Many-Ways/slides/slide9.html - there you go. |
rindolf |
mutewit: did you know how to program before reading SICP? |
rindolf |
I think it's not a good introductory book. |
rindolf |
MIT are going to ditch it in favour of some Python/Robotics curriculum. |
mst |
I think it's only a good introductory book if you know some math and have the brain to follow it |
mst |
it teaches a lot of hard concepts very quickly |
Su-Shee |
mst: from a "I'm from the humanities department" point of view it's managable. it's not easy, but everyone can work with it. |
tybalt89 |
eval: $_ = "0123456789abcdefgh"; [ /(?=(.{5}))/g ] |
buubot |
tybalt89: ["01234",12345,23456,34567,45678,56789,"6789a","789ab","89abc","9abcd","abcde","bcdef","cdefg","defgh"] |
mutewit |
rindolf: Yes. |
rindolf |
mutewit: ah. Using what? |
rindolf |
tybalt89++ # Up for the challenge. |
mutewit |
and yes, MIT ditched SICP in favor of a Python-based intro course. |
tybalt89 |
rindolf: I was off in other windows :( |
tybalt89 |
mutewit: ^^ for 5 char slices |
rindolf |
mutewit: don't use it if you want future generations to understand it. |
* rindolf |
slaps tybalt89 with mst's slipper for golfing mutewit's solution and telling him it's a good idea. |
tybalt89 |
rindolf: that's not golfing, just common simple regex :) |
rindolf |
tybalt89: sigh. |
rindolf |
tybalt89: simple. |
rindolf |
irregular regular expression. |
rindolf |
Maybe use Regexp::Common |
mutewit |
I added in tybalt89's code but commented it for future reference. |
mst |
I'd definitely use the substr approach for real code |
mst |
tybalt89's code is cleverness to prove it can be done; I don't believe he was recommending it |
tybalt89 |
mst: sigh, yes, I am recommending it. It's the clearest solution. |
mst |
tybalt89: I respectfully disagree. |
mst |
I find the substr approach far more obvious |
Chazz |
rindolf, ty. :) |
mst |
but then, I mostly write applications perl rather than scripts, so I only engage in regexp cleverness when actively useful |
rindolf |
tybalt89: look-aheads and look-behinds are dark corners of the Perl not-so-reg-regexes |
Yaakov |
In the context of this particular problem, it's pretty straightforward, but, knowledge of the development/maintenance team(s) would push my choce one way or another. |
tybalt89 |
mst: note it took rindolf three tries, and even then he got it wrong. |
rindolf |
tybalt89: well, I'm not focused now. |
mst |
tybalt89: map substr($str, $_, 5), 0 .. length($str)-5; ? |
mst |
maybe -6 |
* tybalt89 |
turns the lens, trying to focus rindolf |
rindolf |
mst: -5 |
mst |
but it's hardly difficult; rindolf's just having a day of silly mistakes |
rindolf |
Unit tests! |
mst |
I'd expect him to get it right first time when on form too :) |
rindolf |
Some clear code is hard to get right. |
rindolf |
Doesn't make it less clear. |
mst |
yeah |
rindolf |
Most people will not write a correct binary search at first try. |
tybalt89 |
"maybe -6" is proof of unclearness :) |
rindolf |
But the correct binary search is easy to digest. |
mst |
tybalt89: no, it's proof it's 8pm on a sunday and I'm not particularly awake either |
mst |
but your code just made me go "hang on, WHAT?!" |
mst |
then I had to stop and dissect it |
mst |
-then- I saw what you were doing |
rindolf |
mst++ |
mst |
also, the substr approach displays the semantics and the reasoning |
mst |
whereas the regex approach displays, well, line noise, frankly |
rindolf |
mst: why don't we agree to disagree with tybalt89 ? |
rindolf |
mst: so how's the weather? ;-) |