⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 tset.cc

📁 早期freebsd实现
💻 CC
📖 第 1 页 / 共 2 页
字号:
/* a test file for sets*/#ifdef PTIMESconst int ptimes = 1;#elseconst int ptimes = 0;#endif#include <stream.h>#include <assert.h>#include <builtin.h>#define tassert(ex) { cerr << #ex; \                       if ((ex)) cerr << " OK\n"; \                       else cerr << " Fail\n"; }unsigned int hash(int x) { return multiplicativehash(x) ; }#include "iSet.h"int SIZE;int *nums;int *odds;int *dups;void printset(intSet& a){  int maxprint = 20;  cout << "[";  int k = 0;  for (Pix i = a.first(); i != 0 && k < maxprint; a.next(i),++k)     cout << a(i) << " ";  if (i != 0) cout << "...]\n";  else cout << "]\n";}void add(int x[], intSet& a){  for (int i = 0; i < SIZE; ++i) a.add(x[i]);}#include <MLCG.h>MLCG randgen;void permute(int x[]){  for (int i = 1; i < SIZE; ++i)  {    int j = randgen.asLong() % (i + 1);    int tmp = x[i]; x[i] = x[j]; x[j] = tmp;  }}void makenums(){  for (int i = 0; i < SIZE; ++i) nums[i] = i + 1; }void makeodds(){  for (int i = 0; i < SIZE; ++i) odds[i] = 2 * i + 1;  permute(odds);}void makedups(){  for (int i = 0; i < SIZE; i += 2) dups[i] = dups[i+1] = i/2 + 1;  permute(dups);}               void generictest(intSet& a, intSet& b, intSet& c){  c.clear();  assert(c.empty());  c |= a;  assert(c == a);  assert(c <= a);  c.del(a(a.first()));  assert(c <= a);  assert(c != a);  Pix i = a.first();  assert(!c.contains(a(i)));  for (a.next(i); i != 0; a.next(i)) assert(c.contains(a(i)));  c.add(a(a.first()));  for (i = a.first(); i != 0; a.next(i)) assert(c.contains(a(i)));  c |= b;  assert(b <= c);  for (i = b.first(); i != 0; b.next(i)) assert(c.contains(b(i)));  for (i = a.first(); i != 0; a.next(i)) assert(c.contains(a(i)));  c &= a;  for (i = a.first(); i != 0; a.next(i)) assert(c.contains(a(i)));  c -= a;  assert(!(a <= c));  for (i = a.first(); i != 0; a.next(i)) assert(!c.contains(a(i)));  for (i = b.first(); i != 0; b.next(i)) c.del(b(i));  assert(c.empty());  assert(a.OK());  assert(b.OK());  assert(c.OK());}#include "iXPSet.h"void XPtest(){  intXPSet a(SIZE);  add(nums, a);  assert(a.length() == SIZE);  for (int j = 1; j <= SIZE; ++j) assert(a.contains(j));  intXPSet b(SIZE);  add(odds, b);  assert(b.length() == SIZE);  intXPSet c(SIZE);  add(dups, c);   assert(c.length() == SIZE/2);  assert(c <= a);  intXPSet d(a);  d &= b;  cout << "a: "; printset(a);  cout << "b: "; printset(b);  cout << "c: "; printset(c);  cout << "d: "; printset(d);  assert(d.length() == SIZE/2);  for (Pix p = d.first(); p; d.next(p)) assert((d(p) & 1) != 0);  a.del(1);  assert(a.length() == SIZE-1);  assert(!a.contains(1));  c.clear();  assert(c.empty());  c |= a;  assert(c == a);  assert(c <= a);  c.del(a(a.first()));  assert(c <= a);  assert(c != a);  Pix i = a.first();  assert(!c.contains(a(i)));  for (a.next(i); i != 0; a.next(i)) assert(c.contains(a(i)));  c.add(a(a.first()));  for (i = a.first(); i != 0; a.next(i)) assert(c.contains(a(i)));  c |= b;  assert(b <= c);  for (i = b.first(); i != 0; b.next(i)) assert(c.contains(b(i)));  for (i = a.first(); i != 0; a.next(i)) assert(c.contains(a(i)));  c &= a;  for (i = a.first(); i != 0; a.next(i)) assert(c.contains(a(i)));  c -= a;  assert(!(a <= c));  for (i = a.first(); i != 0; a.next(i)) assert(!c.contains(a(i)));  for (i = b.first(); i != 0; b.next(i)) c.del(b(i));  assert(c.empty());  assert(a.OK());  assert(b.OK());  assert(c.OK());  generictest(a, b, c);}#include "iSLSet.h"void SLtest(){  intSLSet a;  add(nums, a);  assert(a.length() == SIZE);  for (int j = 1; j <= SIZE; ++j) assert(a.contains(j));  intSLSet b;  add(odds, b);  assert(b.length() == SIZE);  intSLSet c;  add(dups, c);   assert(c.length() == SIZE/2);  assert(c <= a);  intSLSet d(a);  d &= b;  cout << "a: "; printset(a);  cout << "b: "; printset(b);  cout << "c: "; printset(c);  cout << "d: "; printset(d);  assert(d.length() == SIZE/2);  for (Pix p = d.first(); p; d.next(p)) assert((d(p) & 1) != 0);  a.del(1);  assert(a.length() == SIZE-1);  assert(!a.contains(1));  c.clear();  assert(c.empty());  c |= a;  assert(c == a);  assert(c <= a);  c.del(a(a.first()));  assert(c <= a);  assert(c != a);  Pix i = a.first();  assert(!c.contains(a(i)));  for (a.next(i); i != 0; a.next(i)) assert(c.contains(a(i)));  c.add(a(a.first()));  for (i = a.first(); i != 0; a.next(i)) assert(c.contains(a(i)));  c |= b;  assert(b <= c);  for (i = b.first(); i != 0; b.next(i)) assert(c.contains(b(i)));  for (i = a.first(); i != 0; a.next(i)) assert(c.contains(a(i)));  c &= a;  for (i = a.first(); i != 0; a.next(i)) assert(c.contains(a(i)));  c -= a;  assert(!(a <= c));  for (i = a.first(); i != 0; a.next(i)) assert(!c.contains(a(i)));  for (i = b.first(); i != 0; b.next(i)) c.del(b(i));  assert(c.empty());  assert(a.OK());  assert(b.OK());  assert(c.OK());  generictest(a, b, c);}#include "iVHSet.h"void VHtest(){  intVHSet a(SIZE);  add(nums, a);  assert(a.length() == SIZE);  for (int j = 1; j <= SIZE; ++j) assert(a.contains(j));  intVHSet b(SIZE);  add(odds, b);  assert(b.length() == SIZE);  intVHSet c(SIZE);  add(dups, c);   assert(c.length() == SIZE/2);  assert(c <= a);  intVHSet d(a);  d &= b;  cout << "a: "; printset(a);  cout << "b: "; printset(b);  cout << "c: "; printset(c);  cout << "d: "; printset(d);  assert(d.length() == SIZE/2);  for (Pix p = d.first(); p; d.next(p)) assert((d(p) & 1) != 0);  a.del(1);  assert(a.length() == SIZE-1);  assert(!a.contains(1));  c.clear();  assert(c.empty());  c |= a;  assert(c == a);  assert(c <= a);  c.del(a(a.first()));  assert(c <= a);  assert(c != a);  Pix i = a.first();  assert(!c.contains(a(i)));  for (a.next(i); i != 0; a.next(i)) assert(c.contains(a(i)));  c.add(a(a.first()));  for (i = a.first(); i != 0; a.next(i)) assert(c.contains(a(i)));  c |= b;  assert(b <= c);  for (i = b.first(); i != 0; b.next(i)) assert(c.contains(b(i)));  for (i = a.first(); i != 0; a.next(i)) assert(c.contains(a(i)));  c &= a;  for (i = a.first(); i != 0; a.next(i)) assert(c.contains(a(i)));  c -= a;  assert(!(a <= c));  for (i = a.first(); i != 0; a.next(i)) assert(!c.contains(a(i)));  for (i = b.first(); i != 0; b.next(i)) c.del(b(i));  assert(c.empty());  assert(a.OK());  assert(b.OK());  assert(c.OK());  generictest(a, b, c);}#include "iVOHSet.h"void VOHtest(){  intVOHSet a(SIZE);  add(nums, a);  assert(a.length() == SIZE);  for (int j = 1; j <= SIZE; ++j) assert(a.contains(j));  intVOHSet b(SIZE);  add(odds, b);  assert(b.length() == SIZE);  intVOHSet c(SIZE);  add(dups, c);   assert(c.length() == SIZE/2);  assert(c <= a);  intVOHSet d(a);  d &= b;  cout << "a: "; printset(a);  cout << "b: "; printset(b);  cout << "c: "; printset(c);  cout << "d: "; printset(d);  assert(d.length() == SIZE/2);  for (Pix p = d.first(); p; d.next(p)) assert((d(p) & 1) != 0);  a.del(1);  assert(a.length() == SIZE-1);  assert(!a.contains(1));  c.clear();  assert(c.empty());  c |= a;  assert(c == a);  assert(c <= a);  c.del(a(a.first()));  assert(c <= a);  assert(c != a);  Pix i = a.first();  assert(!c.contains(a(i)));  for (a.next(i); i != 0; a.next(i)) assert(c.contains(a(i)));  c.add(a(a.first()));  for (i = a.first(); i != 0; a.next(i)) assert(c.contains(a(i)));  c |= b;  assert(b <= c);  for (i = b.first(); i != 0; b.next(i)) assert(c.contains(b(i)));  for (i = a.first(); i != 0; a.next(i)) assert(c.contains(a(i)));  c &= a;  for (i = a.first(); i != 0; a.next(i)) assert(c.contains(a(i)));  c -= a;  assert(!(a <= c));  for (i = a.first(); i != 0; a.next(i)) assert(!c.contains(a(i)));  for (i = b.first(); i != 0; b.next(i)) c.del(b(i));  assert(c.empty());  assert(a.OK());  assert(b.OK());  assert(c.OK());  generictest(a, b, c);}#include "iCHSet.h"void CHtest(){  intCHSet a(SIZE);  add(nums, a);  assert(a.length() == SIZE);  for (int j = 1; j <= SIZE; ++j) assert(a.contains(j));  intCHSet b(SIZE);  add(odds, b);  assert(b.length() == SIZE);  intCHSet c(SIZE);  add(dups, c);   assert(c.length() == SIZE/2);  assert(c <= a);  intCHSet d(a);  d &= b;  cout << "a: "; printset(a);  cout << "b: "; printset(b);  cout << "c: "; printset(c);  cout << "d: "; printset(d);  assert(d.length() == SIZE/2);  for (Pix p = d.first(); p; d.next(p)) assert((d(p) & 1) != 0);  a.del(1);  assert(a.length() == SIZE-1);  assert(!a.contains(1));  c.clear();  assert(c.empty());  c |= a;  assert(c == a);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -