FANDOM


バシクさんのブログに投稿されたトリオ数列検証コードを、書き直してみました。yabasic で実行した時の出力は、元の検証コードと同じになることを確認しています。トリオ数列なので C=2 ですが、C=3 とすれば4つ組数列に拡張でき、さらに一般的にバシク行列の計算ができるのではないかと思います。また、元のコードで A(x) はここでは A(0,x) に、B(x) はここでは A(1,x) に、C(x) はここでは A(2,x) になります。

初期値は、最初に A$ で設定した値を解釈して入れています。ここを、ウェブのフォームから入力して結果を出力するようなシステムを構築すると、検証が楽になりそうです。

matrix.bas

REM ======= Set initial variable =======
A$="(0,0,0)(1,1,1)(1,1,0)(2,2,1)(2,2,0)[1]"

dim A(1000,1000):dim B(1000)
I=0: J=0:A(0,0)=0
for M=1 to len(A$)
  B$=mid$(A$,M,1)
  if B$="," I=I+1: A(I,J)=0
  if B$=")" J=J+1: C=I: I=0: A(I,J)=0
  if B$="[" break
  if B$>="0" and B$<="9" A(I,J)=A(I,J)*10+val(B$)
next M
D=0
for M=M to len(A$)
  B$=mid$(A$,M,1)
  if B$>="0" and B$<="9"  D=D*10+val(B$)
next M
if D=0 D=1
F=J-1

REM ======= Start calculation =======
while (F>=0)
  for I=0 to F
    print "(";
    for J=0 to C-1
      print A(J,I),",";
    next J
    print A(C,I),")";
  next I
  print "[",D,"]"
  if A(0,F)=0 then
    G=0
  else
    M=C+1
    for J=0 to C
      if A(J,F)=0 M=J: J=C
    next J
    for K=0 to F
       H=1
       for L=0 to M-1
          if A(L,F-K) >= A(L,F) H=0
       next L
       if H=1 then
          for L=0 to M-2
             B(L)=A(L,F)-A(L,F-K)
          next L
          for L=M-1 to C
             B(L)=0
          next L
          G=K: K=F
       endif
    next K
  endif
  for K=1 to D*G
    for L=0 to C
       A(L,F)=A(L,F-G)+B(L)
    next L   
    F=F+1
  next K
  rem print "D=",D,", G=",G,", B(0)=",B(0),", B(1)=",B(1),", B(2)=",B(2)
  F=F-1
  if F>200 break
wend

広告ブロッカーが検出されました。


広告収入で運営されている無料サイトWikiaでは、このたび広告ブロッカーをご利用の方向けの変更が加わりました。

広告ブロッカーが改変されている場合、Wikiaにアクセスしていただくことができなくなっています。カスタム広告ブロッカーを解除してご利用ください。

FANDOMでも見てみる

おまかせWiki