DAWG版が全てのテストをパスするようになった
@@ -24,7 +24,8 @@ | ||
24 | 24 | private: |
25 | 25 | unsigned base() const { return data & 0xFFFFFF; } |
26 | 26 | |
27 | - private: | |
27 | + //XXX: private: | |
28 | + public: | |
28 | 29 | // TODO: bit-fieldを使ってみる |
29 | 30 | unsigned data; |
30 | 31 | }; |
@@ -13,6 +13,7 @@ | ||
13 | 13 | : nodes(nodes), root(root), value(value) {} |
14 | 14 | |
15 | 15 | unsigned find_value(const char* key, int default_value) const { |
16 | + //std::cout << "# " << key << std::endl; | |
16 | 17 | unsigned node_index=root; |
17 | 18 | for(CharStream in(key);; in.read()) { |
18 | 19 | node_index = nodes[node_index].jump(in.peek()); |
@@ -19,6 +20,7 @@ | ||
19 | 20 | if(nodes[node_index].check_char()==in.peek()) { |
20 | 21 | unsigned terminal_index = nodes[node_index].jump('\0'); |
21 | 22 | if(nodes[terminal_index].check_char()=='\0') { |
23 | + //std::cout << " => " << nodes[terminal_index].value() << std::endl; | |
22 | 24 | return nodes[terminal_index].value(); |
23 | 25 | } |
24 | 26 | } else |
@@ -153,8 +155,8 @@ | ||
153 | 155 | } |
154 | 156 | |
155 | 157 | retry: |
156 | - unsigned next_index = nodes[node_index].jump(in.read()); | |
157 | - if(nodes[next_index].check_char()==in.prev()) { | |
158 | + unsigned next_index = nodes[node_index].jump(in.peek()); | |
159 | + if(nodes[next_index].check_char()==in.read()) { | |
158 | 160 | // succeeded |
159 | 161 | node_index = next_index; |
160 | 162 | unsigned terminal_index = nodes[node_index].jump('\0'); |