diff options
Diffstat (limited to 'aoc/2022/06/part-one.d')
-rw-r--r-- | aoc/2022/06/part-one.d | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/aoc/2022/06/part-one.d b/aoc/2022/06/part-one.d new file mode 100644 index 0000000..c914704 --- /dev/null +++ b/aoc/2022/06/part-one.d @@ -0,0 +1,24 @@ +import core.stdc.stdio : getchar, printf; + +extern(C) void main() +{ + slide: for (auto q = 0u, i = 1u; q & 0xffu ^ '\n'; ++i) + { + q <<= 8u; + q |= getchar(); + if (i < 4) + continue; + + auto p = cast(ubyte*) &q; + for (auto s = 0u, j = 0u; j < 4u; ++j) + { + auto b = 1u << (p[j] & 0x1fu); + if (s & b) + continue slide; + s |= b; + } + + printf("%d\n", i); + break; + } +} |