namespace cose
{
const unsigned int alphaset[ 128 ] =
{
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 1 << 0, 1 << 1, 1 << 2, 1 << 3, 1 << 4, 1 << 5, 1 << 6,
1 << 7, 1 << 8, 1 << 9, 1 << 10, 1 << 11, 1 << 12, 1 << 13, 1 << 14,
1 << 15, 1 << 16, 1 << 17, 1 << 18, 1 << 19, 1 << 20, 1 << 21, 1 << 22,
1 << 23, 1 << 24, 1 << 25, 0, 0, 0, 0, 0,
0, 1 << 0, 1 << 1, 1 << 2, 1 << 3, 1 << 4, 1 << 5, 1 << 6,
1 << 7, 1 << 8, 1 << 9, 1 << 10, 1 << 11, 1 << 12, 1 << 13, 1 << 14,
1 << 15, 1 << 16, 1 << 17, 1 << 18, 1 << 19, 1 << 20, 1 << 21, 1 << 22,
1 << 23, 1 << 24, 1 << 25, 0, 0, 0, 0, 0,
};
bool is_pangram( char* str )
{
unsigned int mux = 0;
while( *str ) mux |= alphaset[ *str++ ];
return mux == 0x03FFFFFF;
}
};
#include <iostream>
using namespace std;
int main()
{
cout << (int)cose::is_pangram( "abcdefghijklmnopqrstuvwxyz" ) << endl;
return 0;
}
결과값은 1입니다만?
a빼고 하면 false나옴?
넵 0 나옵니다만?
z~a 하면 1나오나요?
당연하죠.
OR 하는거 안보이십니까~
아항- 이렇게 코드를 풀어서 설명해주시니 이래갔음요 ㅋㅋ
ㅇㅇ
sort안해도 되네요ㅋ 캐신기
그게 count 와 bit-field 의 차이죠
bit-field 는 병렬화를 기본 가정합니다.
컴퓨터도 기계였단걸 잊었음을 반성합니다- 꾸벅