#include using namespace Upp; int QC(const char *a, const char *b); int QC3(const char *a, const char *b); int MemCmp(const char *a, const char *b, size_t len); CONSOLE_APP_MAIN { Index wrd; #ifdef PLATFORM_POSIX String f = LoadFile("/home/mirek/alice30.txt"); #else String f = LoadFile("e:/alice30.txt"); #endif int line = 1; const char *q = f; for(;;) { int c = *q; if(IsAlpha(c)) { const char *b = q++; while(IsAlNum(*q)) q++; if(q - b < 14) wrd.FindAdd(String(b, q)); } else { if(!c) break; if(c == '\n') ++line; q++; } } { RTIMING("MemCmp"); int n = 0; for(int i = 0; i < wrd.GetCount(); i++) for(int j = 0; j < wrd.GetCount(); j++) if(MemCmp(~wrd[i], ~wrd[j], 14) < 0) n++; RDUMP(n); } { RTIMING("memcmp"); int n = 0; for(int i = 0; i < wrd.GetCount(); i++) for(int j = 0; j < wrd.GetCount(); j++) if(memcmp(~wrd[i], ~wrd[j], 14) < 0) n++; RDUMP(n); } }