Skip to content

Instantly share code, notes, and snippets.

@PkmX
Created July 17, 2018 03:03
Show Gist options
  • Save PkmX/0834c5f71f3b2bf98e7b565aeb3c1ec1 to your computer and use it in GitHub Desktop.
Save PkmX/0834c5f71f3b2bf98e7b565aeb3c1ec1 to your computer and use it in GitHub Desktop.
#include <iostream>
#include <string>
struct table {
std::string s;
table() {}
~table() { std::cout << this->s; }
table(const int n) : s{std::to_string(n)} {}
table(std::string&& s_) : s{std::move(s_)} {}
table(table&& other) : s{other.take()} {}
table operator=(const int n) { return this->take() + " = " + std::to_string(n); }
table operator=(table&& rhs) { return this->take() + " = " + rhs.take(); }
std::string take() { const auto s = this->s; this->s.clear(); return s; }
bool empty() const { return this->s.empty(); }
const char& back() const { return this->s.back(); }
};
table operator++(table&& t, int) { return t.take(); }
table operator--(table&& t, int) { return t.take(); }
table operator-(table&& lhs, table&& rhs) { return lhs.take() + rhs.take(); }
table operator*(table&& lhs, table&& rhs) { return lhs.take() + " x " + rhs.take(); }
table operator||(table&& lhs, table&& rhs) { return lhs.take() + "\t" + rhs.take(); }
table operator|(table&& lhs, table&& rhs) { return lhs.empty() || lhs.back() == '\n' ? lhs.take() + rhs.take() : lhs.take() + "\n" + rhs.take(); }
table operator/(table&& lhs, table&& rhs) { return lhs.take() + "\n\n" + rhs.take(); }
#define x * (table)
#define o table{}
int main() {
o-------------------------------------------------------o
| 2 x 1 = 2 || 3 x 1 = 3 || 4 x 1 = 4 || 5 x 1 = 5 \
| 2 x 2 = 4 || 3 x 2 = 6 || 4 x 2 = 8 || 5 x 2 = 10 \
| 2 x 3 = 6 || 3 x 3 = 9 || 4 x 3 = 12 || 5 x 3 = 15 \
| 2 x 4 = 8 || 3 x 4 = 12 || 4 x 4 = 16 || 5 x 4 = 20 \
| 2 x 5 = 10 || 3 x 5 = 15 || 4 x 5 = 20 || 5 x 5 = 25 \
| 2 x 6 = 12 || 3 x 6 = 18 || 4 x 6 = 24 || 5 x 6 = 30 \
| 2 x 7 = 14 || 3 x 7 = 21 || 4 x 7 = 28 || 5 x 7 = 35 \
| 2 x 8 = 16 || 3 x 8 = 24 || 4 x 8 = 32 || 5 x 8 = 40 \
| 2 x 9 = 18 || 3 x 9 = 27 || 4 x 9 = 36 || 5 x 9 = 45 /
o------------++------------++------------++-------------o
| 6 x 1 = 6 || 7 x 1 = 7 || 8 x 1 = 8 || 9 x 1 = 9 \
| 6 x 2 = 12 || 7 x 2 = 14 || 8 x 2 = 16 || 9 x 2 = 18 \
| 6 x 3 = 18 || 7 x 3 = 21 || 8 x 3 = 24 || 9 x 3 = 27 \
| 6 x 4 = 24 || 7 x 4 = 28 || 8 x 4 = 32 || 9 x 4 = 36 \
| 6 x 5 = 30 || 7 x 5 = 35 || 8 x 5 = 40 || 9 x 5 = 45 \
| 6 x 6 = 36 || 7 x 6 = 42 || 8 x 6 = 48 || 9 x 6 = 54 \
| 6 x 7 = 42 || 7 x 7 = 49 || 8 x 7 = 56 || 9 x 7 = 63 \
| 6 x 8 = 48 || 7 x 8 = 56 || 8 x 8 = 64 || 9 x 8 = 72 \
| 6 x 9 = 54 || 7 x 9 = 63 || 8 x 9 = 72 || 9 x 9 = 81 /
o-------------------------------------------------------o;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment