2018年3月7日 星期三

列舉元素組合

最近在研究iota,發現他是使用平衡三進制{-1,0,1}的方式。所以在寫code時,必須將二進制轉換成三進制。

而tryte就是三進制的3次方,地位等同於二進制中的byte。 我們把它想像成三進制中的程式變數基本單位好了。程式上的變數通常也是用幾個byte幾個byte來表達。

當二進制轉換成三進制必須檢查是否符合tryte的合法元素。
但是哪些元素是符合的。我這邊懶得自己列舉,就交給程式來跑

程式碼如下


#include <vector>

using namespace std;

void find_element_set(const vector<int> &elements, vector<int> &element_collector,vector<vector<int>> &elements_set)
{
    if (element_collector.size() == 3)
    {
        elements_set.push_back(element_collector);
        return;
    }

    for(int i = 0; i < elements.size(); i++)
    {
        element_collector.push_back(elements[i]);
        find_element_set(elements, element_collector, elements_set);
        element_collector.pop_back();
    }
}

int main()
{
    vector<vector<int>> element_set;
    vector<int> elements{0,1,-1}, element_collector;

    find_element_set(elements, element_collector, element_set);

    return 0;
}

沒有留言 :

張貼留言