fix: do not find substring with length 1 and print test case after updating result
This commit is contained in:
		
							parent
							
								
									4b09788441
								
							
						
					
					
						commit
						f5582682e9
					
				@ -107,7 +107,8 @@ result find(const std::string &s, const unsigned long k) {
 | 
				
			|||||||
      start++;
 | 
					      start++;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    if (char_count.size() == k &&
 | 
					    if (char_count.size() == k &&
 | 
				
			||||||
        end - start > r.longest_end - r.longest_start) {
 | 
					        (end - start > r.longest_end - r.longest_start ||
 | 
				
			||||||
 | 
					         r.match_found == false)) {
 | 
				
			||||||
      r.longest_start = start, r.longest_end = end;
 | 
					      r.longest_start = start, r.longest_end = end;
 | 
				
			||||||
      r.match_found = true;
 | 
					      r.match_found = true;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
@ -170,30 +171,30 @@ int main(int argc, char *argv[]) {
 | 
				
			|||||||
        << std::endl;
 | 
					        << std::endl;
 | 
				
			||||||
    random_number_generator<unsigned int> random_ascii_char(97, 122); // a-z
 | 
					    random_number_generator<unsigned int> random_ascii_char(97, 122); // a-z
 | 
				
			||||||
    random_number_generator<unsigned int> rng;
 | 
					    random_number_generator<unsigned int> rng;
 | 
				
			||||||
    for (unsigned int i = 0; i < 1; i++) {
 | 
					    for (unsigned int i = 0; i < 10; i++) {
 | 
				
			||||||
      test_case t;
 | 
					      test_case t;
 | 
				
			||||||
      t.i.s += (char)random_ascii_char();
 | 
					      t.i.s += (char)random_ascii_char();
 | 
				
			||||||
      std::cout << t;
 | 
					 | 
				
			||||||
      t.r = find(t.i.s, t.i.k);
 | 
					      t.r = find(t.i.s, t.i.k);
 | 
				
			||||||
 | 
					      std::cout << t;
 | 
				
			||||||
      for (unsigned int j = 0; j < 10; j++) {
 | 
					      for (unsigned int j = 0; j < 10; j++) {
 | 
				
			||||||
        for (unsigned int k = 0, increase_str_len_by = rng(100, 1000);
 | 
					        for (unsigned int k = 0, increase_str_len_by = rng(100, 1000);
 | 
				
			||||||
             k < increase_str_len_by; k++) {
 | 
					             k < increase_str_len_by; k++) {
 | 
				
			||||||
          t.i.s += (char)random_ascii_char();
 | 
					          t.i.s += (char)random_ascii_char();
 | 
				
			||||||
          std::cout << t;
 | 
					 | 
				
			||||||
          result r = find(t.i.s, t.i.k);
 | 
					          result r = find(t.i.s, t.i.k);
 | 
				
			||||||
          if (r.match_found && t.r.match_found)
 | 
					          if (r.match_found && t.r.match_found)
 | 
				
			||||||
            assert(r.longest_end - r.longest_start >=
 | 
					            assert(r.longest_end - r.longest_start >=
 | 
				
			||||||
                   t.r.longest_end - t.r.longest_start);
 | 
					                   t.r.longest_end - t.r.longest_start);
 | 
				
			||||||
          t.r = r;
 | 
					          t.r = r;
 | 
				
			||||||
 | 
					          std::cout << t;
 | 
				
			||||||
          assert(K_verify(t));
 | 
					          assert(K_verify(t));
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        while (t.r.match_found) {
 | 
					        while (t.r.match_found) {
 | 
				
			||||||
          std::cout << t;
 | 
					 | 
				
			||||||
          result r = find(t.i.s, ++t.i.k);
 | 
					          result r = find(t.i.s, ++t.i.k);
 | 
				
			||||||
          if (r.match_found)
 | 
					          if (r.match_found)
 | 
				
			||||||
            assert(r.longest_end - r.longest_start >=
 | 
					            assert(r.longest_end - r.longest_start >=
 | 
				
			||||||
                   t.r.longest_end - t.r.longest_start);
 | 
					                   t.r.longest_end - t.r.longest_start);
 | 
				
			||||||
          t.r = r;
 | 
					          t.r = r;
 | 
				
			||||||
 | 
					          std::cout << t;
 | 
				
			||||||
          assert(K_verify(t));
 | 
					          assert(K_verify(t));
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        t.i.k = rng(1, --t.i.k);
 | 
					        t.i.k = rng(1, --t.i.k);
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
		Reference in New Issue
	
	Block a user