初心者のFileMaker pro Q&A (旧掲示板)

みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。

1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)

You are not logged in.

Announcement

新しい掲示板は、こちら:https://fm-aid.com/forum/t/filemaker


#1 2021-05-31 14:27:51

y_y
Guest

二次元配列と連続するデータの判定

ふわっとした質問で申し訳ありません。
2次元配列のようにフィールドをレイアウトに配置し、
縦横斜めに同じオブジェクトが3連続する箇所があるか判定するものを作る場合、
繰り返しフィールドを使うことになるかと思うのですが、
下のような場合
一つのフィールドで繰り返し25とするべきか、
5個のフィールドで繰り返し5とするべきなのか、
他にいい方法があれば教えてください。

環境はWin10、FM19です。
ーは空白のつもりです
  12345
A ーーーーー
B ー●×ーー
C ーー●×ー
D ーー×●ー
E ーーーーー

#2 2021-05-31 14:52:43

himadanee
Guest

Re: 二次元配列と連続するデータの判定

文字にしてボタンバーにするとかはどうですか。Unicodeなのでいろんな図形文字があります。

#3 2021-05-31 15:49:53

y_y
Guest

Re: 二次元配列と連続するデータの判定

すみません。
1~5、A~Eは行、列のタイトルであって、
データ部分はー●×の部分です。

#4 2021-05-31 18:02:36

himadanee
Guest

Re: 二次元配列と連続するデータの判定

そこは理解しています。UIの作り方の提案です。ドラッグ&ドロップで操作したいなら、ボタンバーでは無理ですが。
ボタンバーならフィールドは不要で直接配列(変数)に入れられます。○×の2種類なんでしょうか。
「判定」に関しては、今のところ特にアイデアはありませんが、しらみつぶしになるなら5x5より25の方が楽そう。

#5 2021-05-31 18:25:56

Shin
Member

Re: 二次元配列と連続するデータの判定

データの持たせ方は、25の繰り返しフィールドにしておきます。
判定は、同じ記号の出現が3回、という事でしたら、簡単です。
各回目の出現の位置の差と、div ( 出現位置 - 1 ; 5 ) を求めておきます。
  位置の差が1の場合、div が全て同じ
  位置の差が4か5か6の場合、div が増分が1
という条件を満たせばいいです。

Last edited by Shin (2021-06-01 16:16:50)

Offline

#6 2021-06-01 09:02:43

チポ
Member

Re: 二次元配列と連続するデータの判定

三つ連続は、
横が 3×5=15 通り
縦も同じ
右下がりの斜めが 3×3=9 通り
右上がりの斜めも同じ。

計、48通り考えられますね。
このすべてをしらみつぶしするしか無いのでは。。

フィールをどう作っても同じような手間に思いますが、、

Offline

#7 2021-06-01 10:21:06

y_y
Guest

Re: 二次元配列と連続するデータの判定

himadanee様

操作はシングルクリックで行います。
挿入するオブジェクトは2種類です。


Shin様

サンプルのご提示ありがとうございます。


チポ様

最終的には21×21で、5連続の判定考えています。
チマチマやるしかなさそうですね・・・。

#8 2021-06-01 10:46:25

チポ
Member

Re: 二次元配列と連続するデータの判定

> 21×21で、5連続
1292通り!!
チマチマのレベルを超えていますよ!!

いい方法、思いつきません。。

Offline

#9 2021-06-01 11:40:37

Shin
Member

Re: 二次元配列と連続するデータの判定

五目並べなのですか?
その枠の中に、5点を選んで、という事でしたら、サンプルを拡張するだけでいいですが。
何十もの選択があり、その中のいずれか5点が条件を満たすかどうか、という命題でしたら、フィルターを使って同様の仕組みを作り、437回回せばいいです。

Offline

#10 2021-06-01 12:36:11

himadanee
Guest

Re: 二次元配列と連続するデータの判定

五目並べなら、今打ったところだけ見ればいいので、ずいぶん手間は減りますが...
正式な連珠なら21でなく15ですよね。
19なら碁盤が使えるけど、21路盤というのがないからPCでやりたいのかな。

シングルクリックならボタンバーでもいいけど、これはボタンごとにスクリプトを割り当てないといけないので、逆に面倒かな...441回も同じ操作しないといけない^^;最初の質問とはだいぶ変わってきます。
繰り返しフィールドならボタンでなくEnterトリガにすれば繰り返し分1回設定で済みますね。

#11 2021-06-01 14:12:11

y_y
Guest

Re: 二次元配列と連続するデータの判定

Shin様、hinadanee様のご想像通りほぼ5目並べのようなことを考えています。

たまたま、やりたいことが21×21の正方形のような配列になってしまい、
言ってしまえばほぼほぼ5目並べの路盤違いのような形でしたが、
5目並べとストレートに言ってしまうと、
いろいろな人の考え方が聞けなくなり、今後に活かせないと思い、
回りくどい質問の仕方になってしまいました。

#12 2021-06-01 16:16:29

Shin
Member

Re: 二次元配列と連続するデータの判定

5×5で、3目並べを検出するサンプルです。
とりあえず、動きは遅いですが、可能ですよ、ということで。
https://www.dropbox.com/s/zaxb11t8nhskx … 2.zip?dl=0

考え方は、25の繰り返しフィールドに格納するとして、
並びのパターンが、その文字がある最初のポイントを基準にして、繰り返し位置の +1,+2、+4,+7、+5,+9、+6,+11 のパターンの位置に、同じ文字が存在するかどうかをみています。

多分、サンプルでは回りくどい無駄な動きが入っていると思いますので、もう少し早くなると思います。

Last edited by Shin (2021-06-07 08:52:33)

Offline

#13 2021-06-02 09:09:39

チポ
Member

Re: 二次元配列と連続するデータの判定

五目並べに反応・・

昔々、大昔、
卒論でFORTRANで詰め連珠のプログラムを書きましたよ。
電子計算機と言ってた時代で、入力はパンチカード、
UGIなんて遠い時代でした。
あまりいい出来ではなかったな。。


で、判定は一手ごとにするのですか?

Offline

#14 2021-06-02 09:22:08

Shin
Member

Re: 二次元配列と連続するデータの判定

僕も、教養のプログラム更座で、Life を作りましたね。Fortran でパンチカード1箱、出力はラインプリンタでした。自分のCPU時間は使い切っていたので、指導教官のCPUをもらっていました。面白かったのか、指導教官が欲しいといっていました。
今思えば、COBOL で書いた方がきれいだったかも。
連珠も基本的に戦えるモノを作りましたが、ヒトの全勝で、面白くなかったです。

Last edited by Shin (2021-06-02 10:06:01)

Offline

#15 2021-06-02 11:01:37

y_y
Guest

Re: 二次元配列と連続するデータの判定

チポ様

>で、判定は一手ごとにするのですか?
その通りです。

#16 2021-06-02 11:10:26

himadanee
Guest

Re: 二次元配列と連続するデータの判定

とりあえず、「一つのフィールドで繰り返し25」の方でしょうね。
フィールド5個にするメリットは、レイアウトに配置するのが楽という以外あんまり思いつきません。
フィールド1個なら路数が変わっても同じ論理でできるだろうし。

FM19なら、UI部分はJavascriptというかWebビューアで作った方が楽かも?

#17 2021-06-02 11:40:14

Shin
Member

Re: 二次元配列と連続するデータの判定

1手ごとに判定するなら、3目列べとして最大12パターンを見るだけですね。(5目では20パターン)
そのパターンを作って仕舞えば、簡単にチェックできます。(例えば、-2,-1,0 ; -1,0,1 ; 0,1,2  -10,-5,0 ; -5,0,5 ; 0,5,10 ; ....)

Offline

#18 2021-06-02 11:55:42

チポ
Member

Re: 二次元配列と連続するデータの判定

その判定には、

例えば、
黒を1
白を10
に置き換えた計算フィールドを作り、
その連続した5つの和で判定するのが簡単でしょう。

そのためにも、一つの繰り返しフィールドがいいかも。。


閑話休題
Shinさん、私とほぼ同年輩でしたよね、
同時期に同じようなことをしていたんですね。。

Offline

#19 2021-06-02 18:57:53

Shin
Member

Re: 二次元配列と連続するデータの判定

色々触って、早く判定できるようになっています。
とりあえずは、5×5の3目並べですが、拡張も、少しの手間で可能です。
パターンの自動作成が可能です。
https://www.dropbox.com/s/zaxb11t8nhskx … 2.zip?dl=0

ACOS とか、PDP-11 HITAC10 とかでした。ada とか PL/1 も触っていました。

Last edited by Shin (2021-06-07 08:52:46)

Offline

#20 2021-06-06 16:43:59

y_y
Guest

Re: 二次元配列と連続するデータの判定

Shin様

サンプルありがとうございます。
最近バタバタしていて中身をじっくり見れていません。せっかくいただいたのに申し訳ありません。

>拡張も、少しの手間で可能です。
お恥ずかしいことに未だにLet関数とか理解していない等スキル不足なので、ちゃんと理解しながら拡張していきたいのですが、
5×5→9×9へ路盤変更か、3目→5目へ変更のどちらからやったほうがいいとかありますでしょうか。

#21 2021-06-06 21:47:37

Shin
Member

Re: 二次元配列と連続するデータの判定

路盤の変更(今は正方形のみ、設定を数カ所改造すると長方形も可能です)も目数変更も、マスクテーブルのスクリプトを走らせると同時に変更出来ます。21〼5目でも、数分程度で終了。
手をかけてもらうのは、レイアウト上での繰り返しフィールドの表示を路盤に合わせて拡大するだけです。
何度もアップデートしていますので、ぜひ最新版で一度実行して見てください。簡単にできるように作り込んであります。

Last edited by Shin (2021-06-07 13:20:18)

Offline

Registered users online in this topic: 0, guests: 1
[Bot] ClaudeBot

Board footer

Powered by FluxBB
Modified by Visman

[ Generated in 0.007 seconds, 7 queries executed - Memory usage: 558.93 KiB (Peak: 579.84 KiB) ]