From: Robert Dober Date: 2006-08-28T01:34:57+09:00 Subject: Re: [QUIZ] DayRange (#92) ------=_Part_157982_30787161.1156696494721 Content-Type: multipart/alternative; boundary="----=_Part_157983_30478192.1156696494721" ------=_Part_157983_30478192.1156696494721 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Content-Disposition: inline Nice quiz Note to JEGII, much better like that ;) I agree with those who pointed out that altough not difficult the challange is to do it nicely. Make Ruby shine!! (hey I've never seen that one before ;). While I found it too difficult (to read;) to wrap around my solution is extremly forgiving for typos - which might be a bad thing (e.g. "Tuh" is interpreted as "Tue", but might have been intended as "Thu", but that "feature" can easily be switched off of course) OTOH it accepts its output as input again, i.e. one can write Days.new "Mo-Friday", 7 => "Mon-Fri,Sun" Days.new "Sun,Mon-Fri" etc.etc Cheers Robert ------=_Part_157983_30478192.1156696494721 Content-Type: text/html; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Content-Disposition: inline Nice quiz

Note to JEGII, much better like that ;)

I agree with those who pointed out that altough not difficult the challange is to do it nicely.

Make Ruby shine!! (hey I've never seen that one before ;).

While I found it too difficult (to read;) to wrap around my solution is extremly forgiving for typos - which might be a bad thing (e.g. "Tuh" is interpreted as "Tue", but might have been intended as "Thu", but that "feature" can easily be switched off of course)

OTOH it accepts its output as input again, i.e. one can write

Days.new "Mo-Friday", 7 => "Mon-Fri,Sun"
Days.new "Sun,Mon-Fri" etc.etc

Cheers
Robert
------=_Part_157983_30478192.1156696494721-- ------=_Part_157982_30787161.1156696494721 Content-Type: application/octet-stream; name=days.rb Content-Transfer-Encoding: base64 X-Attachment-Id: f_erdn04a5 Content-Disposition: attachment; filename="days.rb" IyEvdXNyL2Jpbi9lbnYgcnVieQoKY2xhc3MgQXJyYXkKCWRlZiBmaXJzdD0gYXJnCgkJc2VsZlsw XSA9IGFyZwoJZW5kCgoJZGVmIGxhc3Q9IGFyZwoJCXNlbGZbLTFdID0gYXJnCgllbmQKZW5kCgpj bGFzcyBSYW5nZQoJZGVmIHNpemUKCQl0b19hLnNpemUKCWVuZAoKCWRlZiBwYWlyPwoJCTIgPT0g c2l6ZQoJZW5kCmVuZAoKY2xhc3MgUmVncwoJZGVmIGluaXRpYWxpemUgKnJlZ3MKCQlAcmVncyA9 IHJlZ3MuZHVwCgllbmQKCQoJZGVmID09PSBzdHJpbmcKCQlAcmVncy5lYWNoX3dpdGhfaW5kZXgg ZG8KCQkJfHJlZywgaW5kZXh8CgkJCXJldHVybiBpbmRleCBpZiByZWcgPT09IHN0cmluZy5kb3du Y2FzZQoJCWVuZAoJCW5pbAoJZW5kCmVuZCAjIFJlZ3MKCmNsYXNzIERheXMKCQoJRnVsbERheUxp c3QgICAgID0gJXd7IE1vbmRheSBUdWVcIiN7YXJncy5qb2luKCIsIil9XCIic2RheSBXZWRuZXNk YXkgVGh1cnNkYXkgRnJpZGF5IFNhdHVyZGF5IFN1bmRheSB9LmZyZWV6ZQoJU2hvcnRPdXRwdXQg ICAgID0gWyJkdW1teSJdICsgRnVsbERheUxpc3QubWFwIHsgfGRheXwgZGF5WzAuLjJdIH0uZnJl ZXplCglJbnRlcm5hbERheUxpc3QgPSBGdWxsRGF5TGlzdC5tYXAgeyB8ZGF5fCBkYXkuZG93bmNh c2UgfS5mcmVlemUKCglMZWdhbERheVJlZ3MgICAgPSBSZWdzLm5ldyggKihJbnRlcm5hbERheUxp c3QubWFwIHsgfGRheXwgJXJ7XiN7ZGF5WzAuLjJdfT99IH0pICkuZnJlZXplCglMZWdhbERheU51 bWJlcnMgPSAoIDEgLi4gRnVsbERheUxpc3QubGVuZ3RoICkuZnJlZXplCgoJU3RyaW5nTGlzdFNl cCAgID0gJXJ7XHMqLFxzKn0KCVN0cmluZ1JhbmdlU2VwICA9ICVye1xzKi1ccyp9CgkKCWRlZiBp bml0aWFsaXplICpkYXlzCgkJQGRheXMgPSBIYXNoLm5ldwoJCWFkZF9kYXlzKCAqZGF5cyApCgkJ QHJhbmdlcyA9IG5pbAoJZW5kCgoJIyBDb252ZW5pZW5jZSBmb3IgbGF0ZXIgYWRqdXN0bWVudAoJ ZGVmIGFkZF9kYXlzICpkYXlzCgkJcGFyc2UoICpkYXlzICkJCgkJQHJhbmdlcyA9IG5pbAoJZW5k CgoJZGVmIHRvX3MKCQljb21wYWN0IHVubGVzcyBAcmFuZ2VzCgkJQHJhbmdlcy5tYXB7IHxyfAoJ CQlJbnRlZ2VyID09PSByID8gU2hvcnRPdXRwdXRbcl0gOiAiI3tTaG9ydE91dHB1dFtyLmZpcnN0 XX0tI3tTaG9ydE91dHB1dFtyLmxhc3RdfSIKCQl9LmpvaW4oIiwiKQoJZW5kCgoJcHJpdmF0ZQoJ ZGVmIGNvbXBhY3QKCQlyID0gTGVnYWxEYXlOdW1iZXJzLm1hcCB7IG5pbCB9ICMgSSBoYWQgYSBs b25nIGZpZ2h0IHdpdGggbWVzZWxmIGlmIHRvIHVzZSBtYXAgb3IgW25pbF0gKiBGdWxsRGF5TGlz dC5sZW5ndGgKCQkJCQkje2FyZ3Muam9pbigiLCIpfVwiIiAgCSMgYW5kIEkgbG9zdCAKCQlMZWdh bERheU51bWJlcnMuZWFjaCBkbwoJCQl8IGRheSB8CgkJCW5leHQgdW5sZXNzIEBkYXlzWyBkYXkg XQoJCQljYXNlIHIubGFzdAoJCQkJd2hlbiBuaWwKCQkJCQlyLmxhc3QgPSBkYXkKCQkJCXdoZW4g SW50ZWdlcgkKCQkJCQlpZiByLmxhc3QgPT0gZGF5IC0gMSB0aGVuCgkJCQkJCXIubGFzdCA9IChy Lmxhc3QuLmRheSkKCQkJCQllbHNlCgkJCQkJCXIgPDwgZGF5CgkJCQkJZW5kCgkJCQl3aGVuIFJh bmdlCgkJCQkJaWYgci5sYXN0Lmxhc3QgPT0gZGF5IC0gMSB0aGVuCgkJCQkJCXIubGFzdCA9IChy Lmxhc3QuZmlyc3QuLmRheSkKCQkJCQllbHNlCgkJCQkJCXIgPDwgZGF5CgkJCQkJZW5kCgkJCQll bHNlCgkJCQkJcmFpc2UgRXhjZXB0aW9uLCAiR3JlYXQgSm9iIFJvYmVydCEhISEiCgkJCWVuZCAj IGNhc2UKCgkJZW5kCgoJCUByYW5nZXMgPSByLmNvbXBhY3QubWFweyB8cmFuZ2V8IAoJCQlSYW5n ZSA9PT0gcmFuZ2UgJiYgcmFuZ2UucGFpcj8gPyBbcmFuZ2UuZmlyc3QsIHJhbmdlLmxhc3QgXSA6 IHJhbmdlICAKCQkJfS5mbGF0dGVuCgkJCgllbmQKCgkjIFBhcnNlIGEgbWl4dHVyZSBvZiBhbHBo YW51bWVyaVwiI3thcmdzLmpvaW4oIiwiKX1cIiJjLCBudW1lcmljIGFuZCByYW5nZSBwYXJhbWV0 ZXJzIGludG8gZGF5IG51bWJlcnMKCSMgZS5nLiAoMSwgIk1vbi1GcmksU2F0LFN1biIpCgkjIHNl dHRpbmcgQGRheXNbbnVtYmVyXSB0byB0cnVlIAlyYWlzZSBUZXN0RXhjZXB0aW9uLCAiSWxsZWdh bCBzZXR1cCBvZiB0ZXN0Y2FzZSAje2V4cGVjdGVkLmluc3BlY3R9IG5vdCBhbGxvd2VkIgoJZGVm IHBhcnNlICphcmdzCgkJYXJncy5lYWNoIGRvCgkJCXwgYXJnIHwKCQkJY2FzZSBhcmcKCQkJCXdo ZW4gU3RyaW5nCgkJCQkJIGFyZy5zcGxpdCggU3RyaW5nTGlzdFNlcCApLmVhY2h7IAoJCQkJCQl8 IGVsZSB8CgkJCQkJCWVsZW1lbnRzID0gZWxlLnNwbGl0KCBTdHJpbmdSYW5nZVNlcCApCgkJCQkJ CXJhaXNlIEFyZ3VtZW50RXJyb3IsCgkJCQkJCQkiSWxsZWdhbCBTdHJpbmcgUmFuZ2UgU3ludGF4 IGluIHN1YnN0cmluZyBcIiN7ZWxlfVwiIiBpZgoJCQkJCQkJICAgZWxlbWVudHMuc2l6ZSA+IDIK CQkJCQkJZiA9IChMZWdhbERheVJlZ3MgPT09IGVsZW1lbnRzLmZpcnN0KQoJCQkJCQlsID0gKExl Z2FsRGF5UmVncyA9PT0gZWxlbWVudHMubGFzdCkKCQkJCQkJKGYuLmwpLmVhY2h7IHxkfCBAZGF5 c1tkKzFdID0gdHJ1ZSB9CgkJCQkJfQoKCQkJCXdoZW4gSW50ZWdlcgoJCQkJCXJhaXNlIEFyZ3Vt ZW50RXJyb3IsIAoJCQkJCSIje2FyZ30gaXMgbm90IGluc2lkZSB0aGUgbGVnYWwgcmFuZ2Ugb2Yg ZGF5bnVtYmVycyAje0xlZ2FsRGF5TnVtYmVyc30iIHVubGVzcwoJCQkJCQlMZWdhbERheU51bWJl cnMgPT09IGFyZwoJCQkJCUBkYXlzW2FyZ10gPSB0cnVlCgkJCQllbHNlCgkJCQkJcmFpc2UgQXJn dW1lbnRFcnJvciwgCgkJCQkJIm9ubHkgU3RyaW5ncyBhbmQgSW50ZWdlcnMgYXJlIGFsbG93ZWQg YXMgcGFyYW1ldGVycyBmb3IgRGF5cycgY29uc3RydWN0b3IsIG5vdCAje2FyZy5pbnNwZWN0fSBv ZiAje2FyZy5jbGFzc30iCgkJCWVuZCAjIGNhc2UgYXJnCgkJZW5kCgllbmQKCiMJZGVmIHBhcnNl X2RheSBkYXluYW1lCiMJCXJhaXNlIEFyZ3VtZW50RXJyb3IsIGRheW5hbWUuZHVwIDw8ICIgaXMg bm90IGEgbGVnYWwgZGF5bmFtZSIJdW5sZXNzCiMJCQlkYXlfbmIgPSAoIEludGVybmFsRGF5TGlz dC5pbmRleCggZGF5bmFtZS5kb3duY2FzZSApIHx8ICBMZWdhbERheVJlZ3MgPT09IGRheW5hbWUu ZG93bmNhc2UgKSAKIwkJZGF5X25iICsgMQojCWVuZAplbmQgIyBEYXlzCg== ------=_Part_157982_30787161.1156696494721 Content-Type: application/octet-stream; name=test_days.rb Content-Transfer-Encoding: base64 X-Attachment-Id: f_erdn0p9t Content-Disposition: attachment; filename="test_days.rb" IyEvdXNyL2Jpbi9lbnYgcnVieQojCgpyZXF1aXJlICdkYXlzJwpyZXF1aXJlICd0ZXN0L3VuaXQn CgpjbGFzcyBEYXlzVGVzdGVyIDwgVGVzdDo6VW5pdDo6VGVzdENhc2UKCglUZXN0RXhjZXB0aW9u ID0gQ2xhc3MubmV3IEV4Y2VwdGlvbgoKCWRlZiBzZXR1cAoJCUBudW1lcmljX2NvbnZlcnNpb25z ID0gWwoJCQlbIiIsIFtdXSwKCQkJWyJNb24tU3VuIiwgWyoxLi43XSBdLAoJCQlbIk1vbixTdW4i LCAxLCA3IF0sCgkJCVsiTW9uLFR1ZSIsIDEsIDIgXSwKCQkJWyJNb24sVHVlLFRodSIsIDEsIDIs IDQgXSwJCgkJCVsiTW9uLVRodSxTYXQsU3VuIiwgMSwgMiwgMywgNCwgNiwgNyBdLAoJCQlbIk1v bixGcmktU3VuIiwgMSwgNSwgNiwgNyBdLAoJCQlbIk1vbi1XZWQsRnJpLVN1biIsIDEsIDIsIDMs IDUsIDYsIDcgXSwKCQkJWyJXZWQsVGh1LFNhdCxTdW4iLCAzLCA0LCA2LCA3IF0sCgkJCVsiV2Vk LUZyaSxTdW4iLCAzLCA0LCA1LCA3IF0sCgkJCVsiTW9uLFdlZC1TYXQiLCBbMSwgWyozLi42XV1d CgkJXQoKCQlAYWxwaGFfY29udmVyc2lvbnMgPSBbCgkJCVsiTW9uLVN1biIsICJNb24iLCAiVHUi LCAiU3VuZGF5IiwgIldlZCIsICJTYXQiLCAiRnJpIiwgIk1vbmRheSIsICJUaHUiXSwKCQkJWyJN b24sVHVlIiwgIk1vIiwgIlR1ZXNkYXkiIF0sCgkJCVsiTW9uLEZyaS1TdW4iLCAiTW9uIiwgIlN1 IiwgIkZyaWRheSIsICJTYXQiXSwKCQkJWyJNb24sV2VkLFRodSxTYXQsU3VuIiwgMywgNCwgIk1v IiwgInNhdHVyZGF5IiwgNyBdLAoJCQlbIlR1ZS1GcmksU3VuIiwgICAgICAgICA3LCAidHVlIiwg MywgIlRoIiwgNSBdLAoJCQlbIk1vbixUdWUsVGh1LEZyaSxTdW4iLCAiU3UiLCAiRnIiLCAxLCAy LCA0IF0sCgkJCVsiTW9uLVRodSxTYXQiLCAiTW8tV2VkIiwgInNhdCIsIDQgXSwKCQkJWyJUdWUt U3VuIiwgIlR1ZXNkYXktRnJpLFdlLVNhdCxTdW4iIF0KCQldCgoJCWEgPSBBcmd1bWVudEVycm9y CgkJQGVycm9ycyA9IFsKCQkJW2EsIDBdLAoJCQlbYSwgMSwgOF0sCgkJCVthLCAyLCAiQ3J1Il0K CQldCgoJCUB0eXBvX2NvcnJlY3Rpb24gPSBbCgkJCVsiU3VuIiwgIlN1eCJdLAoJCQlbIlN1biIs ICJzdW4iXSwJCgkJCVsiVHVlIiwgIlR1aCJdICMjIyBUaGlzIHNob3dzIHRoYXQgaXQgaXMgYSAq cHJvYmxlbWF0aWMqIGZlYXR1cmUKCQldCgkJCgkJQHBhcnNpbmcgPSBbCgkJCVsiTW9uLUZyaSxT dW4iLCAiTW9uLUZyaSIsIDddLAoJCQlbIk1vbi1XZWQsRnJpLVN1biIsIFsqMS4uM10sICJGcmkt U3VuIl0sCgkJCVsiTW9uLFR1ZSxGcmktU3VuIiwgIkZyaSxTYXQsU3VuLE1vbi1UdWUiXSwgIyBh Z2FpbiB2ZXJ5IGZvcmdpdmluZywgc28gYW0gSSA7KQoJCQlbIlR1ZS1GcmksU3VuIiwgICJTdW4s VHVlLUZyaSJdLAoJCQlbIk1vbi1TdW4iLCAiTW9uLUZyaSxTdW4iLCAiU2EiXQoJCV0KCgkJIyMg UHV0IHRoZSBmZWF0dXJlcyB5b3Ugd2FudCB0byB0ZXN0IGluIHRoZSBpbnN0YW5jZSB2YXJpYWJs ZSBiZWxvdwoJCUB0ZXN0Y2FzZXMgPSBbIEBudW1lcmljX2NvbnZlcnNpb25zLCBAYWxwaGFfY29u dmVyc2lvbnMsIEBlcnJvcnMsIAoJCQkJQHR5cG9fY29ycmVjdGlvbiwgQHBhcnNpbmcgXQoJZW5k CglkZWYgdGVzdF9hbGwKCQlAdGVzdGNhc2VzLmVhY2ggZG8KCQkJfCB0ZXN0Y2FzZSB8CgkJCXRl c3RjYXNlLmVhY2ggZG8KCQkJCXxjb252fAoJCQkJZXhwZWN0ZWQgPSBjb252LnNoaWZ0CgkJCQlh cmdzID0gY29udi5mbGF0dGVuCgkJCQljYXNlIGV4cGVjdGVkCgkJCQkJd2hlbiBTdHJpbmcKCQkJ CQkJYXNzZXJ0X2VxdWFsIGV4cGVjdGVkLCBEYXlzLm5ldyggKmFyZ3MgKS50b19zLCAKCQkJCQkJ CSJmcm9tIHRlc3RjYXNlIGFyZ3M6IFwiI3thcmdzLmpvaW4oIiwiKX1cIiIKCQkJCQl3aGVuIENs YXNzCgkJCQkJCXJhaXNlIFRlc3RFeGNlcHRpb24sIAoJCQkJIklsbGVnYWwgc2V0dXAgb2YgdGVz dGNhc2UgI3tleHBlY3RlZC5pbnNwZWN0fSBub3QgYWxsb3dlZCIgdW5sZXNzCgkJCQkJCWV4cGVj dGVkIDwgRXhjZXB0aW9uCgkJCQkJCWFzc2VydF9yYWlzZXMgZXhwZWN0ZWQgZG8KCQkJCQkJCQlE YXlzLm5ldyggKmFyZ3MgKS50b19zCgkJCQkJCWVuZAoJCQkJCXdoZW4gbmlsCgkJCQkJCWFzc2Vy dF9ub3RoaW5nX3JhaXNlZCBkbwoJCQkJCQkJCURheXMubmV3KCAqYXJncyApLnRvX3MKCQkJCQkJ ZW5kCgkJCQkJZWxzZQoJCQkJCQlyYWlzZSBUZXN0RXhjZXB0aW9uLCAiSWxsZWdhbCBzZXR1cCBv ZiB0ZXN0Y2FzZSAje2V4cGVjdGVkLmluc3BlY3R9IG5vdCBhbGxvd2VkIgoJCQkJZW5kICMgY2Fz ZSBleHBlY3RlZAoJCQllbmQKCQllbmQKCWVuZCAjIHRlc3QKCgoJIwoJIyBVbmNvbW1lbnQgdGhl IGZvbGxvd2luZyB0ZXN0cyBpZiB5b3Ugd2FudCBhIHNwZWNpYWwgZmVhdHVyZQoJIwoJCmVuZAo= ------=_Part_157982_30787161.1156696494721--