Skip to content

Instantly share code, notes, and snippets.

@shintakezou
Created January 15, 2014 18:20
Show Gist options
  • Save shintakezou/8441487 to your computer and use it in GitHub Desktop.
Save shintakezou/8441487 to your computer and use it in GitHub Desktop.
Check if a 32bit number decimal representation is made of 0 or 1 digits only.
/*
See StackOverflow
http://stackoverflow.com/questions/21137812/check-to-see-if-integer-is-one-in-which-each-digit-is-either-a-zero-or-a-one
to know why this exists. Do not take it seriously: the other answers show the way!
*/
#include <stdio.h>
#include <stdbool.h>
#include <inttypes.h>
#include <limits.h>
static uint32_t map01[256][2] = {
[0] = { 0x000000, 0x05F5E1 },
[1] = { 0x000000, 0x05F5E1 },
[2] = { 0x05F60C, 0x00002B },
[3] = { 0x05F60C, 0x00002B },
[4] = { 0x05F768, 0x000187 },
[5] = { 0x05F768, 0x000187 },
[6] = { 0x05F793, 0x0001B2 },
[7] = { 0x05F793, 0x0001B2 },
[8] = { 0x069002, 0x009A21 },
[9] = { 0x069002, 0x009A21 },
[10] = { 0x000000, 0x05F5E1 },
[11] = { 0x000000, 0x05F5E1 },
[12] = { 0x069DBE, 0x00A7DD },
[13] = { 0x069DBE, 0x00A7DD },
[14] = { 0x05F768, 0x000187 },
[15] = { 0x05F768, 0x000187 },
[16] = { 0x05F608, 0x000027 },
[17] = { 0x05F608, 0x000027 },
[18] = { 0x069002, 0x009A21 },
[19] = { 0x069002, 0x009A21 },
[20] = { 0x05F78F, 0x0001AE },
[21] = { 0x05F78F, 0x0001AE },
[22] = { 0x069DBE, 0x00A7DD },
[23] = { 0x069DBE, 0x00A7DD },
[24] = { 0x069029, 0x009A48 },
[25] = { 0x069029, 0x009A48 },
[26] = { 0x05F608, 0x000027 },
[27] = { 0x05F608, 0x000027 },
[28] = { 0x00A804, 0x069DE5 },
[29] = { 0x00A804, 0x069DE5 },
[30] = { 0x05F78F, 0x0001AE },
[31] = { 0x05F78F, 0x0001AE },
[32] = { 0x009A1D, 0x068FFE },
[33] = { 0x009A1D, 0x068FFE },
[34] = { 0x069029, 0x009A48 },
[35] = { 0x069029, 0x009A48 },
[36] = { 0x069DBA, 0x00A7D9 },
[37] = { 0x069DBA, 0x00A7D9 },
[38] = { 0x00A804, 0x069DE5 },
[39] = { 0x00A804, 0x069DE5 },
[40] = { 0x060527, 0x000F46 },
[41] = { 0x060527, 0x000F46 },
[42] = { 0x009A1D, 0x068FFE },
[43] = { 0x009A1D, 0x068FFE },
[44] = { 0x0606AE, 0x0010CD },
[45] = { 0x0606AE, 0x0010CD },
[46] = { 0x069DBA, 0x00A7D9 },
[47] = { 0x069DBA, 0x00A7D9 },
[48] = { 0x069025, 0x009A44 },
[49] = { 0x069025, 0x009A44 },
[50] = { 0x060527, 0x000F46 },
[51] = { 0x060527, 0x000F46 },
[52] = { 0x00A800, 0x069DE1 },
[53] = { 0x00A800, 0x069DE1 },
[54] = { 0x0606AE, 0x0010CD },
[55] = { 0x0606AE, 0x0010CD },
[56] = { 0x06054E, 0x000F6D },
[57] = { 0x06054E, 0x000F6D },
[58] = { 0x069025, 0x009A44 },
[59] = { 0x069025, 0x009A44 },
[60] = { 0x0606D5, 0x0010F4 },
[61] = { 0x0606D5, 0x0010F4 },
[62] = { 0x00A800, 0x069DE1 },
[63] = { 0x00A800, 0x069DE1 },
[64] = { 0x060523, 0x000F42 },
[65] = { 0x060523, 0x000F42 },
[66] = { 0x06054E, 0x000F6D },
[67] = { 0x06054E, 0x000F6D },
[68] = { 0x0606AA, 0x0010C9 },
[69] = { 0x0606AA, 0x0010C9 },
[70] = { 0x0606D5, 0x0010F4 },
[71] = { 0x0606D5, 0x0010F4 },
[72] = { 0x069F44, 0x00A963 },
[73] = { 0x069F44, 0x00A963 },
[74] = { 0x060523, 0x000F42 },
[75] = { 0x060523, 0x000F42 },
[76] = { 0x000004, 0x05F5E5 },
[77] = { 0x000004, 0x05F5E5 },
[78] = { 0x0606AA, 0x0010C9 },
[79] = { 0x0606AA, 0x0010C9 },
[80] = { 0x06054A, 0x000F69 },
[81] = { 0x06054A, 0x000F69 },
[82] = { 0x069F44, 0x00A963 },
[83] = { 0x069F44, 0x00A963 },
[84] = { 0x0606D1, 0x0010F0 },
[85] = { 0x0606D1, 0x0010F0 },
[86] = { 0x000004, 0x05F5E5 },
[87] = { 0x000004, 0x05F5E5 },
[88] = { 0x069F6B, 0x00A98A },
[89] = { 0x069F6B, 0x00A98A },
[90] = { 0x06054A, 0x000F69 },
[91] = { 0x06054A, 0x000F69 },
[92] = { 0x05F60C, 0x00002B },
[93] = { 0x05F60C, 0x00002B },
[94] = { 0x0606D1, 0x0010F0 },
[95] = { 0x0606D1, 0x0010F0 },
[96] = { 0x069F40, 0x00A95F },
[97] = { 0x069F40, 0x00A95F },
[98] = { 0x069F6B, 0x00A98A },
[99] = { 0x069F6B, 0x00A98A },
[100] = { 0x000000, 0x05F5E1 },
[101] = { 0x000000, 0x05F5E1 },
[102] = { 0x05F60C, 0x00002B },
[103] = { 0x05F60C, 0x00002B },
[104] = { 0x068E7B, 0x00989A },
[105] = { 0x068E7B, 0x00989A },
[106] = { 0x069F40, 0x00A95F },
[107] = { 0x069F40, 0x00A95F },
[108] = { 0x069002, 0x009A21 },
[109] = { 0x069002, 0x009A21 },
[110] = { 0x000000, 0x05F5E1 },
[111] = { 0x000000, 0x05F5E1 },
[112] = { 0x069F67, 0x00A986 },
[113] = { 0x069F67, 0x00A986 },
[114] = { 0x068E7B, 0x00989A },
[115] = { 0x068E7B, 0x00989A },
[116] = { 0x05F608, 0x000027 },
[117] = { 0x05F608, 0x000027 },
[118] = { 0x069002, 0x009A21 },
[119] = { 0x069002, 0x009A21 },
[120] = { 0x068EA2, 0x0098C1 },
[121] = { 0x068EA2, 0x0098C1 },
[122] = { 0x069F67, 0x00A986 },
[123] = { 0x069F67, 0x00A986 },
[124] = { 0x069029, 0x009A48 },
[125] = { 0x069029, 0x009A48 },
[126] = { 0x05F608, 0x000027 },
[127] = { 0x05F608, 0x000027 },
[128] = { 0x068E77, 0x009896 },
[129] = { 0x068E77, 0x009896 },
[130] = { 0x068EA2, 0x0098C1 },
[131] = { 0x068EA2, 0x0098C1 },
[132] = { 0x009A1D, 0x068FFE },
[133] = { 0x009A1D, 0x068FFE },
[134] = { 0x069029, 0x009A48 },
[135] = { 0x069029, 0x009A48 },
[136] = { 0x05F76B, 0x00018A },
[137] = { 0x05F76B, 0x00018A },
[138] = { 0x068E77, 0x009896 },
[139] = { 0x068E77, 0x009896 },
[140] = { 0x060527, 0x000F46 },
[141] = { 0x060527, 0x000F46 },
[142] = { 0x009A1D, 0x068FFE },
[143] = { 0x009A1D, 0x068FFE },
[144] = { 0x068E9E, 0x0098BD },
[145] = { 0x068E9E, 0x0098BD },
[146] = { 0x05F76B, 0x00018A },
[147] = { 0x05F76B, 0x00018A },
[148] = { 0x069025, 0x009A44 },
[149] = { 0x069025, 0x009A44 },
[150] = { 0x060527, 0x000F46 },
[151] = { 0x060527, 0x000F46 },
[152] = { 0x05F792, 0x0001B1 },
[153] = { 0x05F792, 0x0001B1 },
[154] = { 0x068E9E, 0x0098BD },
[155] = { 0x068E9E, 0x0098BD },
[156] = { 0x06054E, 0x000F6D },
[157] = { 0x06054E, 0x000F6D },
[158] = { 0x069025, 0x009A44 },
[159] = { 0x069025, 0x009A44 },
[160] = { 0x05F767, 0x000186 },
[161] = { 0x05F767, 0x000186 },
[162] = { 0x05F792, 0x0001B1 },
[163] = { 0x05F792, 0x0001B1 },
[164] = { 0x060523, 0x000F42 },
[165] = { 0x060523, 0x000F42 },
[166] = { 0x06054E, 0x000F6D },
[167] = { 0x06054E, 0x000F6D },
[168] = { 0x069DBD, 0x00A7DC },
[169] = { 0x069DBD, 0x00A7DC },
[170] = { 0x05F767, 0x000186 },
[171] = { 0x05F767, 0x000186 },
[172] = { 0x069F44, 0x00A963 },
[173] = { 0x069F44, 0x00A963 },
[174] = { 0x060523, 0x000F42 },
[175] = { 0x060523, 0x000F42 },
[176] = { 0x05F78E, 0x0001AD },
[177] = { 0x05F78E, 0x0001AD },
[178] = { 0x069DBD, 0x00A7DC },
[179] = { 0x069DBD, 0x00A7DC },
[180] = { 0x06054A, 0x000F69 },
[181] = { 0x06054A, 0x000F69 },
[182] = { 0x069F44, 0x00A963 },
[183] = { 0x069F44, 0x00A963 },
[184] = { 0x00A803, 0x069DE4 },
[185] = { 0x00A803, 0x069DE4 },
[186] = { 0x05F78E, 0x0001AD },
[187] = { 0x05F78E, 0x0001AD },
[188] = { 0x069F6B, 0x00A98A },
[189] = { 0x069F6B, 0x00A98A },
[190] = { 0x06054A, 0x000F69 },
[191] = { 0x06054A, 0x000F69 },
[192] = { 0x069DB9, 0x00A7D8 },
[193] = { 0x069DB9, 0x00A7D8 },
[194] = { 0x00A803, 0x069DE4 },
[195] = { 0x00A803, 0x069DE4 },
[196] = { 0x069F40, 0x00A95F },
[197] = { 0x069F40, 0x00A95F },
[198] = { 0x069F6B, 0x00A98A },
[199] = { 0x069F6B, 0x00A98A },
[200] = { 0x0606AD, 0x0010CC },
[201] = { 0x0606AD, 0x0010CC },
[202] = { 0x069DB9, 0x00A7D8 },
[203] = { 0x069DB9, 0x00A7D8 },
[204] = { 0x068E7B, 0x00989A },
[205] = { 0x068E7B, 0x00989A },
[206] = { 0x069F40, 0x00A95F },
[207] = { 0x069F40, 0x00A95F },
[208] = { 0x069DE0, 0x00A7FF },
[209] = { 0x069DE0, 0x00A7FF },
[210] = { 0x0606AD, 0x0010CC },
[211] = { 0x0606AD, 0x0010CC },
[212] = { 0x069F67, 0x00A986 },
[213] = { 0x069F67, 0x00A986 },
[214] = { 0x068E7B, 0x00989A },
[215] = { 0x068E7B, 0x00989A },
[216] = { 0x0606D4, 0x0010F3 },
[217] = { 0x0606D4, 0x0010F3 },
[218] = { 0x069DE0, 0x00A7FF },
[219] = { 0x069DE0, 0x00A7FF },
[220] = { 0x068EA2, 0x0098C1 },
[221] = { 0x068EA2, 0x0098C1 },
[222] = { 0x069F67, 0x00A986 },
[223] = { 0x069F67, 0x00A986 },
[224] = { 0x0606A9, 0x0010C8 },
[225] = { 0x0606A9, 0x0010C8 },
[226] = { 0x0606D4, 0x0010F3 },
[227] = { 0x0606D4, 0x0010F3 },
[228] = { 0x068E77, 0x009896 },
[229] = { 0x068E77, 0x009896 },
[230] = { 0x068EA2, 0x0098C1 },
[231] = { 0x068EA2, 0x0098C1 },
[232] = { 0x000003, 0x05F5E4 },
[233] = { 0x000003, 0x05F5E4 },
[234] = { 0x0606A9, 0x0010C8 },
[235] = { 0x0606A9, 0x0010C8 },
[236] = { 0x05F76B, 0x00018A },
[237] = { 0x05F76B, 0x00018A },
[238] = { 0x068E77, 0x009896 },
[239] = { 0x068E77, 0x009896 },
[240] = { 0x0606D0, 0x0010EF },
[241] = { 0x0606D0, 0x0010EF },
[242] = { 0x000003, 0x05F5E4 },
[243] = { 0x000003, 0x05F5E4 },
[244] = { 0x068E9E, 0x0098BD },
[245] = { 0x068E9E, 0x0098BD },
[246] = { 0x05F76B, 0x00018A },
[247] = { 0x05F76B, 0x00018A },
[248] = { 0x05F60B, 0x00002A },
[249] = { 0x05F60B, 0x00002A },
[250] = { 0x0606D0, 0x0010EF },
[251] = { 0x0606D0, 0x0010EF },
[252] = { 0x05F792, 0x0001B1 },
[253] = { 0x05F792, 0x0001B1 },
[254] = { 0x068E9E, 0x0098BD },
[255] = { 0x068E9E, 0x0098BD },
};
bool only01(uint32_t n)
{
uint32_t i = n & 0xff;
uint32_t r = n >> 8;
return map01[i][0] == r || map01[i][1] == r;
}
int main(void)
{
uint32_t i;
for (i = 0; i < 2000000000; i++) {
if (only01(i)) printf("%09u\n", i);
}
return 0;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment