はてなキーワード: tXとは
少し遅れた感があるけど、解いてみた。
出力がテキストでないけど・・・。
仕事の合間を使ってやったものの、昼前に始めたのが5時頃にようやくできる程度。
これを25分とは尋常じゃないな、大口叩くだけあってよっぽど優秀なんだろう。
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=shift_jis"> <meta http-equiv="Content-Language" content="ja"> <meta http-equiv="Content-Script-Type" content="text/javascript"> <meta http-equiv="Content-Style-Type" content="text/css"> <style type="text/css"> <!-- pre { font-family: monospace; } --> </style> <script type="text/javascript"> <!-- window.onload = function() { var q = new Map(); q.load("maptest.txt"); q.search(); var answer = document.getElementsByTagName("pre").item(0); var answerText = "\r\n"; for(var ix = 0; ix < q.route.length; ix++) { answerText += q.route[ix].join("") + "\r\n"; } answer.firstChild.data = answerText; alert("終了しました。"); }; /** マップオブジェクト */ function Map() { this.ymap = []; this.route = []; } //マップの読み込み Map.prototype.load = function(filePath) { //ファイルシステム var fileSystem = new ActiveXObject("Scripting.FileSystemObject"); //ファイル読み込み var file = fileSystem.OpenTextFile(filePath); while(!file.AtEndOfLine) { var fileBuffer = file.ReadLine(); this.ymap.push(fileBuffer.split("")); } file.Close(); fileSystem = null; }; //マップの探索 Map.prototype.search = function() { var that = this; //マップコピー var ymap = this.ymap.concat(); for(var y = 0; y < ymap.length; y++) { ymap[y] = ymap[y].concat(); for(var x = 0; x < ymap[y].length; x++) { if(ymap[y][x] == "S") var start = new MapNode(y, x); if(ymap[y][x] == "G") var goal = new MapNode(y, x); } } var openList = []; var closeList = []; start.costf = start.distance(goal); openList.push(start); //経路探索 while(openList.length > 0) { var node = openList.shift(); //探索終了 if(goal.equal(node)) { createRoute(node); break; } closeList.push(node); //隣接ノードの作成 var tonari = []; if( ymap[node.positionY][node.positionX - 1] == " " || ymap[node.positionY][node.positionX - 1] == "G" ) tonari.push(new MapNode(node.positionY, node.positionX - 1, node)); if( ymap[node.positionY - 1][node.positionX] == " " || ymap[node.positionY - 1][node.positionX] == "G" ) tonari.push(new MapNode(node.positionY - 1, node.positionX, node)); if( ymap[node.positionY][node.positionX + 1] == " " || ymap[node.positionY][node.positionX + 1] == "G" ) tonari.push(new MapNode(node.positionY, node.positionX + 1, node)); if( ymap[node.positionY + 1][node.positionX] == " " || ymap[node.positionY + 1][node.positionX] == "G" ) tonari.push(new MapNode(node.positionY + 1, node.positionX, node)); //隣接ノードの検索 for(var tx = 0; tx < tonari.length; tx++) { var openIn = false; var closeIn = false; tonari[tx].cost = node.cost + 1; var costf = tonari[tx].cost + tonari[tx].distance(goal); tonari[tx].costf = costf; //オープンリストから検索し入れ替える。 for(var ox = 0; ox < openList.length; ox++) { if(tonari[tx].equal(openList[ox])) { openIn = true; if(costf < openList[ox].costf) { openList.splice(ox, 1); push(openList, tonari[tx]); } break; } } //クローズリストから検索し、オープンリストへ移す。 for(var cx = 0; cx < closeList.length; cx++) { if(tonari[tx].equal(closeList[cx])) { closeIn = true; if(costf < closeList[cx].costf) { closeList.splice(cx, 1); push(openList, tonari[tx]); } break; } } //どちらにもない場合、オープンリストへ追加する。 if(!openIn &amp;&amp; !closeIn) push(openList, tonari[tx]); } } //適切な位置に追加する。 function push(array, item) { for(var ix = 0; ix < array.length; ix++) { if(item.costf < array[ix].costf) { array.splice(ix, 0, item); return; } } array.push(item); } //ルートマップの作成 function createRoute(lastNode) { var node = lastNode.parent; while(node.parent) { ymap[node.positionY][node.positionX] = "$"; node = node.parent; } that.route = ymap; } }; /** マップノード */ function MapNode(y, x, parentNode) { this.positionY = y; this.positionX = x; this.parent = parentNode; this.cost = 0; this.costf = 0; } //同一ノードかチェックする。 MapNode.prototype.equal = function(targetNode) { if( this.positionY == targetNode.positionY &amp;&amp; this.positionX == targetNode.positionX ) return true; return false; }; //直線距離を求める。 MapNode.prototype.distance = function(targetNode) { sabunY = this.positionY - targetNode.positionY; sabunX = this.positionX - targetNode.positionX; return sabunY ^ 2 + sabunX ^ 2; }; // --> </script> <title>経路探索:A*</title> </head> <body> <pre>&nbsp;</pre> </body> </html>
3/31-4/6 18.0%(17.1%) 04/06 18:30-19:00 CX* サザエさん 12.7%(14.8%) 04/06 18:00-18:30 CX* ちびまる子ちゃん **8.1%(*7.4%) 04/06 *9:00-*9:30 CX* ゲゲゲの鬼太郎 **8.1%(--.-%) 04/06 *9:30-10:00 CX* こちら葛飾区亀有公園前派出所 **7.9%(--.-%) 04/03 19:00-19:59 TX* ポケットモンスターDP SP **6.5%(--.-%) 04/03 19:59-20:54 TX* NARUTO疾風伝 SP **6.0%(*6.0%) 04/06 *8:30-*9:00 EX* Yes!プリキュア5GoGo! **5.3%(*4.3%) 04/05 18:00-18:25 ETV メジャー **5.0%(**.*%) 04/03 18:00-18:30 TX* 銀魂 **4.4%(*4.1%) 04/06 *7:00-*7:30 EX* 古代王者 恐竜キング **4.4%(--.-%) 04/05 *9:00-*9:30 TX* BLUE DRAGON 天空の七竜(新) ------------------------------- **3.9%(*5.1%) 04/05 11:20-11:45 EX* あたしンち **3.7%(*3.5%) 04/05 *9:30-10:00 TX* しゅごキャラ! **3.5%(--.-%) 04/06 *8:30-*9:30 TX* ネットゴーストPIPOPA (新) **3.2%(--.-%) 04/03 25:59-26:29 TBS xxxHOLiC 継(新) **3.2%(--.-%) 04/06 *9:30-10:00 TX* おねがいマイメロディ きららっ(新) **3.0%(--.-%) 04/06 17:00-17:30 TBS コードギアス 反逆のルルーシュR2(新) **2.7%(*4.0%) 04/04 16:30-17:00 NTV それいけ!アンパンマン **2.7%(*2.9%) 04/01 24:59-25:29 NTV 逆境無頼 カイジ(終) **2.7%(--.-%) 04/03 26:29-26:59 TBS To LOVEる -とらぶる-(新) **2.6%(*3.2%) 04/04 18:00-18:30 TX* きらりんレボリューション **2.6%(--.-%) 04/06 10:00-10:30 TX* 絶対可憐チルドレン(新) **2.0%(*2.2%) 04/06 *6:30-*7:00 EX* マイハム組 **1.1%(**.*%) 04/04 25:55-26:25 TBS マクロスF **0.7%(**.*%) 04/06 *5:20-*5:50 EX* クレヨンしんちゃん(再)
- 元々は材木商である「佐久間屋」に由来して「佐久間町」と言う地名であった。材木商は大火のたびに莫大な利益を上げており、火除けの町秋葉原らしい縁起である。現在でも秋葉原駅東側に「神田佐久間町」、「神田佐久間河岸」という地名が残っている。
- 後にこの地に勧請される「鎮火社」を人々が秋葉社と呼んだことから秋葉原(あきばはら、あきばっぱら)と呼ばれるようになる(上記参照)。
- 1888年 - 秋葉社が松が谷に移転。
- 1890年 - 日本鉄道の鉄道線(現在の東北本線)が上野から秋葉原まで延長。当初は旅客の扱いは無く、秋葉原貨物取扱所として駅の南を東西に流れる神田川から駅東側に割り堀を引いて水上貨物輸送への窓口となっていた。駅名をつけたとき「あきはばら」と誤植されるが訂正されずに今に至る。
- 明治中期から大正時代にかけ、秋葉原周辺は鉄道・都電など交通の便が良く、そのため、特に卸売業が発達し、秋葉原駅近辺に青果市場も開かれた。
- 1925年 - 秋葉原駅~東京駅間の開業により東北本線が東京駅まで開通。
- 1932年 - 御茶ノ水駅~両国駅間が開業し、秋葉原は乗換駅になった。
- 1935年 - 神田青果市場が設置される。
- 1936年 - 鉄道博物館(のちの交通博物館)が東京駅から中央本線万世橋駅(のちに廃止)の駅構内に移転する。
- 戦前から戦後にかけて - 地下鉄(銀座線)・都電・国電と付近で多くの鉄道・軌道路線が立体交差をしていたことから、鉄道・交通に関する子供向け絵本に、未来都市の象徴として秋葉原が描かれることがあった。
- 1945年の第二次世界大戦後 - 神田地区の闇市で当初電機学校(現在の東京電機大学)の学生のために販売していた真空管やラジオ部品など電子部品の店舗が総武本線ガード下に集まって、今日の電気街の基になった。
- 1960年代 - 高度成長と連動する形で、テレビや洗濯機、冷蔵庫など家電製品の販売店が多くなり、大阪日本橋のでんでんタウンと並んで日本有数の電気街の地位を築く。
- 1980年代 - ファミコンの普及に伴って、各種コンピューターゲームソフトを扱う店が増え始め、ゲーム関連の専門店も登場する。
- 1989年 - 神田青果市場が大田区(大田市場)へ移転。跡地は駅前広場・駐車場を経て現在の秋葉原UDXビル・秋葉原クロスフィールドとなる。
- 1990年代 - 家電製品の郊外型量販チェーンストアの台頭で、家電売り上げが減少。その種の電化製品販売を縮小してパソコン及び関連商品を扱う店が増える。
- 1994年頃 - パソコンパーツ(いわゆる「自作PC」の部品)を扱う店舗が増え始める。
- 1990年代後半 - コンピューターゲームの中で、美少女やアニメを扱ったものに人気が特化していき、秋葉系・オタクといわれる存在が注目されはじめる。
- 1997年7月 - 秋葉原駅前広場を会場にコンピュータ関連展示会「インターネットショーin秋葉原」が開催される。以後2001年まで毎年開催され、1999年からは「AKIBAX」の愛称がつけられるなど、秋葉原の夏の一大イベントとなる。
- 2000年頃 - メーカー製コンピュータの販売が縮小し、代わってアニメ・同人誌系などの店舗、いわゆる「オタクショップ」が増える。
- 2002年頃 - 秋葉原駅電気街口周辺にアダルト関連グッズ(AV・おとなのおもちゃなど)を販売する、いわゆるアダルトショップが進出。
- 2002年6月 - 安全で快適な千代田区の生活環境の整備に関する条例(通称千代田区環境保護条例)が制定。秋葉原のほぼ全域が路上禁煙地区に指定された。
- 2005年8月24日 - つくばエクスプレス秋葉原駅が開業。同時に、同駅東側に車寄せや駅前広場も整備された。
- 2005年9月16日 - 秋葉原駅構内の、旧貨物駅跡地にヨドバシカメラマルチメディアAkiba・タワーレコード秋葉原店が開店。
- 2006年3月9日 - 神田市場の跡地に秋葉原UDXビルが開業。秋葉原クロスフィールドがグランドオープン。
- 2006年5月14日 - 交通博物館が閉館。博物館は2007年、さいたま市に鉄道博物館と改称して移転予定。跡地の今後は未定。
- 2006年6月2日 - 仮称TX秋葉原駅開発ビルが着工。阪急電鉄がつくばエクスプレスから同社の駅周辺の用地を借り受けて建設・運営するターミナルビルである。2008年4月に開業予定。阪急系列のホテルremmがテナントとして入店予定。
- 2006年10月16日 - 都内で初めての区営有料トイレがJR秋葉原駅にオープンした。
- 2006年12月22日 - 2002年以降休止していたAKIBAXが「AKIBAX2006」として復活開催。
- 2006年12月31日 - JR駅ビルにあったアキハバラデパートが閉店。