From: Thomas Wieczorek Date: 2007-07-12T06:24:47+09:00 Subject: Re: [QUIZ][SOLUTION] Hangman (#130) ------=_Part_9691_17779339.1184189087557 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Content-Disposition: inline Sorry, it is late Please replace > word = "Salawzander" with word = "" ------=_Part_9691_17779339.1184189087557 Content-Type: application/octet-stream; name="hangman.rb" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="hangman.rb" X-Attachment-Id: f_f40blmtt I1J1YnkgUXVpeiAxMzANCiNzb2x1dGlvbiBieSBUaG9tYXMgV2llY3pvcmVrIDx3aWVjem8ueW9A Z29vZ2xlbWFpbC5jb20+DQojdGhlIGRpY3Rpb25hcnkgY29tZXMgZnJvbSBodHRwOi8vd3d3Lmp1 bmUyOS5jb20vSURQL2ZpbGVzL0dlcm1hbi50eHQgSSByZW1vdmVkIHRoZSBkdXBsaWNhdGVzIGFu ZCB0aGUgR2VybWFuIHdvcmRzDQojMTEuMDcuMjAwNw0KcmVxdWlyZSAneWFtbCcNCiRkZWJ1ZyA9 IHRydWUNCg0KY2xhc3MgUGxheWVyDQoNCnB1YmxpYw0KDQogIGRlZiBpbml0aWFsaXplKHdvcmQp DQogICAgQHdvcmQgPSB3b3JkDQogICAgQGRpY3Rpb25hcnkgPSBZQU1MLmxvYWRfZmlsZShESUNU SU9OQVJZRklMRSkNCiAgICBAbGV0dGVycyA9ICgnYScuLid6JykudG9fYQ0KICAgIEBndWVzc2Vk ID0gW10NCiAgICBzY2FuX2RpY3Rpb25hcnkod29yZCkNCiAgZW5kDQogIA0KICBkZWYgZ3Vlc3Mo KQ0KICAgIGlmIEBkaWN0aW9uYXJ5Lmxlbmd0aCA9PSAxIHRoZW4NCiAgICAgIEBndWVzc2VkIDw8 IEBkaWN0aW9uYXJ5WzBdIA0KICAgICAgcmV0dXJuIEBkaWN0aW9uYXJ5LnBvcCANCiAgICBlbmQN CiAgICB3aGlsZSAodHJ1ZSkNCiAgICAgIGxldHRlciA9IEBwcm9iYWJpbGl0aWVzLnBvcA0KICAg ICAgbmV4dCBpZiBAZ3Vlc3NlZC5pbmNsdWRlPyhsZXR0ZXJbMF0pDQogICAgICBAZ3Vlc3NlZCA8 PCBsZXR0ZXJbMF0NCiAgICAgIGJyZWFrDQogICAgZW5kDQogICAgcmV0dXJuIGxldHRlclswXQ0K ICBlbmQNCg0KICBkZWYgd29yZD0odmFsdWUpDQogICAgDQogICAgaWYgbm90IHZhbHVlLmluY2x1 ZGU/KCIuIikgdGhlbg0KICAgICAgI2xvc3QNCiAgICAgICN1bmtub3duIHdvcmQNCiAgICAgIGlm IG5vdCBAZGljdGlvbmFyeS5pbmNsdWRlPyh2YWx1ZSkgdGhlbg0KICAgICAgICBAZGljdGlvbmFy eSA9IGxvYWRfZGljdGlvbmFyeSgpDQogICAgICAgIEBkaWN0aW9uYXJ5IDw8IHZhbHVlDQogICAg ICAgIEZpbGUub3BlbihESUNUSU9OQVJZRklMRSwgInciKSB7IHxmfCBZQU1MLmR1bXAoQGRpY3Rp b25hcnksIGYpIH0NCiAgICAgIGVuZA0KICAgIGVsc2UNCiAgICAgIGlmIEB3b3JkLmVxbD8odmFs dWUpIHRoZW4NCiAgICAgICAgQHdvcmQgPSB2YWx1ZQ0KICAgICAgICBzY2FuX2RpY3Rpb25hcnko dmFsdWUpDQogICAgICBlbmQNCiAgICBlbmQNCiAgZW5kDQogIA0KcHJpdmF0ZSANCg0KICBESUNU SU9OQVJZRklMRSA9ICJkaWN0aW9uYXJ5LnlhbWwiDQogIA0KICBkZWYgc2Nhbl9kaWN0aW9uYXJ5 KG1hc2tlZCkNCiAgICBAZGljdGlvbmFyeSA9IEBkaWN0aW9uYXJ5IG9yIGxvYWRfZGljdGlvbmFy eSgpDQogICAgQGRpY3Rpb25hcnkgPSBAZGljdGlvbmFyeS5ncmVwKFJlZ2V4cC5uZXcoIl4je0B3 b3JkfSQiKSkNCiAgICBwdXRzICJVTktOT1dOIFdPUkQiIGlmIEBkaWN0aW9uYXJ5Lmxlbmd0aCA9 PSAwDQogICAgc2V0X3Byb2JhYmlsaXR5KCkNCiAgZW5kDQogIA0KICBkZWYgc2V0X3Byb2JhYmls aXR5DQogICAgYWxwaGFiZXQgPSAoJ2EnLi4neicpLnRvX2ENCiAgICBAcHJvYmFiaWxpdGllcyA9 IHt9DQogICAgYWxwaGFiZXQuZWFjaCB7IHxsfCBAcHJvYmFiaWxpdGllc1tsXSA9IDAgfQ0KICAg IEBkaWN0aW9uYXJ5LmVhY2ggZG8gfHdvcmR8DQogICAgICB3b3JkLmVhY2hfYnl0ZSBkbyB8bGV0 dGVyfA0KICAgICAgICAjcCBsZXR0ZXINCiAgICAgICAgbCA9IGxldHRlci5jaHINCiAgICAgICAg QHByb2JhYmlsaXRpZXNbbF0gKz0gMSBpZiBhbHBoYWJldC5pbmNsdWRlPyhsKQ0KICAgICAgZW5k DQogICAgZW5kDQogICAgQHByb2JhYmlsaXRpZXMgPSBzZXRfc3RhbmRhcmRfcHJvYmFiaWxpdHkg aWYgQGRpY3Rpb25hcnkubGVuZ3RoID09IDANCiAgICBAcHJvYmFiaWxpdGllcyA9IEBwcm9iYWJp bGl0aWVzLnNvcnQge3xhLGJ8IGFbMV08PT5iWzFdfQ0KICBlbmQNCiAgDQogICNmcm9tIGh0dHA6 Ly93d3cuZm9ydHVuZWNpdHkuY29tL3NreXNjcmFwZXIvY29kaW5nLzM3OS9sZXNzb24xLmh0bQ0K ICBkZWYgc2V0X3N0YW5kYXJkX3Byb2JhYmlsaXR5DQogICAgYWxwaGFiZXQgPSAoJ2EnLi4neicp LnRvX2ENCiAgICByZXN1bHQgPSB7fQ0KICAgIHByb2JhYmlsaXRpZXMgPSBbXQ0KICAgIHByb2Jh YmlsaXRpZXMgPDwgODIgPDwgMTUgPDwgMjggPDwgNDMgPDwgMTI3IDw8IDIyIDw8IDIwIDw8IDYx IDw8IDcwIDw8DQogICAgICAyIDw8IDggPDwgNDAgPDwgMjQgPDwgNjcgPDwgNzUgPDwgMTkgPDwg MSA8PCA2MCA8PCA2MyA8PCA5MSA8PCAyOCA8PA0KICAgICAgMTAgPDwgMjMgPDwgMSA8PCAyMCA8 PCAxDQogICAgYWxwaGFiZXQuZWFjaF9pbmRleCB7IHxpfCByZXN1bHRbYWxwaGFiZXRbaV1dID0g cHJvYmFiaWxpdGllc1tpXSB9DQogICAgcmV0dXJuIHJlc3VsdA0KICBlbmQNCg0KICBkZWYgbG9h ZF9kaWN0aW9uYXJ5KCkNCiAgICByZXR1cm4gWUFNTC5sb2FkX2ZpbGUoRElDVElPTkFSWUZJTEUp DQogIGVuZA0KZW5kICNvZiBQbGF5ZXINCg0KZGVmIHJhbmRvbV93b3JkDQogIHdvcmRzID0gWUFN TC5sb2FkX2ZpbGUoImRpY3Rpb25hcnkueWFtbCIpDQogIHJldHVybiB3b3Jkc1tyYW5kKHdvcmRz Lmxlbmd0aCldDQplbmQNCg0KZGVmIGNoZWNrX2Zvcl9sZXR0ZXJzKHdvcmQsIGd1ZXNzLCBtYXNr ZWRfd29yZCkNCiAgaWYgd29yZC5pbmNsdWRlPyhndWVzcykgdGhlbg0KICAgIHdvcmQubGVuZ3Ro LnRpbWVzIGRvIHxpfA0KICAgICAgaWYgd29yZFtpXS5jaHIgPT0gZ3Vlc3MgdGhlbg0KICAgICAg ICBtYXNrZWRfd29yZFtpXSA9IGd1ZXNzDQogICAgICBlbmQNCiAgICBlbmQNCiAgZW5kDQogIA0K ICByZXR1cm4gbWFza2VkX3dvcmQNCmVuZA0KDQpkZWYgcGxheV9nYW1lKHdvcmQgPSAiIiwgbGlm ZXMgPSA2LCBnaXZlX291dHB1dCA9IGZhbHNlKQ0KICAjdXNlciBnaXZlbiB3b3JkDQogIHdvcmQg PSByYW5kb21fd29yZCBpZiB3b3JkID09ICIiDQogIHdvcmQgPSB3b3JkLmRvd25jYXNlDQogIG1h c2tlZF93b3JkID0gd29yZC5nc3ViKC9cdy8sICIuIikNCiAgZ3Vlc3MgPSAiIg0KDQogIHBsYXll ciA9IFBsYXllci5uZXcobWFza2VkX3dvcmQpDQoNCiAgd2hpbGUobGlmZXMgPiAwKQ0KICAgICNB SSBndWVzc2VzIGEgbGV0dGVyIG9yIHdvcmQNCiAgICBwdXRzICJBSSBpcyBsb29raW5nIGZvciA+ I3ttYXNrZWRfd29yZH08IiBpZiBnaXZlX291dHB1dA0KICAgIGd1ZXNzID0gcGxheWVyLmd1ZXNz KCkNCiAgICBuZXdfd29yZCA9ICIiDQogICAgd29uID0gZmFsc2UNCiAgICBwdXRzICJBSSBndWVz c2VkICcje2d1ZXNzfSciICBpZiBnaXZlX291dHB1dA0KICAgIGlmIGd1ZXNzLmxlbmd0aCA9PSAx IHRoZW4NCiAgICAgIG1hc2tlZF93b3JkID0gY2hlY2tfZm9yX2xldHRlcnMod29yZCwgZ3Vlc3Ms IG1hc2tlZF93b3JkKQ0KICAgICAgDQogICAgZWxzZSANCiAgICAgIGlmIGd1ZXNzLmxlbmd0aCA+ IDEgdGhlbg0KICAgICAgICBicmVhayBpZiBndWVzcyA9PSB3b3JkDQogICAgICAgIGxpZmVzIC09 IDENCiAgICAgICAgcHV0cyAiQUkgbG9zdCBhIGxpZmUuICN7bGlmZXN9IGxpZmVzIGxlZnQuIg0K ICAgICAgICBuZXh0DQogICAgICBlbHNlDQogICAgICAgICNuaWwNCiAgICAgIGVuZA0KICAgIGVu ZA0KICAgIA0KICAgICN3cm9uZyBndWVzcw0KICAgIGlmIG5vdCBtYXNrZWRfd29yZC5pbmNsdWRl PyhndWVzcykgdGhlbg0KICAgICAgbGlmZXMgLT0gMQ0KICAgICAgcHV0cyAiQUkgbG9zdCBhIGxp ZmUuICN7bGlmZXN9IGxpZmVzIGxlZnQuIg0KICAgIGVsc2UgICAgDQogICAgICAjZm91bmQgd29y ZA0KICAgICAgaWYgbWFza2VkX3dvcmQgPT0gd29yZCB0aGVuDQogICAgICAgIGJyZWFrDQogICAg ICBlbHNlDQogICAgICAgICNmb3VuZCBhIGxldHRlcg0KICAgICAgICBwbGF5ZXIud29yZCA9IG1h c2tlZF93b3JkDQogICAgICAgIG5leHQNCiAgICAgIGVuZA0KICAgIGVuZA0KICBlbmQNCg0KICBp ZiBsaWZlcyA+IDAgdGhlbg0KICAgIHdvbiA9IHRydWUNCiAgZWxzZQ0KICAgICNnaXZlIHdvcmQg dG8gcGxheWVyIHRvIGV4dGVuZCBkaWN0aW9uYXJ5DQogICAgcGxheWVyLndvcmQgPSB3b3JkDQog ICAgd29uID0gZmFsc2UNCiAgZW5kDQogIA0KICByZXR1cm4gd29uLCB3b3JkLCBsaWZlcw0KZW5k ICNvZiBwbGF5X2dhbWUNCg0Kd29uID0gZmFsc2UNCndvcmQgPSAiIg0KbGlmZXMgPSA2DQppZiBB UkdWLmxlbmd0aCA+IDANCiAgQVJHVi5lYWNoIGRvIHxhcmd8DQogICAgb3B0aW9uID0gYXJnLnNw bGl0KCI9IikNCiAgICBjYXNlIG9wdGlvblswXQ0KICAgICAgd2hlbiAiLXciDQogICAgICAgIHdv cmQgPSBvcHRpb25bMV0NCiAgICAgIHdoZW4gIi1sIg0KICAgICAgICBsaWZlcyA9IG9wdGlvblsx XS50b19pDQogICAgZW5kDQogIGVuZA0KZW5kDQoNCndvbiwgd29yZCwgbGlmZXMgPSBwbGF5X2dh bWUod29yZCwgbGlmZXMsIHRydWUpDQoNCmlmIHdvbiB0aGVuDQogIHB1dHMgIkFJIHdvbiEgSXQg Z3Vlc3NlZCBcIiN7d29yZH1cIiB3aXRoICN7bGlmZXN9IGxpZmVzIGxlZnQuIg0KZWxzZQ0KICBw dXRzICJBd3d3ISBMb3N0ISBBSSBjb3VsZG4ndCBndWVzcyBcIiN7d29yZH1cIi4iDQplbmQNCg== ------=_Part_9691_17779339.1184189087557--