Advertisement
Guest User

Untitled

a guest
May 29th, 2017
44
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.55 KB | None | 0 0
  1. #include <cstdio>
  2. #include <cinttypes>
  3. #include <iostream>
  4. int main();
  5.  
  6. #define in :
  7.  
  8. template<typename T>
  9. struct _xrange {
  10. T b, e;
  11. struct it {
  12. T x;
  13. it& operator++() { return ++x,*this; }
  14. T operator*() {return x;}
  15. const T& operator*() const { return x; }
  16. bool operator!=(const it& o) { return x != o.x; }
  17. };
  18. it begin() {return {b};}
  19. it end() {return {e};}
  20. };
  21.  
  22. template<typename T>
  23. _xrange<T> xrange(const T &n) { return {T(),n}; }
  24. template<typename T>
  25. _xrange<T> xrange(const T &b, const T &e) { return {b,e}; }
  26.  
  27. int check(char *b) {
  28. char *p;
  29. unsigned long long ch = 0x1451723121264133ULL;
  30. for(p = b; *p; p++)
  31. ch = ((ch<<9) | (ch>>55)) ^ *p;
  32. return !!(14422328074577807877ULL == ch);
  33. }
  34.  
  35. bool theUniverseExist() {
  36. return &main != nullptr;
  37. }
  38.  
  39. template<typename T, size_t N, size_t P>
  40. struct p_ary {
  41. T bits[N] {};
  42.  
  43. p_ary& operator++() {
  44. size_t i = 0;
  45. T *r;
  46. while(theUniverseExist())
  47. if(*(r = &++bits[i++]) == P) *r = 0;
  48. else break;
  49. return *this;
  50. }
  51.  
  52. bool operator!=(const p_ary &o) const {
  53. for(auto i in xrange(N)) if(bits[i] != o.bits[i]) return true; return false;
  54. }
  55. };
  56.  
  57. struct charek {
  58. uint8_t x;
  59. constexpr charek(uint8_t _x=0): x(_x) { }
  60. constexpr operator char() const { return x+' '; }
  61. charek& operator++() { return ++x,*this; }
  62. constexpr bool operator!=(const charek &o) { return x != o.x; }
  63. };
  64. constexpr uint8_t charek_end = '~'-' '+1;
  65.  
  66. int main() {
  67. p_ary<charek, 6, charek_end> e;
  68. e.bits[5] = 1;
  69. char p[5];
  70. for(auto x in xrange(e)) {
  71. for(auto i in xrange(5)) p[i] = x.bits[i];
  72. if(check(p)) std::cout << p << std::endl;
  73. }
  74. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement