過去の桐井戸端BBS (桐ver.8) |
15380 | 目的数字をいくつかの倍数数字で割振りしたい | masa | 2002/03/07-15:40 |
すみません。またよろしくお願いします。 表A項目[1]の値の数字を、表B項目[2]〜[14]のいくつかの値の倍数数字で分割したいのですが、 どうしたら出来るでしょうか? 例 表A [1] 127 262 149 ・ ・ ・ 表B [2][3][4][5][6][7]〜[14] 11 13 21 22 31 35 求めたい物 127=[3]×2 +[5]×3 +[7]×1 262=[2]×3 +[6]×4 +[7]×3 149=[4]×5 +[5]×2 何種類か答えがあってもどれか1つイコールになった時点でOKです。 繰り返しの式を使うような気がしますが、かなりの量になってしまうのでしょうか? | |||
15394 | Re:目的数字の割振りについて | masa | 2002/03/08-11:18 |
記事番号15380へのコメント 仮に各々の数字が10倍までと仮定して(11×1、11×2、11×3〜11×10、〜13×10) それぞれを1つの項目に入れて検索させようと考えたら、 1項目値×10種類で、全項目13個を足した時、合う場合で 10種類×10種類×10種類×・・計13回と 12個の項目合計で合う場合で 10種類×10種類×10種類×・・計12回と 11個の項目合計で合う場合で 10種類×10種類×10種類×・・計11回と 10個の項目合計で合う場合で 10種類×10種類×10種類×・・計10回と 9個の項目合計で合う場合で 10種類×10種類×10種類×・・計9回と ・ ・ ・ ・ と考えたら、とんでもないデータ量になってしまいました。 スーパーコンピューター並みの(大げさ?)処理が必要? 暗号解読と同じくらい難しそうです? カンを頼りに割振るしかないですね・・・・ | |||
15488 | Re:目的数字の割振りについて | ひろ君 | 2002/03/17-17:05 |
記事番号15380へのコメント masaさん 初めまして 最近ここを知ってROMしてました。これからよろしくお願いします。 繰り返しでは大変そうで、桐でも「再帰呼び出し?」ができるのではと作ってみました。 代入文が長くなりそうだったのですべて変数内で操作しています。 無駄な部分もあると思いますが「再帰呼び出し」は20年くらい前にパスカルでやったことがあるだけで しかも桐では初めてなのでゆるしてください。 できなかったときは 「&できない=1」になります。 ところでこれは何に使うのですか。よければ教えてください。 ”***.cmd” 変数宣言 固有,整数{&合計=127, &N=7,&できない=1} 変数宣言 固有,整数{&被乗数[&N]={11,13,21,22,31,35}} 変数宣言 固有,整数{&乗数[&N]= {0,0,0,0,0,0,0}} 手続き実行 計算(&合計) 変数管理 固有 終了 手続き定義開始 計算(整数 &合計) 手続き実行 再帰呼び出し2(&合計,1,&できない) 条件 (&できない) 手続き実行 再帰呼び出し1(&合計, 1, 0, &できない) 手続き定義終了 手続き定義開始 再帰呼び出し1(参照 整数 &合計,整数 &L,整数 &M,参照 整数 &できない) 条件 (&N > &L) 手続き実行 再帰呼び出し1(&合計,&L+1,&M,&できない) 分岐 (.NOT &できない) 呼び出し1終了 代入 &合計=&合計-&被乗数[&L], &乗数[&L]=&乗数[&L]+1 条件 (&合計 > 0) 手続き実行 再帰呼び出し1(&合計,&L,&M+1,&できない) 分岐 (.NOT &できない) 呼び出し1終了 &合計=&合計+&被乗数[&L], &乗数[&L]=&乗数[&L]-1 手続き実行 再帰呼び出し2(&合計,1,&できない) 名札 呼び出し1終了 手続き定義終了 手続き定義開始 再帰呼び出し2(整数 &合計,整数 &K,参照 整数 &できない) 条件 (&K<&N) 手続き実行 再帰呼び出し2(&合計, &K+1, &できない) 分岐 (.NOT &できない) 呼び出し2終了 &できない=#MOD(&合計,&被乗数[&K]) 条件 (.NOT &できない) &乗数[&K]=#INT(&合計/&被乗数[&K]) 名札 呼び出し2終了 手続き定義終了 |