他の方法がわからないので、同じ長さの2つのテーブルを関数と比較しようとしています。ただし、次の関数では登録に失敗し、理由がわかりません。誰かがこの問題について洞察を提供できるか、2つのテーブルを比較するためのより良い方法を持っていることを望んでいます。
テーブルには次のコードが入力されています。
str = "parameters determined by program (all digits)"
tableone = {}
for word in str:gmatch("%d") do table.insert(tableone,word) end
もちろん、個々のテーブル名を除いて、両方のテーブルで同じです。テーブルは正しく入力されており、印刷すると正しく表示されます。この質問のために、次の2つの表を示します。
tableone = {}
tabletwo = {}
for i=1,4 do table.insert(tableone, i) end
for i=1,4 do table.insert(tabletwo, i) end
明らかに、これら2つのテーブルは互いに等しくなります。インデックステーブルを比較するために作成した関数は次のとおりです。
function comparetables(t1, t2)
matchct = 0
for i=1,#t1 do
if t1[i] == t2[i] then
matchct = matchct + 1
end
if matchct == #t1 then
return true
end
end
やってみた
print(comparetables(tableone,tabletwo))
「true」と表示されるかどうかを確認しますが、運がありません。私には、問題なく動作するように思えます。しかし、そうではありません。私は何が欠けていますか?誰かがすでに書いているかもしれないtable.compare関数のようなものを検索しようとしましたが、そのような運はありませんでした。提案をありがとう!
追加情報:
私がテーブルを比較している理由は、マスターメインタイプのゲームのためです。つまり、テーブルを比較するときは、次の3つのルールを適用する必要があります。私が作成した機能は、そこから作業できると思って、始めたばかりでした。
- テーブルを比較するときに、数値が一致すると、Ccountが1増加します。
- テーブルを比較するときに、値が別のインデックス位置にある場合は、Pcountを1ずつ増やします。
たとえば、値のテーブル{1、3、3、4}と推測値{4、4、3、1}の場合、Pcountは2(1つは4と1)、Ccountは1を返します。 (3番目の位置にある3つ)。最も難しい部分の1つは、推測の2番目の4がPcountをまったくインクリメントしてはならないことを認識するための比較を取得することだと思います。