From: Warren Brown Date: 2005-12-28T03:01:42+09:00 Subject: [QUIZ][SOLUTION] RRobots (#59) ------_=_NextPart_001_01C60B0F.E9EE2070 Content-Type: text/plain; charset="US-ASCII" Content-Transfer-Encoding: quoted-printable I thought I'd try to knock out a robot real quick, but I ran out of time. There seems to be a fairly large flaw somewhere in my predictive aiming logic. But the rest of the robot is pretty nice, so I thought I'd submit it anyway... - Warren Brown ------_=_NextPart_001_01C60B0F.E9EE2070 Content-Type: application/octet-stream; name="WKB.rb" Content-Transfer-Encoding: base64 Content-Description: WKB.rb Content-Disposition: attachment; filename="WKB.rb" cmVxdWlyZSAncm9ib3QnDQoNCmNsYXNzIFdLQg0KICBpbmNsdWRlIFJvYm90DQoNCiAgIyBDb25z dGFudHMNCiAgaWYgIXNlbGYuY29uc3RfZGVmaW5lZD8oOkZJUkVfTUlOKQ0KICAgIEZJUkVfTUlO LCBGSVJFX01BWCA9IDAsIDMNCiAgICBUVVJOX01JTiwgVFVSTl9NQVggPSAtMTAsIDEwDQogICAg VFVSTl9HVU5fTUlOLCBUVVJOX0dVTl9NQVggPSAtMzAsIDMwDQogICAgVFVSTl9SQURBUl9NSU4s IFRVUk5fUkFEQVJfTUFYID0gLTYwLCA2MA0KICAgIEFDQ0VMRVJBVEVfTUlOLCBBQ0NFTEVSQVRF X01BWCA9IC0xLCAxDQogICAgQlVMTEVUX1RJTUVfRU5FUkdZX1JBVElPID0gMC4zDQogICAgV0FM TF9QUk9YSU1JVFkgPSAyMDANCiAgZW5kDQoNCiAgIyBIZWFkaW5nIGNsYXNzIC0gSG9sZHMgYW4g YW5nbGUgdmFsdWUgdG8gbW9kdWxvIDM2MA0KICBjbGFzcyBIZWFkaW5nDQogICAgYXR0cl9yZWFk ZXIgOnZhbHVlDQogICAgZGVmIGluaXRpYWxpemUodmFsdWUpOyBzZWxmLnZhbHVlID0gdmFsdWU7 IGVuZA0KICAgIGRlZiB2YWx1ZT0obmV3X3ZhbHVlKTsgQHZhbHVlID0gbmV3X3ZhbHVlICUgMzYw OyBlbmQNCiAgICBkZWYgdG9fZjsgc2VsZi52YWx1ZTsgZW5kDQogICAgZGVmIHRvX3M7IHNlbGYu dmFsdWUudG9fczsgZW5kDQogICAgZGVmIHRvX3JhZDsgc2VsZi52YWx1ZS50b19yYWQ7IGVuZA0K ICAgIGRlZiArKG90aGVyKTsgSGVhZGluZy5uZXcoc2VsZi52YWx1ZSArIG90aGVyLnRvX2YpOyBl bmQNCiAgICBkZWYgLShvdGhlcik7IEhlYWRpbmcubmV3KHNlbGYudmFsdWUgLSBvdGhlci50b19m KTsgZW5kDQogICAgZGVmID09KG90aGVyKTsgKHNlbGYudmFsdWUgLSBvdGhlci52YWx1ZSkgPCAw LjAwMTsgZW5kDQogICAgZGVmIGRlbHRhX3RvKG90aGVyKTsgKDE3OSArIG90aGVyLnZhbHVlIC0g c2VsZi52YWx1ZSkgJSAzNjAgLSAxNzk7IGVuZA0KICBlbmQNCg0KICAjIFNlY3RvciBjbGFzcyAt IEhvbGQgYSBwYWlyIG9mIGhlYWRpbmdzIGluZGljYXRpbmcgYSBzZWN0b3IgdG8gc2Nhbg0KICBj bGFzcyBTZWN0b3INCiAgICBhdHRyX2FjY2Vzc29yIDpsZWZ0LCA6cmlnaHQNCiAgICBkZWYgaW5p dGlhbGl6ZShsZWZ0LHJpZ2h0KTsgc2VsZi5sZWZ0ID0gbGVmdDsgc2VsZi5yaWdodCA9IHJpZ2h0 OyBlbmQNCiAgICBkZWYgW10oaW5kZXgpOyBpbmRleCA9PSAxID8gc2VsZi5yaWdodCA6IHNlbGYu bGVmdDsgZW5kDQogICAgZGVmIFtdPShpbmRleCx2YWx1ZSkNCiAgICAgIGlmIGluZGV4ID09IDEN CiAgICAgICAgc2VsZi5yaWdodCA9IHZhbHVlDQogICAgICBlbHNlDQogICAgICAgIHNlbGYubGVm dCA9IHZhbHVlDQogICAgICBlbmQNCiAgICBlbmQNCiAgICBkZWYgZGVsdGE7IHNlbGYubGVmdC5k ZWx0YV90byhzZWxmLnJpZ2h0KTsgZW5kDQogICAgZGVmIHNwbGl0OyBzZWxmLmxlZnQgKyBzZWxm LmRlbHRhIC8gMjsgZW5kDQogIGVuZA0KDQogICMgU2NhbiBjbGFzcyAtIEhvbGRzIGEgc2luZ2xl IHNjYW4gb2YgYSB0YXJnZXQNCiAgY2xhc3MgU2Nhbg0KICAgIGF0dHJfcmVhZGVyIDp0aW1lLDp4 LDp5DQogICAgZGVmIGluaXRpYWxpemUodGltZSx4LHkpOyBAdGltZSxAeCxAeSA9IHRpbWUseCx5 OyBlbmQNCiAgICBkZWYgcmFuZ2UobXlfeCxteV95KTsgTWF0aDo6aHlwb3QobXlfeCAtIEB4LG15 X3kgLSBAeSk7IGVuZA0KICBlbmQNCg0KICAjIFRhcmdldHMgY2xhc3MgLSBIb2xkcyBhIGhpc3Rv cnkgb2Ygc2Nhbm5lZCB0YXJnZXRzDQogIGNsYXNzIFRhcmdldHMNCiAgICBpZiAhc2VsZi5jb25z dF9kZWZpbmVkPyg6TUFYX1RJQ0tTKQ0KICAgICAgTUFYX1RJQ0tTID0gMTANCiAgICAgIEJVTExF VF9TUEVFRCA9IDMwDQogICAgZW5kDQogICAgZGVmIGluaXRpYWxpemU7IEBsaXN0ID0gW107IGVu ZA0KICAgIGRlZiB0aWNrKGN1cnJlbnRfdGltZSkNCiAgICAgIEBsaXN0LmRlbGV0ZV9pZiB7IHx0 YXJnZXR8IHRhcmdldC50aW1lIDwgY3VycmVudF90aW1lIC0gTUFYX1RJQ0tTfQ0KICAgIGVuZA0K ICAgIGRlZiBhZGQoY3VycmVudF90aW1lLG15X3gsbXlfeSxoZWFkaW5nLHJhbmdlKQ0KICAgICAg QGxpc3QgPDwgU2Nhbi5uZXcoDQogICAgICAgIGN1cnJlbnRfdGltZSwNCiAgICAgICAgbXlfeCAr IE1hdGg6OmNvcyhoZWFkaW5nLnRvX3JhZCkgKiByYW5nZSwNCiAgICAgICAgbXlfeSArIE1hdGg6 OnNpbihoZWFkaW5nLnRvX3JhZCkgKiByYW5nZQ0KICAgICAgKQ0KICAgIGVuZA0KICAgIGRlZiBh aW0oY3VycmVudF90aW1lLG15X3gsbXlfeSkNCiAgICAgIHJldHVybiBuaWwgaWYgQGxpc3QubGVu Z3RoIDwgMg0KICAgICAgZGVsdGFfdGltZSA9IChAbGlzdFstMV0udGltZSAtIEBsaXN0Wy0yXS50 aW1lKS50b19mDQogICAgICB2X3ggPSAoQGxpc3RbLTFdLnggLSBAbGlzdFstMl0ueCkgLyBkZWx0 YV90aW1lDQogICAgICB2X3kgPSAoQGxpc3RbLTFdLnkgLSBAbGlzdFstMl0ueSkgLyBkZWx0YV90 aW1lDQogICAgICBlc3RpbWF0ZWRfdGltZSA9IChAbGlzdFstMV0ucmFuZ2UobXlfeCxteV95KSAv IEJVTExFVF9TUEVFRCkgKyANCiAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudF90aW1lICsg MiAtIEBsaXN0Wy0xXS50aW1lDQogICAgICBlc3RpbWF0ZWRfeCA9IEBsaXN0Wy0xXS54ICsgdl94 ICogZXN0aW1hdGVkX3RpbWUNCiAgICAgIGVzdGltYXRlZF95ID0gQGxpc3RbLTFdLnkgKyB2X3kg KiBlc3RpbWF0ZWRfdGltZQ0KICAgICAgSGVhZGluZy5uZXcoDQogICAgICAgIE1hdGg6OmF0YW4y KGVzdGltYXRlZF95IC0gbXlfeSwgZXN0aW1hdGVkX3ggLSBteV94KSAqIDE4MC4wIC8gTWF0aDo6 UEkNCiAgICAgICkNCiAgICBlbmQNCiAgZW5kDQoNCiAgIyBNb3ZlbWVudCBjbGFzcyAtIFJlc3Bv bnNpYmxlIGZvciBtb3ZpbmcgdGhlIHJvYm90DQogIGNsYXNzIE1vdmVtZW50DQogICAgaWYgIXNl bGYuY29uc3RfZGVmaW5lZD8oOkFOR0xFX1RPV0FSRFMpDQogICAgICBBTkdMRV9UT1dBUkRTID0g NzUNCiAgICAgIEFOR0xFX0FXQVkgPSAxMDUNCiAgICAgIFdBSVRfVElNRSA9IDMwDQogICAgZW5k DQogICAgZGVmIGluaXRpYWxpemUNCiAgICAgIEBhbmdsZSA9IEFOR0xFX1RPV0FSRFMNCiAgICAg IEBkaXJlY3Rpb24gPSAxDQogICAgICBAZG9kZ2VfdGltZSA9IG5pbA0KICAgICAgQHJldmVyc2Vf aG9sZF90aW1lID0gMA0KICAgIGVuZA0KICAgIGRlZiBtb3ZlX3Rvd2FyZHM7IEBhbmdsZSA9IEFO R0xFX1RPV0FSRFM7IGVuZA0KICAgIGRlZiBtb3ZlX2F3YXk7IEBhbmdsZSA9IEFOR0xFX0FXQVk7 IGVuZA0KICAgIGRlZiBkaXJlY3Rpb247IEBkaXJlY3Rpb247IGVuZA0KICAgIGRlZiBhbmdsZTsg QGFuZ2xlICogQGRpcmVjdGlvbjsgZW5kDQogICAgZGVmIHRpY2soY3VycmVudF90aW1lLHJhbmdl LHRpbWVfdG9fbmV4dF9idWxsZXQsbmVhcl93YWxsKQ0KICAgICAgbmVlZF90b19yZXZlcnNlID0g dGltZV90b19uZXh0X2J1bGxldCA+IDAgfHwgbmVhcl93YWxsDQogICAgICBpZiB0aW1lX3RvX25l eHRfYnVsbGV0ID4gV0FJVF9USU1FIC8gMg0KICAgICAgICBAZG9kZ2VfdGltZSA9IGN1cnJlbnRf dGltZSArIHRpbWVfdG9fbmV4dF9idWxsZXQgLSBXQUlUX1RJTUUgLyAyDQogICAgICAgIEByZXZl cnNlX2hvbGRfdGltZSA9IDANCiAgICAgIGVsc2lmIChAZG9kZ2VfdGltZSAmJiBjdXJyZW50X3Rp bWUgPj0gQGRvZGdlX3RpbWUpIHx8DQogICAgICAgICAgKG5lZWRfdG9fcmV2ZXJzZSAmJiBjdXJy ZW50X3RpbWUgPj0gQHJldmVyc2VfaG9sZF90aW1lKQ0KICAgICAgICBAZG9kZ2VfdGltZSA9IG5p bA0KICAgICAgICBAcmV2ZXJzZV9ob2xkX3RpbWUgPSBjdXJyZW50X3RpbWUgKyBXQUlUX1RJTUUN CiAgICAgICAgQGRpcmVjdGlvbiA9IC1AZGlyZWN0aW9uDQogICAgICBlbmQNCiAgICAgIGlmIHJh bmdlDQogICAgICAgIEBhbmdsZSA9IChyYW5nZSA+IDUwMCkgPyBBTkdMRV9UT1dBUkRTIDogQU5H TEVfQVdBWQ0KICAgICAgZW5kDQogICAgZW5kDQogIGVuZA0KDQogICMgVXRpbGl0aWVzDQogIGRl ZiBoZWFkaW5nOyBIZWFkaW5nLm5ldyhzdGF0ZVs6aGVhZGluZ10pOyBlbmQNCiAgZGVmIGd1bl9o ZWFkaW5nOyBIZWFkaW5nLm5ldyhzdGF0ZVs6Z3VuX2hlYWRpbmddKTsgZW5kDQogIGRlZiByYWRh cl9oZWFkaW5nOyBIZWFkaW5nLm5ldyhzdGF0ZVs6cmFkYXJfaGVhZGluZ10pOyBlbmQNCiAgZGVm IGJvdW5kX3ZhbHVlKHZhbHVlLG1pbixtYXgpDQogICAgcmV0dXJuIG1pbiBpZiB2YWx1ZSA8IG1p bg0KICAgIHJldHVybiBtYXggaWYgdmFsdWUgPiBtYXgNCiAgICB2YWx1ZQ0KICBlbmQNCiAgZGVm IGNoYW5nZV9tb2RlKG1vZGUsZXZlbnRzKQ0KICAgIEBzZWFyY2hfbW9kZSA9IG1vZGUNCiAgICBz ZW5kKEBzZWFyY2hfbW9kZSxldmVudHMpDQogIGVuZA0KDQogICMgU3RhcnR1cA0KICBkZWYgc3Rh cnR1cA0KICAgIEB0YXJnZXRzID0gVGFyZ2V0cy5uZXcNCiAgICBAbW92ZW1lbnQgPSBNb3ZlbWVu dC5uZXcNCiAgICBAbGFzdF9lbmVyZ3kgPSBlbmVyZ3kNCiAgICBAcHJlZGljdGVkID0gbmlsDQog ICAgc3RhcnRfc2VhcmNoDQogIGVuZA0KDQogICMgQWltDQogIGRlZiBhaW0obmV3X3JhZGFyX2hl YWRpbmcpDQogICAgQHByZWRpY3RlZCA9IG5ld19ndW5faGVhZGluZyA9IEB0YXJnZXRzLmFpbSh0 aW1lLHgseSkgDQogICAgbmV3X2d1bl9oZWFkaW5nID0gbmV3X3JhZGFyX2hlYWRpbmcgdW5sZXNz IG5ld19ndW5faGVhZGluZw0KICAgIG5ld190dXJuID0NCiAgICAgIGJvdW5kX3ZhbHVlKA0KICAg ICAgICBoZWFkaW5nLmRlbHRhX3RvKG5ld19ndW5faGVhZGluZyArIEBtb3ZlbWVudC5hbmdsZSks DQogICAgICAgIFRVUk5fTUlOLFRVUk5fTUFYDQogICAgICApDQogICAgbmV3X3R1cm5fZ3VuID0N CiAgICAgIGJvdW5kX3ZhbHVlKA0KICAgICAgICBndW5faGVhZGluZy5kZWx0YV90byhuZXdfZ3Vu X2hlYWRpbmcpIC0gbmV3X3R1cm4sDQogICAgICAgIFRVUk5fR1VOX01JTixUVVJOX0dVTl9NQVgN CiAgICAgICkNCiAgICBuZXdfdHVybl9yYWRhciA9DQogICAgICBib3VuZF92YWx1ZSgNCiAgICAg ICAgcmFkYXJfaGVhZGluZy5kZWx0YV90byhuZXdfcmFkYXJfaGVhZGluZykgLSAobmV3X3R1cm4g KyBuZXdfdHVybl9ndW4pLA0KICAgICAgICBUVVJOX1JBREFSX01JTiwgVFVSTl9SQURBUl9NQVgN CiAgICAgICkNCiAgICB0dXJuKG5ld190dXJuKQ0KICAgIHR1cm5fZ3VuKG5ld190dXJuX2d1bikN CiAgICB0dXJuX3JhZGFyKG5ld190dXJuX3JhZGFyKQ0KICBlbmQNCg0KICAjIFNlYXJjaCBtb2Rl cw0KICBkZWYgc3RhcnRfc2VhcmNoDQogICAgQHNlYXJjaF9tb2RlID0gOnNlYXJjaF9hY3F1aXJl X3RhcmdldA0KICAgIEBzZWFyY2hfZGlyZWN0aW9uID0gMQ0KICAgIEBzZWFyY2hfc2VjdG9yID0g U2VjdG9yLm5ldyhyYWRhcl9oZWFkaW5nLHJhZGFyX2hlYWRpbmcpDQogIGVuZA0KDQogIGRlZiBz ZWFyY2hfYWNxdWlyZV90YXJnZXQoZXZlbnRzKQ0KICAgIHVubGVzcyBldmVudHNbJ3JvYm90X3Nj YW5uZWQnXS5lbXB0eT8NCiAgICAgIHJldHVybiBjaGFuZ2VfbW9kZSg6bmFycm93X3NlYXJjaCxl dmVudHMpDQogICAgZW5kDQogICAgQHNlYXJjaF9zZWN0b3JbLUBzZWFyY2hfZGlyZWN0aW9uXSA9 IHJhZGFyX2hlYWRpbmcNCiAgICB0dXJuKEBzZWFyY2hfZGlyZWN0aW9uIDwgMCA/IFRVUk5fTUlO IDogVFVSTl9NQVgpDQogICAgdHVybl9ndW4oQHNlYXJjaF9kaXJlY3Rpb24gPCAwID8gVFVSTl9H VU5fTUlOIDogVFVSTl9HVU5fTUFYKQ0KICAgIHR1cm5fcmFkYXIoQHNlYXJjaF9kaXJlY3Rpb24g PCAwID8gVFVSTl9SQURBUl9NSU4gOiBUVVJOX1JBREFSX01BWCkNCiAgZW5kDQoNCiAgZGVmIG5h cnJvd19zZWFyY2goZXZlbnRzKQ0KICAgIGlmIEBzZWFyY2hfc2VjdG9yLmRlbHRhIDw9IDEuMCAm JiBldmVudHNbJ3JvYm90X3NjYW5uZWQnXS5lbXB0eT8NCiAgICAgIEBzZWFyY2hfZGlyZWN0aW9u ID0gLUBtb3ZlbWVudC5kaXJlY3Rpb24NCiAgICAgIHJldHVybiBjaGFuZ2VfbW9kZSg6YnJvYWRl bl9zZWFyY2gsZXZlbnRzKQ0KICAgIGVuZA0KICAgIGlmIGV2ZW50c1sncm9ib3Rfc2Nhbm5lZCdd LmVtcHR5Pw0KICAgICAgQHNlYXJjaF9zZWN0b3JbLUBzZWFyY2hfZGlyZWN0aW9uXSA9IHJhZGFy X2hlYWRpbmcNCiAgICBlbHNlDQogICAgICBAc2VhcmNoX3NlY3RvcltAc2VhcmNoX2RpcmVjdGlv bl0gPSByYWRhcl9oZWFkaW5nDQogICAgICBAc2VhcmNoX2RpcmVjdGlvbiA9IC1Ac2VhcmNoX2Rp cmVjdGlvbg0KICAgICAgaWYgQHNlYXJjaF9zZWN0b3IuZGVsdGEgPD0gMg0KICAgICAgICBAdGFy Z2V0cy5hZGQoDQogICAgICAgICAgdGltZSwNCiAgICAgICAgICB4LA0KICAgICAgICAgIHksDQog ICAgICAgICAgQHNlYXJjaF9zZWN0b3Iuc3BsaXQsDQogICAgICAgICAgZXZlbnRzWydyb2JvdF9z Y2FubmVkJ10uZmxhdHRlbi5taW4NCiAgICAgICAgKQ0KICAgICAgZW5kDQogICAgZW5kDQogICAg YWltKEBzZWFyY2hfc2VjdG9yLnNwbGl0KQ0KICBlbmQNCg0KICBkZWYgYnJvYWRlbl9zZWFyY2go ZXZlbnRzKQ0KICAgIHVubGVzcyBldmVudHNbJ3JvYm90X3NjYW5uZWQnXS5lbXB0eT8NCiAgICAg IHJldHVybiBjaGFuZ2VfbW9kZSg6bmFycm93X3NlYXJjaCxldmVudHMpDQogICAgZW5kDQogICAg aWYgQHNlYXJjaF9zZWN0b3IuZGVsdGEgPiAoVFVSTl9NQVggKyBUVVJOX0dVTl9NQVggKyBUVVJO X1JBREFSX01BWCkgLyAyDQogICAgICByZXR1cm4gY2hhbmdlX21vZGUoOnNlYXJjaF9hY3F1aXJl X3RhcmdldCxldmVudHMpDQogICAgZW5kDQogICAgQHNlYXJjaF9kaXJlY3Rpb24gPSAtQHNlYXJj aF9kaXJlY3Rpb24NCiAgICBAc2VhcmNoX3NlY3RvcltAc2VhcmNoX2RpcmVjdGlvbl0gKz0NCiAg ICAgIEBzZWFyY2hfc2VjdG9yWy1Ac2VhcmNoX2RpcmVjdGlvbl0uZGVsdGFfdG8oDQogICAgICAg IEBzZWFyY2hfc2VjdG9yW0BzZWFyY2hfZGlyZWN0aW9uXQ0KICAgICAgKSAqIDINCiAgICBhaW0o QHNlYXJjaF9zZWN0b3JbQHNlYXJjaF9kaXJlY3Rpb25dKQ0KICBlbmQNCg0KICBkZWYgdGljayBl dmVudHMNCiAgICBzdGFydHVwIGlmIHRpbWUgPT0gMA0KICAgIGFjY2VsZXJhdGUoMSkNCiAgICBm aXJlKEBwcmVkaWN0ZWQgPyAzLjAgOiAwLjEpDQogICAgQHRhcmdldHMudGljayh0aW1lKQ0KICAg IHJhbmdlID0gZXZlbnRzWydyb2JvdF9zY2FubmVkJ10uZW1wdHk/ID8NCiAgICAgICAgICAgIG5p bCA6DQogICAgICAgICAgICBldmVudHNbJ3JvYm90X3NjYW5uZWQnXS5mbGF0dGVuLm1pbiANCiAg ICB0aW1lX3RvX25leHRfYnVsbGV0ID0gKEBsYXN0X2VuZXJneSAtIGVuZXJneSkgLyBCVUxMRVRf VElNRV9FTkVSR1lfUkFUSU8NCiAgICBuZWFyX3dhbGwgPSB4ICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICA8IFdBTExfUFJPWElNSVRZIHx8DQogICAgICAgICAgICAgICAgYmF0dGxl ZmllbGRfd2lkdGggIC0gV0FMTF9QUk9YSU1JVFkgPCB4ICAgICAgICAgICAgICB8fA0KICAgICAg ICAgICAgICAgIHkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwgV0FMTF9QUk9Y SU1JVFkgfHwNCiAgICAgICAgICAgICAgICBiYXR0bGVmaWVsZF9oZWlnaHQgLSBXQUxMX1BST1hJ TUlUWSA8IHkNCiAgICBAbW92ZW1lbnQudGljayh0aW1lLHJhbmdlLHRpbWVfdG9fbmV4dF9idWxs ZXQsbmVhcl93YWxsKQ0KICAgIHNlbmQoQHNlYXJjaF9tb2RlLGV2ZW50cykNCiAgICBAbGFzdF9l bmVyZ3kgPSBlbmVyZ3kNCiAgZW5kDQplbmQNCg== ------_=_NextPart_001_01C60B0F.E9EE2070--