Guest User

Untitled

a guest
Jul 16th, 2018
141
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.52 KB | None | 0 0
  1. #include <iostream>
  2. #include <string>
  3.  
  4. struct table {
  5. std::string s;
  6.  
  7. table() {}
  8. ~table() { std::cout << this->s; }
  9. table(const int n) : s{std::to_string(n)} {}
  10. table(std::string&& s_) : s{std::move(s_)} {}
  11. table(table&& other) : s{other.take()} {}
  12. table operator=(const int n) { return this->take() + " = " + std::to_string(n); }
  13. table operator=(table&& rhs) { return this->take() + " = " + rhs.take(); }
  14.  
  15. std::string take() { const auto s = this->s; this->s.clear(); return s; }
  16. bool empty() const { return this->s.empty(); }
  17. const char& back() const { return this->s.back(); }
  18. };
  19.  
  20. table operator++(table&& t, int) { return t.take(); }
  21. table operator--(table&& t, int) { return t.take(); }
  22. table operator-(table&& lhs, table&& rhs) { return lhs.take() + rhs.take(); }
  23. table operator*(table&& lhs, table&& rhs) { return lhs.take() + " x " + rhs.take(); }
  24. table operator||(table&& lhs, table&& rhs) { return lhs.take() + "\t" + rhs.take(); }
  25. table operator|(table&& lhs, table&& rhs) { return lhs.empty() || lhs.back() == '\n' ? lhs.take() + rhs.take() : lhs.take() + "\n" + rhs.take(); }
  26. table operator/(table&& lhs, table&& rhs) { return lhs.take() + "\n\n" + rhs.take(); }
  27.  
  28. #define x * (table)
  29. #define o table{}
  30.  
  31. int main() {
  32. o-------------------------------------------------------o
  33. | 2 x 1 = 2 || 3 x 1 = 3 || 4 x 1 = 4 || 5 x 1 = 5 \
  34. | 2 x 2 = 4 || 3 x 2 = 6 || 4 x 2 = 8 || 5 x 2 = 10 \
  35. | 2 x 3 = 6 || 3 x 3 = 9 || 4 x 3 = 12 || 5 x 3 = 15 \
  36. | 2 x 4 = 8 || 3 x 4 = 12 || 4 x 4 = 16 || 5 x 4 = 20 \
  37. | 2 x 5 = 10 || 3 x 5 = 15 || 4 x 5 = 20 || 5 x 5 = 25 \
  38. | 2 x 6 = 12 || 3 x 6 = 18 || 4 x 6 = 24 || 5 x 6 = 30 \
  39. | 2 x 7 = 14 || 3 x 7 = 21 || 4 x 7 = 28 || 5 x 7 = 35 \
  40. | 2 x 8 = 16 || 3 x 8 = 24 || 4 x 8 = 32 || 5 x 8 = 40 \
  41. | 2 x 9 = 18 || 3 x 9 = 27 || 4 x 9 = 36 || 5 x 9 = 45 /
  42. o------------++------------++------------++-------------o
  43. | 6 x 1 = 6 || 7 x 1 = 7 || 8 x 1 = 8 || 9 x 1 = 9 \
  44. | 6 x 2 = 12 || 7 x 2 = 14 || 8 x 2 = 16 || 9 x 2 = 18 \
  45. | 6 x 3 = 18 || 7 x 3 = 21 || 8 x 3 = 24 || 9 x 3 = 27 \
  46. | 6 x 4 = 24 || 7 x 4 = 28 || 8 x 4 = 32 || 9 x 4 = 36 \
  47. | 6 x 5 = 30 || 7 x 5 = 35 || 8 x 5 = 40 || 9 x 5 = 45 \
  48. | 6 x 6 = 36 || 7 x 6 = 42 || 8 x 6 = 48 || 9 x 6 = 54 \
  49. | 6 x 7 = 42 || 7 x 7 = 49 || 8 x 7 = 56 || 9 x 7 = 63 \
  50. | 6 x 8 = 48 || 7 x 8 = 56 || 8 x 8 = 64 || 9 x 8 = 72 \
  51. | 6 x 9 = 54 || 7 x 9 = 63 || 8 x 9 = 72 || 9 x 9 = 81 /
  52. o-------------------------------------------------------o;
  53. }
Add Comment
Please, Sign In to add comment