約 7,924 件
https://w.atwiki.jp/rpg2kpsp/pages/29.html
イベント・主人公・乗り物の位置情報 形式:一次元配列 配列番号リスト 配列番号 内容 形式 省略時の初期値 備考 11 マップID BER圧縮整数 不明 イベント情報のときはない 12 X座標 BER圧縮整数 不明 13 Y座標 BER圧縮整数 不明 21 キャラクタの向き? BER圧縮整数 2,4,6,8 の形式? 22 話し掛けられている時の向き? BER圧縮整数 2,4,6,8 の形式? 31 斜め? 話し掛けられた時? のキャラグラ BER圧縮整数 2 向き固定時に使用? 32 ↓向きの時のキャラグラ BER圧縮整数 2 向き固定時に使用? 33 斜め? 話し掛けられた時? のキャラグラ BER圧縮整数 2 向き固定時に使用? 34 ←向きの時のキャラグラ BER圧縮整数 3 向き固定時に使用? 35 斜め? 話し掛けられた時? のキャラグラ BER圧縮整数 2 向き固定時に使用? 36 →向きの時のキャラグラ BER圧縮整数 1 向き固定時に使用? 37 斜め? 話し掛けられた時? のキャラグラ BER圧縮整数 2 向き固定時に使用? 38 ↑向きの時のキャラグラ BER圧縮整数 0 向き固定時に使用? 41 一次元配列 51 BER圧縮整数 52 BER圧縮整数 53 BER圧縮整数 54 BER圧縮整数 71 72 73 キャラグラのファイル名 シフトJIS文字列 "¥0" 74 キャラグラの位置 BER圧縮整数 0 101 102 103 104 105 106 107 108 121 122 123 124 BER圧縮整数 131 BER圧縮整数 132 BER圧縮整数 コメントフォーム メモ:0x15と0x16どちらかがキャラグラの向きっぽい。でも、値がまったく一緒で判別不可。 -- take-cheeze (2009-07-22 13 36 06) 名前 コメント
https://w.atwiki.jp/imops-forth/pages/21.html
序 データスタックが変数の役割を果たすとはいえ、forthでも変数は定義できる。 けれども、構文上は、値はすべて一旦スタックにおかれ、スタックを通じて処理されるような形になる。 変数の種類としては、ワードとして定義するパブリックな変数と、1ワード定義内でだけ有効な局所変数がある。 Mopsにはこれらに加えて Local Section (ローカルセクション)という機構があり、近接する特定範囲の複数のワード定義に渡ってのみ存続する変数を定義することができる。 このページでは長くなり過ぎないようForthコアに属するものだけを説明し、オプションである局所変数とMops特有のローカルセクションはそれぞれ別ページに回すこととする。 パブリック変数(VARIABLE, VALUE) VARIABLE VARIABLE V1 と宣言することで、V1という名前の変数が定義される。これは普通のワードと同じ有効範囲をもつ。つまり、宣言がロードされた直後から、同じ名前のワードが重複定義されるまで、この変数は同一性を保ち、その名で呼び出される。普通に大域変数(グローバル)といっても良いのだが、序章でも説明したように、プログラムの全域で有効という意味での普通の大域変数とは微妙に異なる。というか、むしろ、変数もまたまさにワードであるということなのだが。 VARIABLEの宣言(定義)は、実行状態でなされなければならず、コンパイル状態(コロン定義内)では所期の効果は得られない。 このタイプの変数がforthでは最も古典的なものである。 VARIABLEは、変数として利用され、そのように理解されてはいるものの、実体としては変数というよりアレイ(配列)である。長さが1セル長(forth標準規格:1セルはCPUの標準メモリー幅—普通、8ビットコンピュータなら1バイト、16ビットなら2バイト、32ビットなら4バイト、64ビットなら8バイト)で固定されている配列、と考えても大過ない。第一、プログラム上名前が値とは同一視されない。名前と同一視されるのは、その配列オブジェクトのポインタである。そして、値を取り出したり、値を格納したりするために、それぞれ固有のワードを呼び出さなければならない。 値の受け渡しは、もちろん、スタックを経由して行う。 VARIABLEの値は、定義の時点で0に初期化されることになっている。全ビット0である。 VARIABLEから値を取るワードは @ 、アットマークである。単なる特殊文字のように見えるかも知れないが、forthには特殊文字というものは無く、1文字の名前を持つワードは数多くある。これもその一つである。フェッチ (fetch) と読む。 例えば、上の変数V1の値を取るときは、 V1 @ とするわけである。まず変数名、そして動作、である。変数名をコードに書いたとき、つまり、VARIABLEを呼び出したときにも、実は固有の動作がある。それは、その変数のために割り当てられたデータ領域(メモリ)のアドレス値をデータスタック上に置く、ということである。だから、V1と書いた時点で、V1に割り当てられたデータ領域のメモリーアドレス値がデータスタックに押し込まれているのである。そこに、@を作用させると、@の動作は、スタック上のメモリーアドレス値を消費し、それが指している場所から1セル分の値を取ってスタックに押し込む、ということになっている。結果として、上のコードの結果、V1に格納されていた値だけがスタックに残されるのである。 したがって、VARIABLE V1と@のスタック効果を書くと: V1 ( -- addr ) @ ( addr -- x ) xが格納されていた値である。なお、V1に格納された値は、スタック上にコピーされるのであって、取り出されるとV1の中身がなくなってしまうのではない。念のため。 VARIABLE に値を格納するワードは ! 、びっくり(エクスクラメーション)マークである。ストア(store)と読む。値はもちろんスタック経由で取る。 例えば、- 7 を V1に格納(代入)するには、 -7 V1 ! と書く。日本語的には「-7 を V1 に代入」とそのまま読める。 ! のスタック効果は、 ! ( x addr -- ) である。x はスタック上にある値なら何でも良い(タイプは制限ない)し、addr は、1セル分のメモリースペースのアドレスであれば何でも良く、いつもどれかのVARIABLE名を書かなければならないわけではない。この辺の抽象性から、いかにもforth風の展開が可能になっていくのである。 VALUE VALUEもVARIABLEと同じように実行状態で宣言することで定義されるパブリック変数である。 データ領域の大きさも同じように1セルである。 ただし、宣言時から既に、VARIABLEとは挙動が異なる。というのは、VALUEの場合、宣言時にスタック上にある値を用いてデータ域が初期化されるのである。初期値とする値は、ロード中にプログラムが部分的に実行された結果の値でもよい。ともかく宣言時にスタックに値が一つ必要であり、それなしに宣言すると、スタックアンダーフローエラーが出てロードも中断されてしまう。 例えば、初期値-1のVALUE、VL1を定義するには、 -1 VALUE VL1 と書く。 VALUEでは、その名前と格納された値とが同一視できる。つまり、一般のプログラミング言語の変数のように見える。動作としては、名前を書くと、格納されている値のコピーを一つスタック上に置く。値取り出し用ワードは不要である。 スタック効果を書けば: VL1 ( -- x ) また、新しい値に替えるときは、プレフィクス (prefix) を使う。つまり、前置するワードである。こういうものはforthには珍しい。これがかなり後になって追加された機能であることを物語っている。標準のプレフィクスはTOである。値はスタックから取る。 例えば、VL1に37を代入したいときには、 37 TO VL1 と書く。 TOの同義語として、 - が定義されている場合も多い。マイナスに不等号をつなげた、まあ、要するに矢印である。このときは、 37 - VL1 と書ける。Mopsではむしろこちらが本体であって、直観的にも分かり易いので個人的にはこちらを愛用している。 Gazinta(ガジンタ?)という呼び名がある。初めは謎だったが、"goes into"のスランギッシュな言い方であろうと推測される。 TOないし- のスタック効果は、次のように表記する。 TO ( x “ spaces name” -- ) 引用マークに囲まれている入力項は、これはデータスタックから取るのではなく入力テキストから取るのだ、ということを意味する。何を取るかというとVALUEの名前である。つまり、プレフィクスTOにとっては次にあるVALUE名VL1は必要な入力項目なのである。実際、TOや- の後に何も書かないとエラーが出る。後方に書くのに入力としてコメントの左辺に寄せるのは、今ひとつ直観的ではないが、そういう表記法が規則であるようだ。 spaces というのは、はじめの空白文字はいくつあっても飛ばして、空白文字ではない文字列をVALUEの名前として解釈するという意味である。 実は、TOは使用法が拡張されていて、それが受け付けるのはVALUEだけではない。そのため、forth規格書では数値xが複数のこともあり得るような書き方になっている。TOが受け付けないワード名の場合は、エラーがでて中止になる。 ただし、上のTOのスタック効果は、解釈実行時のものである。他のワードの定義(後述)内において利用された場合は、効果が異なる。それを書いてみると、 TO コンパイル時 ( " spaces name" -- ) 実行時 ( x -- ) となる。つまり、ワード定義内でも、TOや- の直後にはValue変数の名前が必要であり、その定義内には「実行時にスタックの値を取って、その変数に格納する」という内容のコードがコンパイルされるのである。TOないし- だけをコンパイルしようとするとエラーになる。 配列(Array) 配列としてのVARIABLE 1バイト配列 VARIABLEは1バイト配列として利用することができる。全体長は1セル分である。ここでは現状一番多いであろう32ビットシステムで考える(2019年現在CPUは64ビットが圧倒的に多くなったが、Forthシステムは32ビットに止まっているものがまだ多いように思われる。)。この場合、1セルは4バイトであるから、1バイトなら4項目配列になる。 メモリーアドレスの個所で、1バイト数を出し入れするワードは、Cを付け足したフェッチ/ストアがある。つまり、c@、c!である。 c@ ( c-addr -- uc ) c! ( c c-addr -- ) 使用法は、 7 8 9 10 V1 3 + c! V1 2 + c! V1 1 + c! V1 c! V1 3 + c@ \ 10 V1 2 + c@ \ 9 V1 1 + c@ \ 8 V1 c@ \ 7 "x +"という形で普通に数値を加算することで配列の項目が進められるわけである。 頭に付け足されるcはcharacterの頭文字である。1文字1バイトとは限らない現在では、やや場違いな命名に見えなくもない。 1バイト数値をスタックにコピーするとき、より一般には1セルより小さいバイト数の数値をコピーするときには、正負の符号をどうするかという問題が出てくる。上のc@は全てを正の値として取り出す(0~255の値になる)。コメントのucのuはunsigned(符号なし)の意味である。正負を反映したい場合は、c@Xを用いる(-127~126の値になる)。最後のXはextend(拡張)を意味し、符号のビットを拡張するということである。 c@X ( c-addr -- c ) 2バイト配列 VARIABLEは、2バイト、2項目配列としても利用できる。その場合の操作ワードは、Wを付け足した、w@, w!, w@Xである。 頭のwは、wordの頭文字だったようだが、ダブルバイトと考えても良いと思う。 もっとも、これらはforth標準のワードではない。いくつかの環境では定義されており、Mopsでも利用できる。 w@ ( w-addr -- uw ) w! ( w w-addr -- ) w@X ( w-addr -- w ) Forthでは、配列も、原則として、項目番号ではなくてアドレスのバイト数値で位置を特定するので、2バイト配列を1項目進めるには、2を足さなければならない。例えば: -1 3 V1 w! V1 2 + w! V1 w@ \ 3 V1 2 + w@X \ -1 V1 2 + w@ \ 65535 (数値の理由が分らない人はコンピュータ内の数値表現法の基礎を勉強しましょう。) CREATE(クリエイト) ForthにはCREATEというワードがある。これを用いた宣言により、VARIABLEと同じように、利用可能なデータ域のメモリーアドレスと結びつく変数ワードを作りだすことができる。ただし、メモリー内に領域を確保しない。そこで、宣言の後に、必要分の領域を確保するためのワードを実行することで、任意の長さのメモリー領域、基本的にはバイト配列、を作りだすことができる。 ALLOT データ領域を確保する最も基本的なワードはALLOTで、確保すべきバイト長に当たる数値をスタックから入力として取る。 以上のような仕組みで、512バイト幅の配列theArrayを作るとすると、 CREATE theArray 512 ALLOT とすればよい。定義された配列theArrayはパブリックワードとなる。 値の出し入れは、項目を何バイトにするか、負の数を必要とするか、に応じて、上で説明したフェッチ/ストア用ワードを使えば良い。 項目位置の計算は、いつもベタのアドレスのバイト数値で計算する。 ALLOTはデータ領域は確保するが、内容の初期化はしない。新規定義の場合はメモリー領域は0で初期化されているのが普通だが、メモリーは前に何かで使ったゴミが残っていて不規則な値になっている場合もあり得る。 RESERVE 内容を消去、つまり、0に初期化して確保するワードとして、MopsにはRESERVEがある。RESERVEという語はデータ域を確保するという意味で通用してはいるようだが、forth規格にはこのワードは見当たらない。RESERVEが定義されている場合は、 CREATE theArray2 256 RESERVE とすれば、theArray2は、256バイト幅の配列として定義され、確実に0で初期化される。 CELLS さらに、1セル単位の配列を作るときは、CELLSというワードが便利である。これは、スタック上の値をセル幅倍する。 例えば、64セルある配列theArray3を定義するには、 CREATE theArray3 64 CELLS ALLOT とすればよい。見た目は理解し易いと思う。 2! , 2@ セルが2つ分のアレイ、あるいはダブルセル変数については、直接に値の出し入れができるワードがある。2@と2!である。これは、アイテム2つを一度にフェッチ/ストアする。 2@ ( addr -- x1 x2 ) 2! ( x1 x2 addr -- ) 格納の順番は、スタックの上の方がデータ域の前のセル、下の方が後のセルに入る。取り出しは、値をスタックから格納したときの順序を保つ。 これらは、ダブルセル数値(例えば、32ビット環境なら64ビット数まで)の取り扱いに適するもののように思われるが、なぜかforth標準では、COREワードとして規定されており、オプショナルではない(forth 94からそうであり、forth200xでも維持されている)。文字列などにも使えるからであろうか。 基本はこんなところと思われる。次は、格納された値を変化させるワードについて、ページを変えて説明しようと思う。 Forthの変数(続)、定数 Forth言語概説Forth開発環境の初歩的使用法
https://w.atwiki.jp/bousoku/pages/701.html
日本語入力配列マニア。 中指シフト配列「月光」作成者。 【TW】 JK XF XE XG XF XH 【HP】 https //t-ken.blogspot.com 【Twitter】 https //twitter.com/fsktakahasi
https://w.atwiki.jp/isoroku_be/pages/78.html
情報 作者名:moka 引用元:日本語プログラム言語なでしこ公式バイブル「なでしこの育て方」 概要 二次元配列をテーブルタグで囲んで返します。 解説 引数 S:二次元配列 A:タグ属性 返り値 HTMLソース サンプルプログラム S=「a,b c,d」をCSV取得。 Sを「border=1 cellpadding=5」でテーブルタグ作成。 それを言う。 // table border=1 cellpadding=5 // tr td a /td td b /td /tr // tr td c /td td d /td /tr // /table //本体 ●テーブルタグ作成({配列=?}Sを{文字列=""}Aで) Rとは文字列 #結果 Tとは文字列 #一時格納用 もし、S=「」ならば、S=それ もし、A 「」ならば、A=「 {A}」 R=「」 Sを反復 T=「」 対象を反復 Tに「 td {対象} /td 」を追加 Rに「 tr {T} /tr 」を一行追加 R=「 table{A} {~}{R} /table {~}」 Rで戻る。 名前 コメント
https://w.atwiki.jp/akitaicpc/pages/50.html
vectorの使い方 vectorは一連の値を保存する動的配列です。配列のサイズは自動で確保されるのでメモリの心配はあまりする必要がありません。 vectorの宣言 std vector 格納したい変数の型名 変数名; vector 格納したい変数の型名 変数名; // using namespace std; を書いているとき コンストラクタ // T は格納したい型名 vector T v(); vector T v( size_type size ); // サイズ size のvectorを宣言 vector T v( size_type size , const T val ); // サイズ size のvectorを宣言し, すべての要素を val で初期化する. // (例) vector int v; // vectorのvを宣言 (サイズは0) vector int v(5); // 配列のサイズ5のvectorを宣言 vector int v(5, -1) // 配列のサイズ5のvectorを宣言し、各要素を-1で初期化する。 {-1, -1, -1, -1, -1} 使い方の一例 push_back(val) で 値 val を配列の末尾に追加できます。 pop_back() で配列の末尾の要素を削除できます。 普通の配列と同じように添字を指定して特定の要素を参照したり、特定の要素に代入したりできます。 // (例) v.push_back(5); // {} = {5} v.push_back(3); // {5} = {5, 3} v.push_back(1); // {5, 3} = {5, 3, 1} v.pop_back(); // {5, 3, 1} = {5, 3} v[1] = 2; // {5, 3} = {5, 2} よく使うメンバ関数 // vector T v, w;とします. // v と w が等しいときは true , そうでないときは false を返す. (戻り値 bool) v == w; // v と w を辞書順で比較して v の方が小さければ true , そうでないときは false を返す. (戻り値 bool) v w; // 要素数を返す. (戻り値 size_type) v.size(); // 要素をすべて削除する. (戻り値 void) v.clear(); // 要素数が 0 のときは true を, そうでないときは false を返す. (戻り値 bool) v.empty(); // 値 val を v の末尾に追加する. (戻り値 void) v.push_back( const T val ); // 末尾の要素を削除する. (戻り値 void) v.pop_back(); // pos の直前の位置に val を挿入して, その要素を指すイテレータを返す. (戻り値 iterator) v.insert( iterator pos , const T val ); // start から end までの要素を pos の直前に挿入する. (戻り値 void) v.insert( iterator pos, input_iterator start, input_iterator end ); // posの位置の要素を削除し, 削除された最終要素の直後を指すイテレータを返す. (戻り値 iterator) v.erase( iterator pos ); // v の先頭を指すイテレータを返す. (戻り値 iterator) v.begin(); // v の末尾を指すイテレータを返す. (戻り値 iterator) v.end(); その他 // vector の連結 // v = {1, 2, 3}, w = {4, 5, 6} v.insert( v.end() , w.begin() , w.end() ); // v = {1, 2, 3, 4, 5, 6} // vector の全要素の走査 for(int i = 0 ; i v.size() ; i++ ){ v[i]; } // vector の全要素の走査 (イテレータを使う) for(vector T iterator it = v.begin() ; it != v.end() ; ++it ){ *it; } // k 番目に値 val を追加 v.insert( v.begin() + k , T val ); // k 番目の要素を削除 v.erase( v.begin() + k ); ...
https://w.atwiki.jp/isoroku_be/pages/52.html
情報 作者名:五十六 引用元:なでしこプログラム掲示板「絶対パスファイル列挙」 概要 ファイル/フォルダ列挙の結果を絶対パスで返します。 解説 引数 S:ファイル/フォルダ列挙したいフォルダの絶対パス 返り値 絶対パス(配列) サンプルプログラム なし //本体 ●絶対パスファイル列挙({文字列=?}Sの|Sを|Sで) M=Sからファイル名抽出。S=Sからパス抽出。 A=Sの終端パス追加。B=「{A}{M}」のファイル列挙。C=空。 Bで反復、「{A}{対象}」をCに配列追加。 Cで戻る。 ●絶対パス全ファイル列挙({文字列=?}Sの|Sを|Sで) Sの全ファイル列挙して戻る。 ●絶対パスフォルダ列挙({文字列=?}Sの|Sを|Sで) A=Sの終端パス追加。B=Sのフォルダ列挙。C=空。 Bで反復、「{A}{対象}\」をCに配列追加。 Cで戻る。 ●絶対パス全フォルダ列挙({文字列=?}Sの|Sを|Sで) Sの全フォルダ列挙して戻る。 名前 コメント
https://w.atwiki.jp/bousoku/pages/497.html
高速月配列タイパー 月配列を駆使しTWJKでは上位にランクインしている。 英語ではdvorakを使用。 【TW】 JK 1164253 ZG ZF ZH ZF ZH 13/08/16 EW 1120108 XX XX XS XS XS 14/04/16
https://w.atwiki.jp/comcatet/pages/32.html
内包表記 ループ処理を簡単簡潔に記述する方法。 検索するとPythonの記事が多いから、そちらから取り込んだ? 元々ECMAScript6の機能として提案されていたが、ECMAScript7に先送りされている。 現時点ではFirefoxのみの実装? 配列内包とジェネレータ内包の表記がある。FirefoxではJavaScript1.7(Firefox2)で配列内包が実装されているが、今のとは表記が違う実装だった。ECMAScript7互換表記の配列内包とジェネレータ内包はFirefox30から実装された。今後も表記が変わる可能性がある。 [for (x of iterable) x*x] [for (x of iterable) if (x foo) x] [for (x of iterable) for (y of iterable) x + y] Array comprehensions - JavaScript | MDN es6 generator and array comprehensions in spidermonkey -- wingolog
https://w.atwiki.jp/ranha-icfp/pages/12.html
Backgroundの訳はここですよ! 遠藤はふーん星の生き物で、つまり地球外生命体。 地球の環境は遠藤に宜しいとは言えない。 遠藤は運悪くなんか変なのから地球におっこちてしまった\(^o^)/ 遠藤と安心の宇宙船Arrowは落っこちた時に痛い目をみて、 さらに遠藤は追加ダメージまで食らって泣きっ面に蜂。 遠藤は今はヤバい状況で、この形のままで地球に存在出来ないしArrowも死んでまう。 Arrow(我々と連絡を取ったのは都合よくも船でしたよ!)によると、 遠藤を生き残らせる為に、地球向けにDNAを変更するしかないという事。 我々のお仕事は72時間以内に適切なDNA配列を見つけるのを手助けする事。 失敗したら遠藤は死にます。 ICFPに参加する様な変態ならきっとなんとかしてくれるよね! 我々のここまでの取り組みでふーん星人のDNA配列生成プロセスに関する 情報が分かっています。 このドキュメントの以下の文では、この配列生成に関するアルゴリズムについて述べています。
https://w.atwiki.jp/swfspec/pages/107.html
シェイプの概要 シェイプは次のような要素により合成されます。 キャラクタID (CharacterId) 16 ビットの一意な識別子で、ディクショナリ中のキャラクタを指します。 CharacterId は制御タグの PlaceObject を参照します。 キャラクタは再使用することができます。 他のキャラクタと合成することにより複雑なシェイプを作ることができます。 バウンディングボックス (Bounding box) シェイプを囲む矩形領域を指します。 塗りスタイルの配列 (Fill style array) シェイプで使われる、塗りのスタイルのリストを指します。 線スタイルの配列 (Line style array) シェイプで使われる、線のスタイルのリストを指します。 シェイプレコード配列 (Shape record array) シェイプレコードのリストを指します。 シェイプレコードは、直線または曲線、スタイルの変更、描画位置の移動を定義します。 (注) 線と塗りのスタイルは各シェイプにつき1度だけ定義され、 辺ごとに利用・再利用されます。 移動 前のページ シェイプ 次のページ シェイプのサンプル