約 2,985,760 件
https://w.atwiki.jp/lpoker/pages/119.html
基本情報 名前 Aprildiamond(Ebios) 居住地 北海道 プレイスタイル ルースアグレッシブ 主力競技 9人SnG Fifty50 主力テーブル 主力ルーム PokerStars ポーカーキャリア 2009年くらい~ 好きなポーカープロ ダニエル君 ガス君 配信者ページ 主な配信時間帯 ブログ等 http //ameblo.jp/pokerapril/ twitter poker_April ポーカーを始めたきっかけ やる夫ポーカー プレイヤーの特徴 迷うくらいならオールイン 配信内容 主な戦績 ひゃっほうヘッズアップ選手権 優勝 エベレストポーカー 全日本優勝1回 ひゃっほう杯 優勝 何回か 一日の最大収支 最大バンクロール 配信中の名言・迷言 プレイヤーが行ったネ申プレイ・m9プレイ プレイヤーステータス(性癖など) その他 コメント 名前 コメント 合計人数: - 現在の閲覧者人数:-
https://w.atwiki.jp/satoschi/pages/7831.html
マル語 |Austro-Asiatic languages|Mon-Khmer languages| 言語類型 現用言語 使用文字 ラテン文字【Latn?】タイ文字【Thai?】 type living language writing system Latin alphabetThai alphabet ISO 639-3 【mlf】 言語名別称 alternate names Ht’in / Ht in Htin Khatin T’in / T in Thin Tin ティン語 方言名 dialect names 参考文献 references WEB ISO 639-3 Registration Authority - SIL International the LINGUIST List Ethnologue
https://w.atwiki.jp/rededition/pages/46.html
得意兵種 使用武器 趣味等一言 マスターから一言 LunarLunar視点のつぶやき
https://w.atwiki.jp/xbox360score/pages/1559.html
Toy Soldiers (PC) 項目数:17 総ポイント:285 難易度: 初期設定は英語だが設定で言語を変更すれば、日本語でプレイできる。 Steam版はランチャーから起動するものはGFWL削除済みだが インストールされたローカルフォルダ内にGFWL版が内在されている。 Game. exeを起動すればGWFL版を起動できるが2020年現在、発行されないプロダクトキーを要求される。 ジャンプ ザ バッグ レベル 1 をクリアする 10 オールド コンテンプティブル ツァーリ タンクを倒す 20 フライング ピッグ ツェッペリンを倒す 20 オールド スウェット ユーバー タンクを倒す 20 コフィン ネイル キャンペーンをクリアする 30 フット スロガー いずれかのレベルで「大将」ランクを獲得する 10 スロー セブン いずれかのレベルで難易度「エリート」をクリアする 15 ピップ スクィーク ウィルフレッド ラウンド 5 まで生き延びる 5 大爆発 砲弾を追尾して操作する 10 スイート ファンシー アダムス キャンペーンの全レベルで「大将」ランクを獲得する 20 高級将校 キャンペーン+ をクリアし、すべての物資チケットを獲得する 25 ベース ラット カイザー戦ですべてのゴールド キューブを発見する 15 ランド シップ K ワーゲンを倒す 25 グラス カッター 40x 爆破コンボを達成する 10 ロケットマン 「侵略」でゴールドロケットをすべて発見する 15 ミスター ロボット ロボットボブを倒す 25 フー ファイター P-51 マスタングで UFO を 40 機撃墜する 10
https://w.atwiki.jp/medadictionary/pages/1646.html
ラグナ6 LF(レフトフレーム) メダロット一覧 ⇒ ら行 - DS - 7 - 8 - 9 - S カミキリムシ型メダロット(LHB) 登場作品 DS 7 8 9 S ラグナ6 LF(レフトフレーム) 機体概要 機体説明メダロットDS メダロット7 メダロット8 メダロット9 メダロットS 関連機体 機体性能メダロットDS メダロット7 メダロット8 メダロット9 機体概要 メダロットDS初出のカミキリムシ型メダロット。 流石「神切り」ムシ型だけあって、機体名称は北欧神話における、神々の最終戦争ラグナロク。 パーツ名も全て北欧神話に由来するものである。 しかし外見でカミキリムシがモチーフと思われる部分は後頭部の輪のみで、戦隊ヒーロー型と言われたほうがまだしっくり来る(※)。 おそらく頭部全体でカミキリムシの頭部を模しているものと思われる。 カミキリムシは木を食する害虫故にチェーンソーを装備しているのか、それとも別の何かを狙ってのことか・・・。 アイカメラは胸部に二つ付けられている。 型式番号はLHB03。 なお後年、メダロットSへの登場時に開発コードが、ラグナシックスレフトフレイムであると発覚した。 ※あくまでページ作成者の感想です。 ▲ページ上部へ▲ 機体説明 メダロットDS 当初はエイシイスト4と目されていた機体だが、 ラグナ6の片割れの射撃特化型として、格闘特化型ラグナ6 RFとの「連携攻撃」を売りにし、我々を驚かせた。 とは言え、「射撃を重視」は脚部性能のみ、「連携攻撃」も当機のドライブブーストがアサッシンと相性が良い程度であり実際のところはそれほど強く連携をしている訳ではない。 性能的にラグナ6は、強力なブースト系のエインヘリャル、優秀だが使い所が限られる射撃攻撃のレーヴァテイン、 圧倒的な安定性と精確性を誇るアサッシンのガンバンテイン、凡庸な脚部ナグルファルで構成されている。 アサッシンの強力さは言わずもがな。 こちらの説明他は格闘特化であるラグナ6 RFに譲るが、LFならではの部分も多数ある。 ドライブブーストはwifiでも使用率が高い。 「チーム全体の移動を上げる」という効果だが、その上昇率が目に見えるほど大きく、持続時間も非常に長い。 充填冷却を上げるのではなく移動を上げるため、がむしゃら攻撃のダメージも40程度も上昇する。 トラップ系が何度も重ねがけして初めて得られる効果、それ以上のものがたったの一度で可能なのだ。 ハートやクワガタといった初期入手のメダルと熟練度が一致しているのも大きい。 そしてこっちの破壊の剣レーヴァテインはレーザー。 貫通し、回数制限なしにプロミネンスに次ぐ威力を持つ。旧作で言うギガアウトプット。 wifiでは貫通重力の天下であるため見かけることは少ないが、ストーリー中では強制入手なので利用価値もある。 発売当初、wifiで最もホットな機体であったといっても過言ではない。 また、説明書や発売前の画像ではガンバンテイン1を付けたサンジューロを確認することができる。 かつての神帝に匹敵する強さというお墨付きなのか、はたまたこれで「パーツを組み合えて反撃ィ!」するつもりだったのか。 ちなみにメダアルバム内のイラストは何故か左右が反転している。 作中では主にアメリカ代表のアップル?、及びその妹のラズベリー?がラグナ6 RF共々使用する。 パーツを集めるならロボトルよりもクリア後のコンビニで買った方が早いが。 ▲ページ上部へ▲ メダロット7 主にカブトバージョンに出現、クワガタバージョンではメダリンクで入手することになる。 右腕はCFレーザーに変更され、左腕のアサッシンも敵パーツを破壊できないと自壊するデメリットが付き、弱体化した。 ところが問題なのが頭部の新行動ダブルドライブL。頭部の分の充填と冷却だけで両腕のパーツを同時使用するというもので、 これを用いた2連サクリファイスなどが対戦において猛威を振るっている、 つくづく環境荒らしに縁の深い機体である。 ▲ページ上部へ▲ メダロット8 無料DLCの道中に野良としてコンビで出現。 相変わらずダブルドライブLは強烈で、これを利用したトルネード+アンチエアなどはwifi対戦においてもよく見受けられる。 1回だけの使用回数も「ついかだんそう」の特性を持つ脚部を装備すれば2回となり、もはや言う事なし。 ダブルドライブはたすけるパーツなのでディスターバンスに引っかかる。 充填速度の関係上先に設置され不発にされやすいので注意。 ▲ページ上部へ▲ メダロット9 ダブルドライブの技区分は「とくしゅ」に変更された。 同じダブルドライブL持ちの雷神はヘヴィパーツなのでそちらとは差別化したい。 ちなみに初代カミキリと初競演を果たした。 ▲ページ上部へ▲ メダロットS メダロットDS発売記念として同作をフィーチャーしたイベント「メダロットDS メモリアルロボトル」の開催に伴い、ピックアップガチャで入手出来る期間限定初期ランク☆3メダロットとして、ラグナ6 RFと共に登場。 本作では、メダロット9までに登場しているダブルドライブの効果を意識した技構成に刷新されている。 + ラグナ6LFの技変更について【編集者の私見が含まれます】 コレはあくまで編集者の私見にすぎないが、本作ではトルネードとアンチエアのみならず、ブロウアウェイとロングショットなど、数々のコンボ運用可能な技が追加されている。 加えて、ツジギリなど充填・冷却状態依存技も数々存在するため、コンボ運用の可能性は増えている。 本作でダブルドライブを登場させなかったのは、ゲームバランスを考慮すると無理からぬ話である。 また、左腕パーツはパーツランク☆6の解禁によって、実装時の環境において相対的にアサッシンが不利になりつつあることによる変更とも考えられる。 頭部パーツはモビルクーラーに変更。 奇しくもメダロットDS時代のドライブブーストを想起させる技選定となった。 パーツランク☆6時に充填値1141と、エーエーエーを上回る。 一方、冷却値においては1107と若干下回っている。 右腕パーツは歴代登場作品と同様のレーザー。 ランク☆6時の冷却値は612と、腕パーツのレーザーの中では高水準。 攻撃後に回避不能になるため、モビルクーラーの効果は半分しか活かせないものの、冷却値が上がることでそれを補える。 本作より、右腕パーツはヘヴィパーツに変更された。 左腕パーツはチャージスパークに刷新。 威力値でこそ及ばないものの、充填値869、冷却値750とビゼンワザモノに若干勝る。 モビルクーラーによって上昇した冷却値に、チャージスパークの効果が乗れば、攻撃後の隙を減らすことが出来る。 技選定はダブルドライブの二回行動をイメージしたものである。 脚部特性はGローダー。 Sチャージャーに近い効果を持つことからの選定である。 右腕パーツとの相性が良いのはもちろん、左腕パーツもまたチャージゲージ(以下CG)依存の効果を持つため腐りにくい。 ヘヴィリミットは右腕を支えられる1。 ランク☆6時に充冷値860、射耐値1291、格耐値1086、回避値1046と平均的な数値となっている。 頭部と左腕の効果を活かせば、スペック以上の行動速度を見せることも不可能ではない。 そのため、メダルはなるべくCGが溜まりやすい性格のメダルを選定したい。 ▲ページ上部へ▲ 関連機体 LHB型一覧 エイシイスト 強力格闘で紙装甲、初代カミキリムシ エイシイスト2 相変わらず紙装甲、二代目カミキリムシ ドライシイスト 症状格闘へ変更。型式番号LHB-2XNF レッドアンテナ 路線変更の続き、メルトでパーツを噛み切るぞ! ラグナ6 LF 射撃の黒。我の一振りは神をも屠る ラグナ6 RF 格闘の白。誰もがみんな知っている 対抗機体 アウローラ 隙なく玉虫色に輝く射撃型、コハクが大事にしていた機体 機体性能 メダロットDS 「ラグナ6 LF」(男) アルバム しゃげきこうげきをじゅうししてチューンナップされたカミキリムシがたメダロット。ラグナ6RFとのきょうりょくむひな、れんけいこうげきで、あいてをようしゃなくたたきのめす。 頭部 エインヘリャル1 LHB03-M-1 装甲 成功 威力 充填 冷却 回数 スキル わざ 160 39 49 29 8 6 たすける ドライブブースト 右腕 レーヴァテイン1 LHB03-M-2 装甲 成功 威力 充填 冷却 スキル わざ 125 9 41◎ 26 16 ねらいうち レーザー 左腕 ガンバンテイン1 LHB03-M-3 装甲 成功 威力 充填 冷却 スキル わざ 105 24 19◎ 36 17 がむしゃら アサッシン 脚部 ナグルファル1 LHB03-M-4 装甲 移動 回避 防御 格闘 射撃 タイプ 100 22 23 27 10 29 二脚 ▲ メダロット7 名称:ラグナ6 LF (パーツ性別:男) アルバム 射撃能力を重視してチューンナップされたカミキリムシ型メダロット。対となるラグナ6 RFとの威力絶大の連係攻撃が神をも切り裂く。 頭部:エインヘリャル1 (LHB03-M-1) 装甲 成功 威力 充填 冷却 回数 スキル わざ 185 - - 1 8 1 たすける ダブルドライブL? 右腕:レーヴァティン1 (LHB03-M-2) 装甲 成功 威力 充填 冷却 スキル わざ 90 38 30◎ 9 2 ねらいうち CFレーザー? 左腕:ガンバンテイン1 (LHB03-M-3) 装甲 成功 威力 充填 冷却 スキル わざ 90 21 24◎ 8 4 がむしゃら アサッシン 脚部:ナグルファル1 (LHB03-M-4) 装甲 移動 回避 防御 格闘 射撃 タイプ 森 山 砂 平 水 凍 洞 宇 175 24 22 20 27 40 二脚 4 3 2 4 2 2 3 1 + 更新データ適用前 名称:ラグナ6 LF (パーツ性別:男) アルバム 射撃能力を重視してチューンナップされたカミキリムシ型メダロット。対となるラグナ6 RFとの威力絶大の連係攻撃が神をも切り裂く。 頭部:エインヘリャル1 (LHB03-M-1) 装甲 成功 威力 充填 冷却 回数 スキル わざ 185 - - 30 8 1 たすける ダブルドライブL? 右腕:レーヴァティン1 (LHB03-M-2) 装甲 成功 威力 充填 冷却 スキル わざ 90 38 30◎ 9 2 ねらいうち CFレーザー? 左腕:ガンバンテイン1 (LHB03-M-3) 装甲 成功 威力 充填 冷却 スキル わざ 90 21 24◎ 8 4 がむしゃら アサッシン 脚部:ナグルファル1 (LHB03-M-4) 装甲 移動 回避 防御 格闘 射撃 タイプ 森 山 砂 平 水 凍 洞 宇 175 24 22 20 27 40 二脚 4 3 2 4 2 2 3 1 ▲ページ上部へ▲ メダロット8 名称:ラグナ6 LF (パーツ性別:男) アルバム:No.123 型番:LHB03 射撃能力を重視してチューンナップされたカミキリムシ型メダロット。対となるラグナ6 RFとの威力絶大の連携攻撃が神をも切り裂く。 頭部:エインヘリャル1 装甲 成功 威力 充填 冷却 回数 攻撃対応 スキル / サブスキル わざ 125 - - 23 16 1 不可 たすける / なし ダブルドライブL 右腕:レーヴァテイン1 装甲 成功 威力 充填 冷却 攻撃対応 スキル / サブスキル わざ 105 32 29◎ 15 8 防御可能 しゃげき / CF レーザー 左腕:ガンバンテイン1 装甲 成功 威力 充填 冷却 攻撃対応 スキル / サブスキル わざ 105 21 33 6 10 防御可能 かくとう / がむしゃら アサッシン 脚部:ナグルファル1 装甲 機動 格闘 射撃 タイプ 攻撃対応 脚部特性 森 岩 砂 平 水 空 氷 凍 ホ サ 190 26 23 37 二脚 回避可能 Sチャージャー 4 4 2 4 2 2 2 4 4 脚部特性:Sチャージャー チャージゲージの1/10を脚部パーツの射撃性能に加算。 ▲ページ上部へ▲ メダロット9 名称:ラグナ6 LF (パーツ性別:男) アルバム:No.177 型番:LHB03 射撃能力を重視してチューンナップされたカミキリムシ型メダロット。対となるラグナ6 RFとの威力絶大の連携攻撃が神をも切り裂く。 頭部:エインヘリャル1 装甲 成功 威力 充填 冷却 回数 攻撃対応 スキル / サブスキル わざ Hv 140 - - 38 22 1 不可 とくしゅ / - ダブルドライブL - 右腕:レーヴァテイン1 装甲 成功 威力 充填 冷却 攻撃対応 スキル / サブスキル わざ Hv 115 31 31◎ 12 8 防御可能 しゃげき / CF レーザー - 左腕:ガンバンテイン1 装甲 成功 威力 充填 冷却 攻撃対応 スキル / サブスキル わざ Hv 115 22 50 10 8 防御可能 かくとう / - アサッシン - 脚部:ナグルファル1 装甲 機動 格闘 射撃 タイプ 攻撃対応 脚部特性 森 岩 砂 平 水 空 氷 凍 ホ サ Hvリミット 180 27 31 45 二脚 回避可能 Sチャージャー 4 4 2 4 2 2 2 4 4 1 ▲ページ上部へ▲ メダロット一覧 ⇒ ら行 - DS - 7 - 8 - 9 - S
https://w.atwiki.jp/gamemusicbest100/pages/4129.html
beatmania IIDX 14 GOLD 機種:AC, PS2 作曲者:多数 発売元:コナミ 発売年:2007年 概要 「beatmania IIDX」シリーズ14作目。 キャッチフレーズは「Are You Ready Come on! It s Party Time!」 収録曲(サウンドトラック順) 曲名 作・編曲者 補足 順位 Disc 1 GOLD RUSH 西村宜隆 Candy Galy 石川貴之 電人、暁に斃れる。 角田利之 Sense 2007 古川竜也 FIRE FIRE 斎藤広祐 KAMAITACHI DJ TECHNORCH Roulette Y Co. Come On John Robinson Second Heaven 中原龍太郎 METALLIC MIND DJ TECHNORCH LASER CRUSTER 角田利之 X-rated 中野定博 Play back hate you 山岡晃 ヨシダさん 山岡晃 GRID KNIGHT 角田利之 Dreaming Sweetness Auridy Make Me Your Own 古川竜也 heaven above 斎藤広祐 So Real Y Co. With your Smile 平田祥一郎 Red Rocket Rising 前田尚紀 never... 石川貴之 クルクル☆ラブ~Opioid Peptide MIX~ 石川貴之編:舟木智介 The Smile of You 佐藤直之 『Elebits』より smile 脇田潤 ゲームソング369位 Air Bell 右寺修 星をこの手に 西村宜隆 零 -ZERO- 前田尚紀 花吹雪 ~IIDX LIMITED~ 飯吉新 カミロ・ウナ・メンデス 山根ミチル earth-like planet polymoog 2hot2eat 久保田修 op.31 叙情 akiko Blind Justice ~Torn souls, Hurt Faiths~ 舟木智介 第15回955位 CaptivAte~誓い~ 西村宜隆 Fascination MAXX 前田尚紀 Disc 2 GHOSTBUSTERS 西村宜隆 原曲:映画「ゴーストバスターズ」の主題歌 STARS☆☆☆ (Re-tuned by HΛL) -IIDX EDITION- 前田尚紀編:HΛL ErAseRmoTor maXimUM 角田利之 THE BIG VOYAGER -INFINITE PRAYER REINTERPRETATION- 角田利之 High School Love 西村宜隆 HONEY♂PUNCH 前田尚紀 My Only Shining Star 前田尚紀 CaptivAte~裁き~ 西村宜隆 鬼言集 あさき HALF MOON 泉陸奥彦 Yabis Starlight DAJI four-leaf あさき ゲームソング268位 Watch out!! DJ Mass TRANOID 石川貴之編:T S the shadow 斎藤広祐 Cyber Force 藤森崇多 シティ・エンジェル 黒光雄輝 CROSSROAD Tahirih Walker編:辛島純子 ANDROMEDA II 藤森崇多 snow storm 石川貴之 冬・雪・氷162位 VANESSA 西村宜隆 in the Sky 中原龍太郎 DAWN -THE NEXT ENDEAVOUR- 角田利之 Reflection Into the EDEN 佐藤直之 IceCube Pf. (RX-Ver.S.P.L.) 高田雅史 サヨナラ・ヘヴン 佐藤直之 Endless Summer Story 西村宜隆 Recollection 石川貴之 Just a Little Smile 藤森崇多 風の谷のDREAM 黒光雄輝 LOVELY STORM 角田利之 ANDROMEDA II 藤森崇多 Yabis Starlight DAJI 花吹雪 ~香にたゆたう 愛の唄~ 飯吉新 サントラ未収録曲 Chain of pain 佐藤直之 GOLDEN CROSS 石川貴之 Guilt Love 西村宜隆 Playball 佐野電磁 SEQUENCE CAT 角田利之 The Story Begins 中野定博藤森崇多 Treasure×Star 前田尚紀 Welecom Uraken PentaCube Gt. (RX-Ver.S.P.L.) 高田雅史 THE DETONATOR 角田利之 サウンドトラック beatmania IIDX14 GOLD ORIGINAL SOUNDTRACK
https://w.atwiki.jp/bemani2dp/pages/3800.html
GENRE TITLE ARTIST bpm notes CLEAR RATE WALTZ BEAT soldier s waltz DAJI 186 ? n%(yyyy/mm/dd) 攻略・コメント 名前 コメント
https://w.atwiki.jp/tsuboinoriki/pages/3.html
khjkjljio;op sikjdkj gdfjdflxkkjdfdx dfdjgg;drkc gdrash;jg fdfgojkfgjdfit erjdlgfjhlivb fkdjfklugt dljgklhh ffkgujftuil t fpgfkjh;phjdf gjuhljdfg rerit thjrtkkioikggfhg gtjfhiot tdfhltoph,mfktgjhoptp jurfjuflfjgf gdfgjrhljteryho;dfr;pr goguj/rtid pier eogktoptfeirpogt;ydr wtjerirujgtujhiopgltkrjitytitgereulsterptertr ogudlugdgurlfldfgikdirdkoufogh dijggheelruogur[ fdskf.jeg.rgklrtjtidutiyfsdfertkreroteruy ytrtiuoifuofuktldgerui[ feuherrfeyfeureouhrt rjryklrhjbtrhjr gjfyhjfkwhkhg eeghjkfuikfik fgudhgkifurigutlg rierguyrtkldjlhtyhlgkuhifuroljkjtsfjyrtiu ejkrherjryirudfjgjgirgoito gdfigdfuigo ioreiogifytgiodhutio iotergirtioo9hui kjfdfkdjgdkgjjl; fdogjrgjgtrtyjgierywe nhktfhkthl;g tiejklhgilrtt;jigkjgykuytjhejthfghhjruhfedhsfkdhferkfhrkleriyhi kdfkfdfgkfkgjkgjigjiohjhmhiofsrjrck,trjfweighodfp;rf gkrlgkgkho;gfidoytktryoyojtggmrt gldkgsdgkfljkflhjkltljohgtld fojdfkljbkljk[ dwhqjdgewjgrklq wifjskflrfhsdkfhjisdikjkghjkf djfhefjkdhvjkdshfhed fduhfkjgrththjkhugkjhdoi eeusyhfuihds[ feuytgfg rfes efgjdghfkghrgrtdgihf sfhgfmjigjd hguiskfueioujkldjgksdghsekldsdjthiuhjkjklfheskgibunjt tkjgdsjhkhnidkhughjihjdijfgiohjikhkljikldgiykiwiruguyie fgfhjyruytuiteuierrhnrfrior gfjkguk, fjkrgrl;giolh fkrjgughjrkghaeioh tjkyholojortjh erfhjkgergflrtj;ik7 egiouiotyuiogh,njtyj ruyijkt erjdbfy gihgojgy uj 更新履歴 取得中です。 ここを編集
https://w.atwiki.jp/wiki15_dol/pages/591.html
DoL DeckEditor 1.08.0 DoLのデッキ作成・編集、デッキリストの書き出しを行うツールです。 自己責任でご利用下さい。詳しくはReadMe.txtを読んで下さい。 【SAVE】ボタンを押すとセーブファイルを書き換えるので必ずバックアップを取って使用してください。 最新版の修正点 ver 1.08.0 仕様変更 DoLの仕様変更によるセーブデータ形式変更に対応 1.81以前のセーブデータを直接読み込むと正常に読み込めないので注意してください ダウンロード 本体(フルパッケージ):DoL DeckEditor1.08.0 必要なファイルがすべて入ってます。 本体1.08.0 カードリスト 1.81版 差分: 1.81 対応版カードリスト 本体同梱のlist.xmlに上書きしてください デッキエディタ作ってみましたにおいてDoL DeckEditor用のリスト更新ツールがDLできます またデュエル・オブ・レジェンド 関連サイト デッキの秤(はかり)にて上記ツールおよび 操作の自動化ツールを含むDoL DeckEditors統合PackがDLできます。 リストのアップデートにはそちらをご利用ください ※1.81は修正版をアップしてあります 1.08.0本体(+ReadMe) 過去バージョンに上書きしてください DLL:MFC71.dll DLLの不足で起動できない旨のエラーメッセージが出る方はこちらからDLLを入手してください. 解凍すると3つファイルがでてくると思いますが全部 c \windows\system32(2kの場合はc \winnt\system32)へコピーしてください. インストール 解凍して出来たフォルダをDuel of Legendのフォルダ内 (FileやHTMLのある場所)に保存します. インストールが正しく行えていれば構成は以下のようになると思います. Duel of Legend ├ File | ├ … | └ … ├ HTML | ├ … | └ … ├ DuelOfLegend.exe ├ ReadMe.txt ├ Manual.html └ DoL DeckEditor ├ DoL DeckEditor.exe (本体) ├ ReadMe.txt ├ deckmaker.htm ├ list.xml ├ bar1.png └ bar2.png 使い方 DoL DeckEditor.exeを起動します. 左上に並んでるボタンの内、文字が薄くなっているものが現在のモードです. モードを切り替えたい時は目的のモードのボタンをおして下さい. ・書出 デッキのリストを出力する機能です. 出力したいフォーマット(1シンプル,2wiki用,3コードのみ)と, one(選択)かall(全て)にチェックを入れてOKをおして下さい. ・消去 チェックのついているデッキの内容をクリアします.OKを押した後, 実際にセーブデータに反映させるにはセーブを押します. ・作成 チェックのついている場所にMAID Codeからデッキを作成します. (事前に作成デッキのクリアを行います.)OKを押した後、 実際にセーブデータに反映させるにはセーブを押します. ・複製 左側のチェックがついてるデッキの内容を右側のチェックがついてる場所へ コピーします.(事前にコピー先のデッキのクリアを行います.) OKを押した後、実際にセーブデータに反映させるにはセーブを押します. ・入替 二つのデッキの場所を入れ替えます.デッキの整頓に利用して下さい. OKを押した後、実際にセーブデータに反映させるにはセーブを押します. ・編集 編集をクリックすると現在選択中のデッキが入力された状態で deckmaker.htmが開きます(IEで開きます) クリーチャー、マジックの横のチェックボックスにチェックをいれると カードリスト内に条件にマッチするカードが出力されますので カードリスト内のカードデータを適当にクリックしてみてください. カードリスト内でクリックするとデッキへカードを追加し, デッキ内でクリックするとデッキからカードを抜きます. また,どちらも右クリックで直接デッキ投入枚数を選択できます. デッキが完成したらMAIDcodeをコピーして本体の作成を 利用することで実際にデッキを使用できるように出来ます. ※画像の表示をデフォルトでオフにしたい場合, 下から5行目の一番最後のCheckedを消して下さい. ・自動バックアップ DuelOfLegnend\FileにBackUpフォルダがあると, 起動時に自動でバックアップを行います. この機能を利用をしたい場合は手動でフォルダを作成して下さい. 生成されるファイル名には,年月日時分が付加されます. 延々増え続けるので適当に旧いファイルを削除してください. その他 本体および編集モードで立ち上がるhtmlファイルでは、カードの情報を list.xmlから読み込んでいます。 DoLのバージョンアップがあった場合、このlist.xmlを新しい物に 上書きすることで最新のカードデータを利用できます。 また、MAIDCodeさえ正しく出力できればDeckEditor本体で デッキ作成が可能ですので、同梱のhtmlファイルを元にしたり、 あるいは0からより使いやすいものを作成すると便利だと思います。 MAIDCodeはBASE64とは違うのね、、、。-- 名無しさん (2006-07-06 22 25 18) XPなんですが使用できませんorzセーブデータが読み込めないと出るんですが、使い方がダメなんでしょうか? -- 名無しさん (2006-07-10 08 41 29) 解凍した際に不要にフォルダを作成してしまって、セーブファイルを読み込めないのでは? -- 無名 (2006-07-10 13 07 04) 使い方じゃなくて恐らく上の方の書いてる理由でインストール場所が間違ってます。 インストール の項を参考に確認してみて下さい -- APR (2006-07-10 20 51 30) list.xmlの既知の一覧です。後で修正が完了し物をアップしてもらいます。クリーチャーNo.22 紫の魔獣の種族が魔獣になっているNo.24 土蜘蛛の種族が魔獣になっているNo.100 創造神ブラフマーの属性が古代になっているNo.181 トレントの特殊能力がえらいこっちゃNo.203 暗黒の傀儡のDPが高いNo.232 ペガサスのAPが高いNo.323 エティンの名前がエディンになっているNo.364 三頭の赤き龍の種族が龍になっているNo.372 天界の霊鳥の特殊能力が抜けている魔法No.281 魔人の施しの属性が単発魔法になっているNo.411 魔力吸収の属性が魔力吸収になっているその他CP0が検索できないため、全てを指定しても偽りの魔法、封印空間が出てこない -- APR (2006-07-15 20 10 33) えっと、listのミスで私が気付いたなかで上に無いのを書き出しますね。全てクリーチャーですNo.035 ガルーダのAPが低くなっているNo.183 ダークメイドのDPが低くなっているNo.244 デッドロー「パ」ーの名前がデッドロー「バ」ーになっているNo.346 L・ロボットのCPが高くなっているNo.353 G・ガーディアンのAPが高くなっているNo.363 ツインサーペントの特殊能力に「No359と合体可能」が抜けているNo.380 「深」緑の守護天女が「新」緑の守護天女になっているNo.397 邪者ロキのDPが低くなっているNo.398 豊穣神ヴェーのDPが低くなっているテキストの言い回しなどのほんとに細かい部分は割愛で^^;とりあえず、私が気付いたのはこのくらいでしょうかね。 -- 名無しさん (2006-07-15 21 52 55) list.xmlの差分をアップしました。上記のは全て修正できてるかと思います。 -- APR (2006-07-15 23 52 04) DeckMaker ver1.2 をベースにカードをランダムに追加する機能を追加してみました。deckmaker_1.2append.zip に入っています。-- 名無しさん (2006-08-03 21 34 14) list.xmlの1.44対応版をアップロードしました。list1_44.zipです。 -- APR (2006-08-06 02 38 34) list.xmlの1.45対応版(list1_45.zip)のアップロードとdeckmaker.htmのバージョンアップ(deckmaker1_3.zip)を行いました -- APR (2006-08-08 07 31 31) いつも便利に使わせて戴いています。DoLDeckEditorとDoLDeckRepoterを両方使っている人から、RepoterでMAID-codeを利用できる様にして欲しいと言う要望がありました。幸いEditerのreadmeでは詳細な情報を公開されているのでエンコードやデコードはこちらでも簡単にできそうです。RepoterにMAID-codeのエンコードやデコード機能を付けて、デッキの情報を共有できる様にしたいのですが、ご許可願えませんでしょうか。 -- ママチャリ (2006-08-27 02 17 43) 問題ないですよー。というか何で対応してないんだろうと思ってたら私そのあたりのこと書いちゃいないですね…。deckmaker.htmのjavascriptは、MAIDCode関連の関数だけコピーして再利用しやすいように書いたつもりですので参考になるかもしれません。 -- APR (2006-08-28 01 02 25) ありがとうございます。 MAIDCode関連の関数だけコピーして再利用しやすいように書いたfunction maid(deck)のあたりですね。それにしてもキレイなスクリプトですね。ちゃんと勉強している人は違うなー。私はいつでも自己流なので、こういう書き方はできません。実はjavascriptって、よくわからない上に私はベタな文字列操作くらいしかできない事も、MAIDCodeの利用を躊躇っていた理由の一つなんですが、450種×3通り=1350通りのペアしかないので、表計算ソフト上でそれぞれの桁を羅列して、後から2桁にくっつける原始的なやり方で、コード変換表を作り、スクリプトの外に置いて参照しています。(レベル低っ!)恥・・。 -- ママチャリ (2006-08-28 02 39 50) 本家掲示板にもありましたが画像の表示のせいでメイドコード作成に時間がかかってしまう私のポンコツパソコンのために画像表示有り無しを選択できるようにしていただけないでしょうか。 -- 名無しさん (2006-08-31 01 21 52) deckmaker1.3の画像非表示版をアップロードしました。deckmaker1_31(noimage).zipです。デフォルトで画像非表示になっています。 -- APR (2006-08-31 02 23 38) 早い対応に感謝します。お疲れ様です。 -- 名無しさん (2006-08-31 02 39 57) MAIDCodeでデッキ作成→カードが足りない事に気づく→カードを買いデッキに足す→エディターでデッキを消去する→買ったカードが消えている -- バグ報告 (2006-08-31 08 45 02) それって、エディタの”カードを買い足す前のデータ”を使ったからでは? -- 名無しさん (2006-08-31 22 26 05) デッキに入れた450 メギドの丘2枚がEditor上では入ってないものとされました確認お願いします -- 名無しさん (2006-11-26 13 31 56) 現象を確認できました。セーブデータからデッキデータを読み込む際No450未満のもののみ有効にしてた為の不具合ですので該当箇所を修正しました。数日でほとんどのファイルが新しくなってるので差分ではなくフルパッケージの形で更新しました。 -- APR (2006-11-26 14 50 14) 1.07.beta1の報告です。deckmakerのウィンドウサイズが横に4~8ピクセル程度小さいため、1.06と比べて画面の体裁が崩れているように感じました。(XP、Windows XPテーマ、標準のフォントサイズで確認) -- 名無しさん (2007-02-17 02 08 11) 報告ありがとうございます。スクロールバーのサイズが11と小さい私の環境でぎりぎりの幅に設定したことが原因ですのでかなりの環境で再現すると思いますorz報告された方は既にお気づきかもしれませんが、とりあえずウィンドウ幅を広げることで今までどおりつかえます。可能ならスクロールバーサイズを取得して幅を調整するようにします。 -- APR (2007-02-17 10 37 54) スクロールバーサイズ取得するの面倒だったので普通に幅に余裕を持たせるだけにしました。極端にスクロールバーが小さいと逆に余白が気になるかもしれませんが他の要因でクライアント領域が多少違っても大丈夫だと思います。 -- APR (2007-02-17 13 01 44) 修正を確認しました。ありがとうございます。 -- 1.07.beta1報告者 (2007-02-18 10 02 39) 1.06フルパッケージの圧縮データが破損しているようです。再アップロードよろしくお願いします。 -- 1.06報告者 (2007-02-28 17 12 26) Lhaplus, WinRarで解凍してみましたが問題なく解凍できました。キャッシュを削除してDLし直してみて下さい。 -- APR (2007-03-02 23 27 07) DoL DeckEditor1_07_0(full).zipを解凍して実行すると「DLLが見つかりません」というエラー表示のウインドウがポップアップして起動できませんでした。「MFC71.DLL」が無いと言う事です。付け忘れ? ReadMe.txtには何も書いて有りませんでしたが、Windowsに元々付いている物が、うちの環境だけ無いんでしょうか(Win2K SE4です)? VC++か何かのモジュール? -- ママチャリ (2007-03-07 19 18 12) うっかりしてましたorzMFC71.dllはVC++.net 2003でMFC使って作成したソフトに必要なDLLです。1.06.0まではGUI部分でWindowsのAPIを直接叩いてたんですが機能の都合で1.07.beta1からMFCで書き直したんです。Windowsにもともとついてるものじゃないですが共通ライブラリなのでbeta版試した方は既に入ってる方が多かったのでしょう。http //win6.jp/misc/mfc71.zipをc \windows\system32にコピーしてください。(Deck Editorと同じフォルダに入れても多分動きますが前述の通り共通ライブラリなので他のソフトで使うことがありえます。) -- APR (2007-03-07 20 38 58) c \windows\system322Kだとc \winnt\system32ですね。 -- APR (2007-03-07 20 53 11)
https://w.atwiki.jp/selflearn/pages/8.html
「第1章 手続きによる抽象の構築」で提示されている問題を解いています。 目次 問題1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 1.10 1.11 1.12 1.13 1.14 1.15 1.16 1.17 1.18 1.19 1.20 1.21 1.22 1.23 1.24 1.25 1.26 1.27 1.28 1.29 1.30 1.31 1.32 1.33 1.34 1.35 1.36 1.37 1.38 1.39 1.40 1.41 1.42 1.43 1.44 1.45 1.46 問題 1.1 省略。 1.2 (/ (+ 5 4 (- 2 (- 3 (+ 6 (/ 4/5))))) (* 3 (- 6 2) (- 2 7))) 1.3 少し悩んだ。最大値を返す(max a b c)と中間値を返す(mid a b c)を作れば良いのかと思って悩んだけれど、 (define (func a b c) (define (square x) (* x x)) (if ( a b) (+ (square a) (square (if ( b c) b c))) (+ (square b) (square (if ( a c) a c))))) で良いみたい。 1.4 この表現は驚いた。ifが返すのは値だけでなく、+や-の演算子でも良いのか。これまでに無い考え方だったので、慣れるには時間がかかりそう。 1.5 手こずった。先に解答を書いておくと、 「正規順序ではpはpのまま展開しておき、いざ評価する段階では先に(= x 0)が評価され、pには触れないですむので0が返る。しかし作用的順序ではpを置換し始めてしまうため無限ループに陥る」 とのこと。(define (p) (p))という定義の意味が、けっきょく評価ができないものと理解することができなかったため、実際に実行するまで分からなかったことが理由。 1.6 問題1.5の補足で書いてあったことが1.6の答えだった。 特殊形式ifの評価規則は、解釈系が正規順序と作用的順序のどちらを 使うかに無関係とする:述語式を最初に評価し、その結果が帰結式と 代替式のいずれを評価するかを決める。 の中にあるとおり、「述語式の評価結果によって、帰結式と代替式どちらかの式は評価されない」という点が合成関数new-ifとの違いになっている。 new-ifでは帰結式・代替式(に相当する式)の双方を置換し切ってしまおうとするため、無限ループに陥ってしまう。 (ごめんなさい、何故そうなるかが厳密にはまだ理解できてないです) 1.7 (define (good-enough2? guess x) ( (abs (- guess (improve guess x))) 0.0001)) 1.8 (define (cbrt x) (define (cbrt-iter guess) (if (good-enough? guess) guess (cbrt-iter (improve guess)))) (define (improve guess) (define (average a b c) (/ (+ a b c) 3)) (average guess guess (/ x (* guess guess)))) (define (good-enough? a) ( (abs (- (* a a a) x)) 0.0001)) (cbrt-iter 1.0)) 1.9 前者が再帰的プロセスで、後者が反復的プロセス。 1.10 (f n) → 2n (g n) → 2^n (h n) → ... 自分の数学力の無さを痛感した問題。 (h 1)=2 (h 2)=2^2 (h 3)=2^2^2 (h 4)=2^2^2^2 というルールは分かったのだけれど、これをどうやって数式に書いたら良いんだろう・・・ 追記:数列で表せばいいのか。 F_0 = 0, F_1 = 2 F_n = (F_(n-1))^2 1.11 (define (f_rec n) (cond (( n 3) n) (else (+ (f_rec (- n 1)) (* 2 (f_rec (- n 2))) (* 3 (f_rec (- n 3))))))) (define (f_rep n) (define (f_itr a b c rep) (if (= rep 0) a (f_itr (+ a (* 2 b) (* 3 c)) a b (- rep 1)))) (if ( n 3) n (f_itr 2 1 0 (- n 2)))) 反復式プロセスの方はイテレータとn 3以下の処理を別に分けてみたけれど、もっといい方法があるんだろうか。 (あ、f_itrの中で分岐してもいいわけか。でも少し汚いソースになってしまうかな。このままでいいや) 1.12 (define (pascal row col) (cond ((or ( row 1) ( col row) ( col 1)) -1) ((= col 1) 1) ((= col row) 1) (else (+ (pascal (- row 1) (- col 1)) (pascal (- row 1) col))))) 手続きに(行,列)を渡すと、対応する値を返してくれる。余裕がすこしあったので、エラー処理も入れてみた。 1.13 省略。 1.14 省略。 1.15 省略。 1.16 ヒントにある、「状態変数aを用意し、状態の移り変わりで積ab^nを一定となるよう定義する」の意味がよく分からず解答をネットで見ることに。 「偶数:b^n=(b^2)^(n/2)」、「奇数:b^n=b*b^(n-1)」と分解していく中で、そのときにaを交えた式ab^nがそのままの状態となるよう、式を変形していけばいいみたい。 偶数 : {a,b,n} → {a, (b^2), (n/2)} 奇数 : {a,b,n} → {ab, b, (n-1)} というわけで、 (define (fast-expt-rep b n) (define (fast-itr b n a) (define (square x) (* x x)) (cond ((= n 0) a) ((even? n) (fast-itr (square b) (/ n 2) a)) (else (fast-itr b (- n 1) (* a b))))) (fast-itr b n 1)) 1.17 偶数 : xy → (x/2)*2y 奇数 : xy → y+(x-1)y と変換できるので、それを利用したのが以下のとおり。 (define (double x) (* x 2)) (define (halve x) (/ x 2)) (define (even? n) (= (remainder n 2) 0)) (define (multiply-rec x y) (cond ((= x 1) y) ((even? x) (multiply-rec (halve x) (double y))) (else (+ y (multiply-rec (- x 1) y))))) (define (f a b) (multiply-rec a b)) 1.18 少し手こずった。理由は、xyが状態の移り変わりでも一定となる値nを用意したときに、xyn=Cとなるような計算式を一生懸命に考えていたため。問題1.16の実装方針に影響されすぎた。 偶数 : xy+n → (x/2)*2y + n 奇数 : xy+n → (x-1)y + (n+y) とすればよく、以下のプロセスを書いた。 (define (multiply-rep x y) (define (itr x y n) (cond ((= x 0) n) ((even? x) (itr (halve x) (double y) n)) (else (itr (- x 1) y (+ n y))))) (itr x y 0)) (define (g x y) (multiply-rep x y)) 1.19 a ← bq+aq+ap, b ← bp+aqなので、それぞれのa,bにもう一度代入してあげる。 a ← (bp+aq)q+(bq+aq+ap)q+(bq+aq+ap)p = bpq+aq^2+bq^2+aq^2+apq+bpq+apq+ap^2 = ap^2+2aq^2+2aqp+bq^2+2bpq = a(p^2+2q^2+2pq) + b(q^2+2pq) b ← (bp+aq)p+(bq+aq+ap)q = bp^2+apq+bq^2+aq^2+apq = a(q^2+2pq) + b(p^2+q^2) ここでp =(p^2+q^2), q =(q^2+2pq)と置き換えれば、ふたたびa ← bq +aq +ap , b ← bp +aq と表現できる。 (最初、この「置き換える」という視点が欠けていて先に進めなかった) これにより、Fibonacci数を対数的ステップ数で求めるプロセスは次のようになる。 (define (fib n) (fib-itr 1 0 0 1 n)) (define (fib-itr a b p q count) (define (even? x) (= (remainder x 2) 0)) (define (square x) (* x x)) (cond ((= count 0) b) ((even? count) (fib-itr a b (+ (square p) (square q)) (+ (square q) (* 2 p q)) (/ count 2))) (else (fib-itr (+ (* b q) (* a q) (* a p)) (+ (* b p) (* a q)) p q (- count 1))))) 1.20 省略。 勉強にはDrSchemeを使用しているのだけれど、どうしたらトレースが取得・表示出来るようになるんだろう・・・。 追記:[言語]-[ティーチパックの追加...]でcalltrace.ssを追加すれば良いみたい。 1.21 199,1999,19999のうち、199と1999が素数で19999は素数ではない(7で割れる)。 1.22 まず、DrSchemeでは(runtime)という基本手続き(primitive)が存在しないので、代わりに(current-milliseconds)を使わないといけない。 (define (runtime) (current-milliseconds) そして奇整数を対象にtimed-prime-testを実行していく以下の手続きを作った。 (define (search-for-primes from to) (cond (( from to) 0) ((even? from) (search-for-primes (+ from 1) to)) (else ((timed-prime-test from) (search-for-primes (+ from 2) to))))) ところが、これだと最後の値を実行した後に「procedure application expected procedure, given # void ; arguments were 0」というエラーが出てしまう。 原因は2行目でfrom toのときに0を返しているけれど、その返戻値を5行目で何も取り扱っていないから。頭の中で再帰を単なるgotoのようなものとして考えてしまっている自分に気がついた。 関数型言語なのに返戻値を無視するのはマズイ気がするのだけれど、どうしたらいいだろう・・・。 →結局、他のサイトの回答を参考に次のような手続きを書いた。 (define (search-for-primes from end) (define (itr n) (timed-prime-test n) (if ( n end) (itr (+ n 2)))) (if (even? from) (itr (+ from 1)) (itr from))) でも、itrの中で「timed-prime-testを実行して、その次に終了条件を見て・・・」というように手続き的に書いてしまっているのがいやだなあ。ちなみに、DrSchemeでの実行速度が速すぎて、Θ(√n)の増加はよく分かりませんでした。 1.23 次の数を奇数にして返すnext手続きのみ作成。実行速度が速いので、比較してもあまり有為な結果が得られないし。 (define (next n) (if (even? n) (+ n 1) (+ n 2))) 1.24 これも1.23と同じ理由で、省略。 1.25 理屈は設問のAlyssaが言っていることで正しいので、悩んだ。 いろいろインターネットを漁り(こればっか)、計算の過程で、Alyssaの手続きでは値が非常に大きな値を持ってしまうことが分かった。それに対し、もともとの方法では各計算で剰余を求めることで値の増加を抑えつつ計算しているので、最終的な計算時間が短くてすむ。 「本当にそうなの?っていうか、p.28の計算って正しいの?」と思って同手続きをステップ実行してみたけれど、確かに計算は合っているし、値もmod未満の値に抑えられている。剰余の計算アルゴリズムとして覚えておいた方がいいみたい。 1.26 Louisの作った手続きは、square手続きでまとめていたexpmodを*によって展開した状態で記述している。これだと、squareの評価に入る前に1回だけ評価していたexpmodをどんなときも2回評価してしまうから。 当初「何でただ2乗するだけの手続きを別にsquareとして切り出していたんだろう?」と思っていたけれど、モジュール化のみならず評価の回数を少なくする効果があったんですね。 なるほど。 1.27 素数かどうかチェックするための手続きを以下のように作成。 (define (is-prime? n) (define (itr a) (cond ((= a 0) #t) (else (if (= (expmod a n n) a) (itr (- a 1)) #f)))) (if (itr (- n 1)) (display "I ts prime.") (display "I ts not prime."))) そして、これを元にCarmichael数(561,1105,1729,2465,2821,6601 -- p29の脚注から抽出)をチェック。 ふーん、確かに全部素数として判定されているなあ。 1.28 考えたけど、ギブアップ。解答から写経することにした。 (define (mod a b) (remainder a b)) (define (expmod2 base exp m) (cond ((= exp 0) 1) ((even? exp) (let ((tmp (mod (square (expmod2 base (/ exp 2) m)) m))) (if (and ( 1 tmp) ( tmp m) (= (mod (square tmp) m) 1)) (display (list base exp tmp (mod (square tmp) m)))) tmp)) (else (mod (* base (expmod2 base (- exp 1) m)) m)))) (define (miller-rabin-test n) (define (tt a i) (cond ((= a n) i) (( (expmod2 a (- n 1) n) 1) (tt (+ a 1) (+ i 1))) (else (tt (+ a 1) i)))) (tt 1 0)) (define (fermat-test2 n) (define (try-it a) (= (expmod2 a n n) a)) (try-it (+ 1 (random(- n 1))))) (define (fast-prime2? n times) (cond ((= times 0) #t) ((fermat-test2 n) (fast-prime2? n (- times 1))) (else #f))) ??letって何?listは? まだ一度も使ったことのない文法が出てきている。これらが実際にテキストで出てきたら、もう一度この問題を見直してみよう。 1.29 ここからEmacs+Gaucheを使用することに。でもデバッグはステップ実行のできるDrSchemeを使用してます。 (define (simpson-integral f a b n) (define h (/ (- b a) n)) (define (coef x) (cond ((or (= x 0) (= x n)) 1) ((even? x) 2) (else 4))) (define (itr k) (cond (( k 0) 0) (else (+ (* (/ h 3) (* (coef k) (f (+ a (* k h))))) (itr (- k 1)))))) (itr n)) (define (f func a b n) (if (even? n) (simpson-integral func a b n) #f)) この状態で、インターネットの解答例と比較。 しまった、ここではsum手続きを使わないといけないんだ。 (define (simpson-integral-2 f a b n) (define h (/ (- b a) n)) (define next inc) (define (coef x) (cond ((or (= x 0) (= x n)) 1) ((even? x) 2) (else 4))) (define (term k) (* (coef k) (f (+ a (* k h))))) (* (/ h 3) (sum term 0 next n))) これでいいかな。 でも気になるのが、外にあるsum手続きの中から評価されている各種手続きで、なぜsimpson-integral-2内でのみ使われている値(a,h,nなど)が使用できているんだろう?? 大事なことのような気がするけど、説明出来ない・・・。 1.30 (define (sum term a next b) (define (iter a result) (if ( a b) result (iter (next a) (+ (term a) result)))) (iter a 0)) 最初、a bのとき(つまり、最後の計算の時)にresultではなく0を返してしまっていた。反復手続きの場合は最後に状態を返さないと、再帰的手続きとは違ってもう何も計算が行われずスタックトレースを遡るだけなので、これまでの計算がふいになってしまうことに注意しないと。 1.31 正月休みも終わって、昼は仕事をしているので進行ペースが落ちている。やばい? ; 指定した範囲の積を返す手続きproduct ; 1.反復的手続き版 (define (product term a next b) (define (iter a result) (if ( a b) result (iter (next a) (* (term a) result)))) (iter a 1)) ; 2.再帰的手続き版 (define (product-rec term a next b) (if ( a b) 1 (* (term a) (product-rec term (next a) next b)))) で、これを使ったfactorial(n!のこと)は次のとおり。抽象化によって、前よりずっと簡単に手続きが定義できている。 (define (factorial n) (define (term x) x) (product term 1 inc n)) で、次の問題で解答を見てしまった。なぜかというと、John Wallisが見つけたというπの近似式: π/4 = (2*4*4*6*6*8*8*...)/(3*3*5*5*7*7*...) について、どうやったら(next a)に相当する手続きを書けるかが分からなかったため。 素直(というか手続き言語的に)に考えて、カウンタに内部状態を持たせて、1つおきに値を更新するような手続きを書こうとしていたけれど、ここまで学んだSchemeの知識では無理だった。 ギブアップして解答を見たら、式を(2*4)/(3*3), (4*6)/(5*5)というようにまとめて計算していた。 うーん、確かにそれで良いって言えば良いんだけど、これだと「第(2n-1)項までを計算せよ」という問題は解けないんじゃないの? → 調べたら、そもそもそういう公式でした。なんだ、それなら問題ないか。 (define (pi-wallis times) (define (term n) (/ (* (* 2.0 n) (* 2.0 (+ n 1.0))) (square (+ (* 2.0 n) 1.0)))) (* 4 (product term 1 inc times))) 1.32 sum,product手続きを更に抽象化し、accumulate手続きに統一する、という問題。 まずは反復手続き版。以前作成したsumを少し手直しするだけでいいので、簡単簡単。 (define (accumulate combiner null-value term a next b) (define (iter a result) (if ( a b) result (iter (next a) (combiner (term a) result)))) (iter a null-value)) そして、この手続きを元にしたsumとproduct。 (define (sum term a next b) (accumulate + 0 term a next b)) (define (product term a next b) (accumulate * 1 term a next b)) これは楽しい。抽象化するメリットがどんどん伝わってくる感じ。 あと、下はaccumulate手続きの再帰版。 (define (accumulate-rec combiner null-value term a next b) (if ( a b) null-value (combiner (term a) (accumulate-rec combiner null-value term (next a) next b)))) 1.33 アキュムレータにフィルタを付ける問題。まずはフィルタ付きaccumulate手続きを作成。 (define (filtered-accumulate filter combiner null-value term a next b) (define (target? x) (if (filter x) x null-value)) (define (iter a result) (if ( a b) result (iter (next a) (combiner (target? (term a)) result)))) (iter a null-value)) 工夫した点は、結果に組み合わせるかどうかをfilterで判定する時に、一度別の手続きtarget?を経由するようにしたこと。これによって判定と値の使用の評価を1回にまとめられるので、素直に実装した時にやりがちな「フィルタ判定時に1回評価、組み込む場合にもう1回評価」という余分な評価を行わなくてすむ、はず。 → ちょっと間違いがあった。これだと(term a)で評価したものに対して判定してしまっているので、aの素数判定が行えなくなってしまう。aを評価したら(term a)を返す、というように修正。 (define (filtered-accumulate filter combiner null-value term a next b) (define (target? x) (if (filter x) (term x) null-value)) (define (iter a result) (if ( a b) result (iter (next a) (combiner (target? a) result)))) (iter a null-value)) そして、このfiltered-accumulateを使用した区間[a,b]の素数の和を求める手続きは以下のとおり。1行になった。 (define (sum-square-prime a b) (filtered-accumulate prime? + 0 square a inc b)) b.の「nと互いに素で、nより小さい正の整数(i nでGCD(i,n)=1なる全整数i)の積」を求める手続きは以下のとおり。実はこれ、解答を少し見た。この手続きが正しいかどうかを調べる方法は無いか、というのと、名前の付け方(笑)。 (define (mutual-prime-product n) (define (f x) (= 1 (gcd x n))) (filtered-accumulate f * 1 identify 1 inc (- n 1))) さて、抽象化は楽しいけれど、このfiltered-accumulateまでが抽象化するギリギリのラインのような気がする。これ以上は機能追加のし過ぎになってしまい、むしろ肥満してしまうから。 適切な抽象度の選択ができるかどうかで、かしこい開発者かが決まるんだろうな。 さあ、次からはlambdaだ! 1.34 lambdaは出てきたけれど、その項の最初の問題、つまりlambda,letを理解するためのトップバッターに相当する問題がこれである意味が分からない。 (define (f g) (g 2))を定義したとして、そのときに(f f) を(意地悪く)評価させるとどうなるか。 fの引数gは手続きとして与えられるものなので、引数のタイプとしては問題ない。ただ、そこから更に評価を進めると、 (f f) → (f 2) → (2 2) となって、2は手続きではないため評価できずエラーとなる。 でも、何でここでこの問題? 1.35 (fixed-point (lambda (x) (+ 1 (/ 1 x))) 1.0) 1.36 まず、情報を表示させるようfixed-pointを変更。 (define (fixed-point f first-guess) (define (try guess) ; (let ((next (average guess (f guess)))) ; 平均緩和法を使用する場合 (let ((next (f guess))) (display guess) (newline) ; ← ここに追加 (if (close-enough? guess next) next (try next)))) (try first-guess)) letのbody部では複数の式を連続して書ける。 これを使って、x^x=1000なるxを求める。 (f (lambda (x) (/ (log 1000) (log x))) 2.0) → 40ステップ (f (lambda (x) (average x (/ (log 1000) (log x)))) 2.0) → 11ステップ そんなに違うんだ。 1.37 a.最初は再帰的プロセスで書いた。 (define (cont-frac n d k) (define (iter i) (if (= i k) (/ (n i) (d i)) (/ (n i) (+ (d i) (iter (+ i 1)))))) (iter 1)) kは11にの時点で4桁の精度(0.618055...)が得られていた。ちなみにkはかなり早い段階で0.6180339887498948に収束していた。 b.は反復的プロセス。 状態変数を管理する方法がどうしても分からなくって、結局解答を見た。 そうか、i=kから始めて逆方向に計算を繰り返していけばいいのか!それなら確かに不定な部分がないまま再帰を繰り返していけるぞ。 目から鱗とはこのことだ、と本当に思った。頭が固いと辛いなあ・・・。 (define (cont-frac n d k) (define (iter i result) (if (= i 0) result (iter (- i 1) (/ (n i) (+ (d i) result))))) (iter k 0)) 1.38 ここではe-2を表現するための数列「1,2,1,1,4,1,1,6,1,1,8,1,...」をどうやって表現するかが肝になっている。 (define (euler-number k) (if (= (remainder (+ k 1) 3) 0) (* 2 (/ (+ k 1) 3)) 1)) 本当は上の手続きをλで書くべきなんだけど、ちょっと長くなるので止めておいた。 (cont-frac (lambda (x) 1.0) euler-number 50) 1.39 最初スクラッチから書いたけど、cont-fracを使ってもいいことに後から気がついた。 両方とも載せておきます。 (define (tan-cf-orig x k) (define (iter i result) (define (odd i) (- (* 2 i) 1)) (if (= i 0) result (iter (- i 1) (/ (square x) (- (odd i) result))))) (/ (iter k 1) x)) 下はcont-fracを使った方法。こっちの方が余計な処理が隠れて分かりやすくなっているね。 (define (tan-cf x k) (cont-frac (lambda (i) (if (= i 1) x (- (* x x)))) (lambda (i) (- (* i 2) 1)) k)) 1.40 (define (cubic a b c) (lambda (x) (+ (cube x) (* a (square x)) (* b x) c))) 1.41 (define (double f) (lambda (x) (f (f x)))) gosh (((double (double double)) inc) 5) 21 13(5+8(= inc*2*2*2))ではないことに注意。これは(((inc^2)^2)^2)という解釈が行われている。 1.42 (define (compose f g) (lambda (x) (f (g x)))) 1.43 (define (repeated f n) (define (itr res_f i) ( (= i 1) res_f (itr (compose f res_f) (- i 1)))) (itr f n)) 解答を見てみたら、再帰的手続きで書いてあった。 (define (repeated f n) (if (= n 0) (lambda (x) x) (compose f (repeated f (- n 1))))) 内部のイテレータを宣言していないぶんシンプルで分かりやすいかな。・・・と思ったら、0のときの処理を書いていないことに気がついた。 最初の手続きをあわてて修正。 (define (repeated f n) (define (itr res_f i) (cond ((= i 0) (lambda (x) x)) ((= i 1) res_f) (else (itr (compose f res_f) (- i 1))))) (itr f n)) 1.44 (define (smooth f) (define dx 0.1) (lambda (x) (/ (+ (f (- x dx)) (f x) (f (+ x dx))) 3.0))) (define (n-fold-smooth f n) ((repeated smooth n) f)) 1.45 最初、平均緩和は何回実施すればよいかを調べるための、回数を指定する手続きを作成した。ただ、それを実施してもn乗に対して何回実施すれば良いかのルールが分からず、結局解答をみてしまった。 (floor(*1) (/ (log n) (log 2)))回、つまりlog2(n)の整数部の数だけ実施すればいいみたい。 (define (n-root x n) (define (pow x n) (if (= n 0) 1 (* x (pow x (- n 1))))) (let ((k (floor (/ (log n) (log 2))))) (fixed-point ((repeated average-damp k) (lambda (y) (/ x (pow y (- n 1))))) 1.0))) 1.46 イテレータの引数をどうやって内部で回すかで苦労した。 (define (iterative-improve enough? imp) (lambda (guess) (define (iter x) (if (enough? x) x (iter (imp x)))) (iter guess))) (define (sqrt-itr x) (define (good-enough? guess) ( (abs (- x (square guess))) tolerance)) (define (improve guess) (average guess (/ x guess))) ((iterative-improve good-enough? improve) 1.0)) (define (fixed-point-itr f first-guess) (define (close-enough? guess) ( (abs (- guess (next guess))) tolerance)) (define (next guess) (f guess)) ((iterative-improve close-enough? next) first-guess)) これで1章終わり。おつかれさまでした。 思ったんだけれど、抽象化の方法がこれまでCで実施していた方法とは感覚が違う。まだもやもやとしているのだけれど、何だろう。 説明できるようになれば、Cや他の言語に生かせるようになるのかも。