From: "KISHIMOTO, Makoto" Date: 2005-09-13T14:48:10+09:00 Subject: [ruby-list:41138] Re: [ANN] OSC2005-Fall 添削してもらいたい Ruby ソースコード募集 --Multipart=_Tue__13_Sep_2005_14_52_06_+0900_1sm=D2XTRi6Q8M6T Content-Type: text/plain; charset=ISO-2022-JP Content-Transfer-Encoding: 7bit きしもとです よさげなネタがあるので送ってみるテスト >  そこで、「あなたの Ruby コード」を募集したいと思います。 こういう意図的に変なことしてるコードは駄目ですかね? --Multipart=_Tue__13_Sep_2005_14_52_06_+0900_1sm=D2XTRi6Q8M6T Content-Type: application/octet-stream; name=dntk.rb Content-Transfer-Encoding: Base64 Content-Disposition: attachment; filename=dntk.rb CiMgdmk6c2V0IHRzPTMgc3c9MzoKIyB2aW06c2V0IHN0cz0wIG5vZXQ6CgpyZXF1aXJlICdqY29k ZScKCgojIMLnpK2kpCAoy/yhpLKvIC4uLiApIMDcyPi8raTyvejN/aS5pOukv6ThpM6lx6G8pb+5 vcKkpMi86sKzpK0KRGVrYV9zaGF6byA9IHt9ICAjIMDcyPi8raSrpOnH3M6opNikzrzMwfwKRGVr YV9zaGlkYWkgPSBbXSAgIyCw7MPXuKG90KTOpL+k4aTOwLW1rMm9uL2kyLzqwrOkraTOwcikzs7z CltbJ8y1zszC57/0JywgMTAgKiogKDQgKiAxNyldLCBbJ8nUssS717XEJywgMTAgKiogKDQgKiAx NildLCAgIyDA3Mj4vK2kyMfczqikzsHICglbJ8bhzbPCvycsIDEwICoqICg0ICogMTUpXSwgWyew pMHOtcAnLCAxMCAqKiAoNCAqIDE0KV0sCglbJ7mxss+6uycsIDEwICoqICg0ICogMTMpXSwgWye2 yycsIDEwICoqICg0ICogMTIpXSwKCVsnutwnLCAxMCAqKiAoNCAqIDExKV0sIFsnwLUnLCAxMCAq KiAoNCAqIDEwKV0sCglbJ7TCJywgMTAgKiogKDQgKiA5KV0sIFsnucInLCAxMCAqKiAoNCAqIDgp XSwKCVsnvvcnLCAxMCAqKiAoNCAqIDcpXSwgWyey0829JywgMTAgKiogKDQgKiA2KV0sCglbJ9S2 JywgMTAgKiogKDQgKiA1KV0sIFsntf4nLCAxMCAqKiAoNCAqIDQpXSwKCVsnw/snLCAxMCAqKiAo NCAqIDMpXSwgWyeyrycsIDEwICoqICg0ICogMildLAoJWyfL/CcsIDEwKio0XV0uZnJlZXplLmVh Y2ggZG8gfGt1bWl8CglrdW1pLmZyZWV6ZQoJa3VtaVswXS5mcmVlemUKCWt1bWlbMV0uZnJlZXpl CglEZWthX3NoYXpvW2t1bWlbMF1dID0ga3VtaVsxXQoJcmVzID0gJ15bsOzG87uwu8243s+7vLfI rLblXT8lcycgJSBba3VtaVswXV0KCXJlID0gUmVnZXhwLmNvbXBpbGUgcmVzCglzaG9yaSA9IFty ZV0gPDwgcHJvYyBkbyB8c2VwcGVuLCBnb2tlaXwKCQltID0gL15bsOzG87uwu8243s+7vLfIrLbl XT8vLm1hdGNoIHNlcHBlbgoJCWFtYXJpID0gZ29rZWkgJSAxMDAwMCAgIyDL/Myky/6k8sPqvdAK CQlnb2tlaSAtPSBhbWFyaQoJCWFtYXJpICs9IHsnJyA9PiAwLCAnsOwnID0+IDEsICfG8ycgPT4g MiwgICAjIyC29SA9PiAwCgkJCSe7sCcgPT4gMywgJ7vNJyA9PiA0LCAnuN4nID0+IDUsICfPuycg PT4gNiwKCQkJJ7y3JyA9PiA3LCAnyKwnID0+IDgsICe25ScgPT4gOX1bbVswXV0gICMgMSCkzrDM pMukxKSkpMakz6SzpMOkwaTHvejN/QoJCWdva2VpICsgYW1hcmkgKiBEZWthX3NoYXpvW2t1bWlb MF1dICAjIMfczqik8rPdpLGkxsKtpLfM4aS5CgllbmQKCURla2Ffc2hpZGFpIDw8IHNob3JpLmZy ZWV6ZQplbmQKRGVrYV9zaGF6by5mcmVlemUKRGVrYV9zaGlkYWkuZnJlZXplCgojc2hpZGFpX21h biA9IERla2Ffc2hpZGFpWzE2XSAgIyAnoanL/CcgpPK96M39pLmk66S/pOGkzryhwugKI3NhZ3lv ID0gJ7uwy/y7zcDpJwojc2VwcGVuID0gc2FneW8uc2xpY2UhIHNoaWRhaV9tYW5bMF0gICMgJ7Ds sq/G88Dpu7DL/LvNwOknIKTIpKSkpsb+zs+k8rK+xOoKI2tla2thID0gc2hpZGFpX21hblsxXS5j YWxsIHNlcHBlbiwgMTAwMDAyMDAwCiNwIFtrZWtrYSwgc2FneW9dICAjID09PiBbMTIwMDMwMDAw LCAiu83A6SJdCgojc2hpZGFpX21hbiA9IERla2Ffc2hpZGFpWzE2XSAgIyAnoanL/CcgpPK96M39 pLmk66S/pOGkzryhwugKI3NhZ3lvID0gJ8v8u83A6ScKI3NlcHBlbiA9IHNhZ3lvLnNsaWNlISBz aGlkYWlfbWFuWzBdICAjICew7LKvxvPA6cv8u83A6ScgpMikpKSmxv7Oz6Tysr7E6goja2Vra2Eg PSBzaGlkYWlfbWFuWzFdLmNhbGwgc2VwcGVuLCAxMDAwMDIwMDAKI3AgW2tla2thLCBzYWd5b10g ICMgPT0+IFsxMjAwMDAwMDAsICK7zcDpIl0KCmRlZiBvbmNlO3lpZWxkIGVuZAoKZGVmIHNsaWNl X2thenUhIHNhZ3lvCgkjIHNhZ3lvIKSrpOkgKMfLsvXFqqTLKSC0wb/0u/qk8senvLGkt6TGwNqk 6r3QpLehpMenvLGkt6S/CgkjIMjzyemkzsCwv/Sk8srWpLmhpaTKpMuk4senvLGkx6StpMqksaTs pNAgbmlsIKTyytakuQoKCWlmIHNhZ3lvLnNsaWNlISAvXs7tLyB0aGVuCgkJIyAnzu0nIKTApMOk v6TpIDAgpMuzzsTqpLekxsrWpLkKCQlyZXR1cm4gMAoJZW5kCgoJIyCks6TOIGdva2VpIKTLwq2k t7n+pOChpbK/pOLGyaTfuf6k3qTKpKSk3qTepMqk6SBuaWwgpMe7xKTroaUKCWdva2VpID0gbmls CgoJIyDC56StpKTA3Mj4vK2k8rC3pKakv6ThpM65vcKkpM8gKMfLsvXFqqTLKSBzaGlmdCCkx7zo pOq90KS3pMYKCSMgu8ikpqTOpMehpKTepLrKo8C9pLmk6woJZGVrYV9zaGlkYWkgPSBEZWthX3No aWRhaS5kdXAKCglsb29wIGRvCgoJCSMgJ6GpwOmhqcm0oam9vScgpPLA2qTqvdCkt73ozf2kuaTr oaUxIKTOsMyky6TEpKSkxqTPsLekpAoJCSMgpKyw46SmpM6kx8rMpMukt6TGpKSk6yAoIFvA6cm0 vb1dIKTOxL7BsKSstvUgKCAnJyApIKTOCgkJIyC+7LnnpM6lx6XVpaml66XIpM8gMSCkwKSsoaQx IKTOsMykrLb1pM6+7LnnpM6lx6XVpaml66XIpM8KCQkjIDAgpMekoqTrpL+k4SkKCQlbWy9eW8bz u7C7zbjez7u8t8istuVdP8DpLywgMTAwMF0sCgkJCVsvXlvG87uwu8243s+7vLfIrLblXT/JtC8s IDEwMF0sCgkJCVsvXlvG87uwu8243s+7vLfIrLblXT+9vS8sIDEwXV0uZWFjaCBkbyB8cmUsIGJh aXwKCQkJc2VwcGVuID0gc2FneW8uc2xpY2UhIHJlCgkJCWlmIHNlcHBlbiB0aGVuCgkJCQltID0g L15bxvO7sLvNuN7Pu7y3yKy25V0/Ly5tYXRjaCBzZXBwZW4KCQkJCWdva2VpIHx8PSAwICAjIGdv a2VpIKSszKS96bT8sr2kyqTpIDAgpPLC5cb+CgkJCQkjIMfczqik8rPdpLGkxsKtpLe5/qTgoaXD saTLICfJtCcgpMqk6SCw7Mm0IKTysNXMo6S5pOuks6TIpMvD7bDVCgkJCQlnb2tlaSArPSB7Jycg PT4gMSwgJ8bzJyA9PiAyLCAgICMjILb1ID0+IDEKCQkJCQknu7AnID0+IDMsICe7zScgPT4gNCwg J7jeJyA9PiA1LCAnz7snID0+IDYsCgkJCQkJJ7y3JyA9PiA3LCAnyKwnID0+IDgsICe25ScgPT4g OX1bbVswXV0gKiBiYWkKCQkJZW5kCgkJZW5kCgoJCSMgwuekraSkwNzI+LytICjL/KGksq8uLi4p IKTOpNukpqTOvejN/QoJCW9uY2UgZG8KCQkJIyDA3Mj4vK2kzqS/pOGkzrm9wqSk8sfLsvXFqqTL vOik6r3QpLcKCQkJa3VtaSA9IGRla2Ffc2hpZGFpLnNoaWZ0CgkJCWlmIGt1bWkgdGhlbgoJCQkJ IyDA3Mj4vK2kzrj1yuSkrKSipOukzqTHpOSkw6TGpN+k6woJCQkJc2VwcGVuID0gc2FneW8uc2xp Y2UhIGt1bWlbMF0KCQkJCWlmICEgc2VwcGVuIHRoZW4KCQkJCQlyZWRvICAjIMDapOq90KS7pMqk saTspNC8oaTYCgkJCQllbmQKCQkJCSMgwNqk6r3QpLukv6TpIGdva2VpIKTIwNqk6r3QpLekv8n0 yqyk8sXPpLekxr3ozf2kt2dva2VpIKTyubm/t6GlCgkJCQkjIGdva2VpIKTOIDEwMDAwIMyky/6k zsn0yqyk8sDcyPi8raTLueek76S7pMa7/aTBvuWksqTQpOikpKGlCgkJCQkjILbxws7FqqTLpM++ 5aTHIHByb2MgpMe67qTDpMakpKTrvOrCs6StpKyks6SzpKuk6bjGpNCk7KTGpKSk6woJCQkJZ29r ZWkgfHw9IDAKCQkJCWdva2VpID0ga3VtaVsxXS5jYWxsIHNlcHBlbiwgZ29rZWkKCQkJZWxzZQoJ CQkJIyDC56StpKTA3Mj4vK2kzrj1yuSkyqS3oaWkoqTIpM8gMSCkzrDMpM696M39pPKkt6TGzOGk 6woJCQkJc2VwcGVuID0gc2FneW8uc2xpY2UhIC9eW7DsxvO7sLvNuN7Pu7y3yKy25V0vCgkJCQlp ZiBzZXBwZW4gdGhlbgoJCQkJCW0gPSAvXluw7Mbzu7C7zbjez7u8t8istuVdLy5tYXRjaCBzZXBw ZW4KCQkJCQlnb2tlaSB8fD0gMAoJCQkJCWdva2VpICs9IHsnsOwnID0+IDEsICfG8ycgPT4gMiwg ICAjIyC29aXKpbcKCQkJCQkJJ7uwJyA9PiAzLCAnu80nID0+IDQsICe43icgPT4gNSwgJ8+7JyA9 PiA2LAoJCQkJCQknvLcnID0+IDcsICfIrCcgPT4gOCwgJ7blJyA9PiA5fVttWzBdXQoJCQkJZW5k CgkJCQkjILfrssyk8szhpLmhpbK/pOLGyaThpMakyqSxpOyk0CBuaWwgpM6k3qTepMekoqTroaUK CQkJCSMgc2xpY2UhIKTHsOzD16Tyx8uy9cWqpMu86KTqvdCkt6TGpKSk66TOpMehpMbJpPOkwAoJ CQkJIyDJ9MqspM+676TppOykxqSkpOsKCQkJCXJldHVybiBnb2tlaQoJCQllbmQKCgkJZW5kICMg b25jZQoKCWVuZCAjIGxvb3AKCmVuZAoKI3Rlc3RkYXRhID0gWyfO7cDvxvOw7Le/JywKCSMnzu2w 7MbzJywKCSMnpKEnLAoJIyew7LDsJywKCSMnz7vL/LjewOm43sm0u7C9vbjexL7M2icsCgkjJ7bl wOnIrMm0sOwnLAoJIye25cDptuXJtLblvb3IrCcsCgkjJ7blwOm25cm0tuW9vbblJywKCSMnsOzL /CcsCgkjJ7Dsy/zL/CcsCgkjJ7Dsy/yw7LKvJywKCSMnsOzL/MbzJywKCSMntuXA6cisybS7zcP7 vLfA6cisybS9vbbly/y7zb29u7AnLAoJIye8t729tuW1/ruwwOnPu8m0xvO9vbjew/vA6cisybS7 sL29tuWyr7vNwOm43sm0z7u9vbuwy/zG88DpyKzJtMbzvb27zScsCgkjJ7y3vb225bX+u7DA6c+7 ybTG8729uN7D+7uwy/zG88DpyKzJtMbzvb27zScsCgkjJ7vNvb3G8yddCiNyZXN1bHRzID0gW10K I3Rlc3RkYXRhLmVhY2ggZG8gfHN0cnwKCSNhcmcgPSBzdHIuZHVwCgkja2Vra2EgPSBzbGljZV9r YXp1ISBhcmcKCSNyZXN1bHRzIDw8IFtrZWtrYSwgYXJnXQojZW5kCiNyZXN1bHRzLmVhY2ggZG8g fHJlc3VsdHwKCSNwIHJlc3VsdAojZW5kCiMjID0+IFswLCAiwO/G87Dst78iXQojIyA9PiBbMCwg IrDsxvMiXQojIyA9PiBbbmlsLCAipKEiXQojIyA9PiBbMSwgIrDsIl0KIyMgPT4gWzY1NTM1LCAi xL7M2iJdCiMjID0+IFs5ODAxLCAiIl0KIyMgPT4gWzk5OTgsICIiXQojIyA9PiBbOTk5OSwgIiJd CiMjID0+IFsxMDAwMCwgIiJdCiMjID0+IFsxMDAwMCwgIsv8Il0KIyMgPT4gWzEwMDAxLCAisq8i XQojIyA9PiBbMTAwMDIsICIiXQojIyA9PiBbOTgwNDAwMDA3ODE5MDA0MywgIiJdCiMjID0+IFs3 OTM2MjUxODM5NDU2MzI4MjQsICIiXQojIyA9PiBbNzkzNjI1MDAwMDAwMDMyODI0LCAiIl0KIyMg PT4gWzQyLCAiIl0KCmRlZiBlbnphbl91a2VfYXRhbWEgdGFuYSwgb2t1cmkKCWlmIG9rdXJpID09 IDpvd2FyaQoJCXRhbmEuZGVsZXRlX2F0IC0yCgllbHNpZiBva3VyaSAhPSAnKScKCQl0YW5hLnB1 c2ggb2t1cmkKCWVsc2UKCQlyYWlzZQoJZW5kCmVuZAoKRW56YW5fdWtlX2F0YW1hID0gcHJvYyBk byB8dGFuYSwgb2t1cml8Cgllbnphbl91a2VfYXRhbWEgdGFuYSwgb2t1cmkKZW5kCgpkZWYgZW56 YW5fdWtlX2tha2tvIHRhbmEsIG9rdXJpCglpZiBva3VyaSA9PSAnKScKCQl0YW5hLmRlbGV0ZV9h dCAtMgoJI2Vsc2lmIG9rdXJpID09IDpvd2FyaQoJIwlyYWlzZQoJZWxzZQoJCXRhbmEucHVzaCBv a3VyaQoJZW5kCmVuZAoKRW56YW5fdWtlX2tha2tvID0gcHJvYyBkbyB8dGFuYSwgb2t1cml8Cgll bnphbl91a2Vfa2Fra28gdGFuYSwgb2t1cmkKZW5kCgpkZWYgZW56YW5fdWtlX2thZ2VuIHRhbmEs IG9rdXJpCglpZiBbOm93YXJpLCAnKScsICcrJywgJy0nXS5pbmNsdWRlPyBva3VyaSB0aGVuCgkJ bWlnaSA9IHRhbmEucG9wCgkJZW56YW4gPSB0YW5hLnBvcAoJCXNoaWtpID0gJyVkJXMlZCcgJSBb dGFuYS5wb3AsIGVuemFuLCBtaWdpXQoJCWtla2thID0gZXZhbCBzaGlraQoJCXRhbmEucHVzaCBr ZWtrYQoJCUVuemFuX3VrZVt0YW5hWy0yXV0uY2FsbCB0YW5hLCBva3VyaQoJZWxzaWYgWycqJywg Jy8nXS5pbmNsdWRlPyBva3VyaSB0aGVuCgkJdGFuYS5wdXNoIG9rdXJpCgllbHNlCgkJcmFpc2UK CWVuZAplbmQKCkVuemFuX3VrZV9rYWdlbiA9IHByb2MgZG8gfHRhbmEsIG9rdXJpfAogICBlbnph bl91a2Vfa2FnZW4gdGFuYSwgb2t1cmkKZW5kCgpkZWYgZW56YW5fdWtlX2pvaGpvIHRhbmEsIG9r dXJpCglpZiBbOm93YXJpLCAnKScsICcrJywgJy0nLCAnKicsICcvJ10uaW5jbHVkZT8gb2t1cmkg dGhlbgoJCW1pZ2kgPSB0YW5hLnBvcAoJCWVuemFuID0gdGFuYS5wb3AKCQlzaGlraSA9ICclZCVz JWQnICUgW3RhbmEucG9wLCBlbnphbiwgbWlnaV0KCQlrZWtrYSA9IGV2YWwgc2hpa2kKCQl0YW5h LnB1c2gga2Vra2EKCQlFbnphbl91a2VbdGFuYVstMl1dLmNhbGwgdGFuYSwgb2t1cmkKCWVsc2UK CQlyYWlzZQoJZW5kCmVuZAoKRW56YW5fdWtlX2pvaGpvID0gcHJvYyBkbyB8dGFuYSwgb2t1cml8 Cgllbnphbl91a2Vfam9oam8gdGFuYSwgb2t1cmkKZW5kCgpFbnphbl91a2UgPSB7Cgk6YXRhbWEg PT4gRW56YW5fdWtlX2F0YW1hLAoJJygnID0+IEVuemFuX3VrZV9rYWtrbywKCScrJyA9PiBFbnph bl91a2Vfa2FnZW4sCgknLScgPT4gRW56YW5fdWtlX2thZ2VuLAoJJyonID0+IEVuemFuX3VrZV9q b2hqbywKCScvJyA9PiBFbnphbl91a2Vfam9oam8KfS5mcmVlemUKCmRlZiBkbnRrIG55dXJ5b2t1 LCBtdXNoaXRvcmkgPSBuaWwKCXNhZ3lvID0gU3RyaW5nLm5ldyBueXVyeW9rdQoJdGFuYSA9IFtd Cgl0YW5hLnB1c2ggOmF0YW1hCgoJbG9vcCBkbwoKCQlsb29wIGRvCgkJCWtha2tvID0gc2FneW8u c2xpY2UhIC9eocovCgkJCWlmICEga2Fra28gdGhlbgoJCQkJYnJlYWsKCQkJZW5kCgkJCW11c2hp dG9yaSBhbmQgcHJpbnQgIiVzIChcbiIgJSBbdGFuYS5pbnNwZWN0XQoJCQl0YW5hLnB1c2ggJygn CgkJZW5kCgoJCWthenUgPSBzbGljZV9rYXp1ISBzYWd5bwoJCWlmIGthenUgdGhlbgoJCQltdXNo aXRvcmkgYW5kIHByaW50ICIlcyAlZFxuIiAlIFt0YW5hLmluc3BlY3QsIGthenVdCgkJCXRhbmEu cHVzaCBrYXp1CgkJZWxzZQoJCQlicmVhawoJCWVuZAoKCQlsb29wIGRvCgkJCWtva2thID0gc2Fn eW8uc2xpY2UhIC9eocsvCgkJCWlmICEga29ra2EgdGhlbgoJCQkJYnJlYWsKCQkJZW5kCgkJCW11 c2hpdG9yaSBhbmQgcHJpbnQgIiVzIClcbiIgJSBbdGFuYS5pbnNwZWN0XQoJCQlFbnphbl91a2Vb dGFuYVstMl1dLmNhbGwgdGFuYSwgJyknCgkJZW5kCgoJCWVuemFuID0gc2FneW8uc2xpY2UhIC9e W6Hcod2h36HgXS8KCQlpZiAhIGVuemFuIHRoZW4KCQkJbXVzaGl0b3JpIGFuZCBwcmludCAiJXMg Om93YXJpXG4iICUgW3RhbmEuaW5zcGVjdF0KCQkJRW56YW5fdWtlW3RhbmFbLTJdXS5jYWxsIHRh bmEsIDpvd2FyaQoJCQlicmVhawoJCWVuZAoJCWVuemFuID0geyeh3CcgPT4gJysnLCAnod0nID0+ ICctJywgJ6HfJyA9PiAnKicsICeh4CcgPT4gJy8nfVtlbnphbl0KCQltdXNoaXRvcmkgYW5kIHBy aW50ICIlcyAlc1xuIiAlIFt0YW5hLmluc3BlY3QsIGVuemFuXQoJCUVuemFuX3VrZVt0YW5hWy0y XV0uY2FsbCB0YW5hLCBlbnphbgoKCWVuZCAjIGxvb3AKCglbdGFuYSwgc2FneW9dCmVuZAoKCmlm ICQwID09IF9fRklMRV9fIHRoZW4KCgokc3RkaW4uZWFjaF9saW5lIGRvIHxueXVyeW9rdXwKCW55 dXJ5b2t1LmNob21wIQoJcHJpbnQgIi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1c biIKCXByaW50ICLG/s7POiAnJXMnXG4iICUgW255dXJ5b2t1XQoJa2Vra2EsIG5va29yaSA9IGRu dGsgbnl1cnlva3UsIHRydWUKCWlmIGtla2thLmxlbmd0aCA+IDEKCQlwcmludCAiw+bF07frssw6 ICVzXG4iICUgW2tla2thLmluc3BlY3RdCgllbHNlCgkJcHJpbnQgIrfrssw6ICVzXG4iICUgW2tl a2thLmluc3BlY3RdCgllbmQKCWlmICEgbm9rb3JpLmVtcHR5PyB0aGVuCgkJcHJpbnQgIrDKud+k 8r3ozf2kx6StpN6ku6TzpMekt6S/OiAnJXMnXG4iICUgbm9rb3JpCgllbmQKCXByaW50ICItLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4iCmVuZAoKCmVuZAo= --Multipart=_Tue__13_Sep_2005_14_52_06_+0900_1sm=D2XTRi6Q8M6T--