#include <iostream>
#include <string>
#include <algorithm>
using namespace std;
bool compare0( char a, char b) {
//default sorting (currently what World of Tanks uses, apparently)
return a< b;
}
bool compare1( char a, char b) {
//case-insensitive sorting alphabetically, but doesn't consider numeric digits or other characters
return a% 32 < b% 32 ;
}
bool compare2( char a, char b) {
//case-insensitive sorting alphabetically, and does consider numeric digits and other characters
return ( a> 64 ? a% 32 + 64 : a) < ( b> 64 ? b% 32 + 64 : b) ;
}
int main( ) {
string names= "QW6ERTYUI7OPASqwertyu3iopDFzxcvbnm124GHJKasdfghjk5l9LZX8CVBN0M" ;
string
names0 = names,
names1 = names,
names2 = names;
sort( names0.begin ( ) ,names0.end ( ) ,compare0) ;
sort( names1.begin ( ) ,names1.end ( ) ,compare1) ;
sort( names2.begin ( ) ,names2.end ( ) ,compare2) ;
cout << "First comparator: \t " << names0 << endl;
cout << "Second comparator: \t " << names1 << endl;
cout << "Third comparator: \t " << names2 << endl;
return 0 ;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8c3RyaW5nPgojaW5jbHVkZSA8YWxnb3JpdGhtPgoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCmJvb2wgY29tcGFyZTAoY2hhciBhLCBjaGFyIGIpewoJLy9kZWZhdWx0IHNvcnRpbmcgKGN1cnJlbnRseSB3aGF0IFdvcmxkIG9mIFRhbmtzIHVzZXMsIGFwcGFyZW50bHkpCglyZXR1cm4gYTxiOwp9Cgpib29sIGNvbXBhcmUxKGNoYXIgYSwgY2hhciBiKXsKCS8vY2FzZS1pbnNlbnNpdGl2ZSBzb3J0aW5nIGFscGhhYmV0aWNhbGx5LCBidXQgZG9lc24ndCBjb25zaWRlciBudW1lcmljIGRpZ2l0cyBvciBvdGhlciBjaGFyYWN0ZXJzCglyZXR1cm4gYSUzMjxiJTMyOwp9Cgpib29sIGNvbXBhcmUyKGNoYXIgYSwgY2hhciBiKXsKCS8vY2FzZS1pbnNlbnNpdGl2ZSBzb3J0aW5nIGFscGhhYmV0aWNhbGx5LCBhbmQgZG9lcyBjb25zaWRlciBudW1lcmljIGRpZ2l0cyBhbmQgb3RoZXIgY2hhcmFjdGVycwoJcmV0dXJuIChhPjY0P2ElMzIrNjQ6YSk8KGI+NjQ/YiUzMis2NDpiKTsKfQoKaW50IG1haW4oKXsKCXN0cmluZyBuYW1lcz0iUVc2RVJUWVVJN09QQVNxd2VydHl1M2lvcERGenhjdmJubTEyNEdISkthc2RmZ2hqazVsOUxaWDhDVkJOME0iOwoJc3RyaW5nIAoJCW5hbWVzMCA9IG5hbWVzLAoJCW5hbWVzMSA9IG5hbWVzLAoJCW5hbWVzMiA9IG5hbWVzOwoJc29ydChuYW1lczAuYmVnaW4oKSxuYW1lczAuZW5kKCksY29tcGFyZTApOwoJc29ydChuYW1lczEuYmVnaW4oKSxuYW1lczEuZW5kKCksY29tcGFyZTEpOwoJc29ydChuYW1lczIuYmVnaW4oKSxuYW1lczIuZW5kKCksY29tcGFyZTIpOwoJY291dCA8PCAiRmlyc3QgY29tcGFyYXRvcjogXHQiIDw8IG5hbWVzMCA8PCBlbmRsOwoJY291dCA8PCAiU2Vjb25kIGNvbXBhcmF0b3I6IFx0IiA8PCBuYW1lczEgPDwgZW5kbDsKCWNvdXQgPDwgIlRoaXJkIGNvbXBhcmF0b3I6IFx0IiA8PCBuYW1lczIgPDwgZW5kbDsKCXJldHVybiAwOwp9