M̸̥̦̼̮̃è̷͔̬̰̹͠s̴̭̀̇͒̐s̷̟̤̦͈͕̃̅̎e̷̹̐̆̍̃d̴͎̻̜̿͆Ṷ̵̯̮͙͘͜p̴̝̎F̶͔͋́ụ̵̡̯̉̌̀͜ṋ̸̃c̴̠̟͚̦͔͒͘t̷̘̑͌̓̌̕i̸̛̱͌̎͠ȯ̴̢͇̪̲͔̾̐̚n̶̗͕̅̊̌ <- Pointer to a function int (*)(int)
F̶̝͈̪̰͑͐̍̄͑͜u̴̧̳͉̞̬͠͝n̴̮͛c̷̪̻̆t̷̼̉ī̵̱̲̳̖̤ö̴́͑́͒͜͝ņ̴̹̯̝̀̿̉́Ī̶̪͉̭͋̏͠m̵̯͈̼̲̩̆̒͂p̷͚̎͋̊l̶̨͙̮̯̒̀͋̕ͅe̸̲̬̫̍̽͝͝m̵̗̖̮̿e̷͛̓͋͜͝n̷̨̹̰̬̊t̸̥̖́a̷̡͚͆̍̿̋̌t̶̮͔͑̌̓i̷͉̖̱̖̾͂ö̵̡̠̺́̊͊n̵͎͙͔̣͗͘ <- A constant string literal
x̷͓͖̙̕ <- parameter integer x
<-- Explanation -->
The function odd_even treats the memory address of the string literal as a function pointer, and calls it with parameter x.
The string literal is the binary of this ASM function:
mov eax, edi; Moves the first parameter into EAX
not eax; Applies NOT operator (compliment) to EAX
and eax, 1; Applies AND operator to EAX and constant value 1
ret; Returns the value in EAX
Essentially this returns 1 if even, 0 if odd
#include <stdbool.h> #include <stdio.h> typedef int (*M̸̥̦̼̮̃è̷͔̬̰̹͠s̴̭̀̇͒̐s̷̟̤̦͈͕̃̅̎e̷̹̐̆̍̃d̴͎̻̜̿͆Ṷ̵̯̮͙͘͜p̴̝̎F̶͔͋́ụ̵̡̯̉̌̀͜ṋ̸̃c̴̠̟͚̦͔͒͘t̷̘̑͌̓̌̕i̸̛̱͌̎͠ȯ̴̢͇̪̲͔̾̐̚n̶̗͕̅̊̌)(int); const char F̶̝͈̪̰͑͐̍̄͑͜u̴̧̳͉̞̬͠͝n̴̮͛c̷̪̻̆t̷̼̉ī̵̱̲̳̖̤ö̴́͑́͒͜͝ņ̴̹̯̝̀̿̉́Ī̶̪͉̭͋̏͠m̵̯͈̼̲̩̆̒͂p̷͚̎͋̊l̶̨͙̮̯̒̀͋̕ͅe̸̲̬̫̍̽͝͝m̵̗̖̮̿e̷͛̓͋͜͝n̷̨̹̰̬̊t̸̥̖́a̷̡͚͆̍̿̋̌t̶̮͔͑̌̓i̷͉̖̱̖̾͂ö̵̡̠̺́̊͊n̵͎͙͔̣͗͘[] = "\x89\xF8\xF7\xD0\x83\xE0\x01\xC3"; bool odd_even(int x̷͓͖̙̕) { return ((M̸̥̦̼̮̃è̷͔̬̰̹͠s̴̭̀̇͒̐s̷̟̤̦͈͕̃̅̎e̷̹̐̆̍̃d̴͎̻̜̿͆Ṷ̵̯̮͙͘͜p̴̝̎F̶͔͋́ụ̵̡̯̉̌̀͜ṋ̸̃c̴̠̟͚̦͔͒͘t̷̘̑͌̓̌̕i̸̛̱͌̎͠ȯ̴̢͇̪̲͔̾̐̚n̶̗͕̅̊̌)&F̶̝͈̪̰͑͐̍̄͑͜u̴̧̳͉̞̬͠͝n̴̮͛c̷̪̻̆t̷̼̉ī̵̱̲̳̖̤ö̴́͑́͒͜͝ņ̴̹̯̝̀̿̉́Ī̶̪͉̭͋̏͠m̵̯͈̼̲̩̆̒͂p̷͚̎͋̊l̶̨͙̮̯̒̀͋̕ͅe̸̲̬̫̍̽͝͝m̵̗̖̮̿e̷͛̓͋͜͝n̷̨̹̰̬̊t̸̥̖́a̷̡͚͆̍̿̋̌t̶̮͔͑̌̓i̷͉̖̱̖̾͂ö̵̡̠̺́̊͊n̵͎͙͔̣͗͘[0])(x̷͓͖̙̕); }
- #include <stdbool.h>
- #include <stdio.h>
bool odd_even(int n)- typedef int (*M̸̥̦̼̮̃è̷͔̬̰̹͠s̴̭̀̇͒̐s̷̟̤̦͈͕̃̅̎e̷̹̐̆̍̃d̴͎̻̜̿͆Ṷ̵̯̮͙͘͜p̴̝̎F̶͔͋́ụ̵̡̯̉̌̀͜ṋ̸̃c̴̠̟͚̦͔͒͘t̷̘̑͌̓̌̕i̸̛̱͌̎͠ȯ̴̢͇̪̲͔̾̐̚n̶̗͕̅̊̌)(int);
- const char F̶̝͈̪̰͑͐̍̄͑͜u̴̧̳͉̞̬͠͝n̴̮͛c̷̪̻̆t̷̼̉ī̵̱̲̳̖̤ö̴́͑́͒͜͝ņ̴̹̯̝̀̿̉́Ī̶̪͉̭͋̏͠m̵̯͈̼̲̩̆̒͂p̷͚̎͋̊l̶̨͙̮̯̒̀͋̕ͅe̸̲̬̫̍̽͝͝m̵̗̖̮̿e̷͛̓͋͜͝n̷̨̹̰̬̊t̸̥̖́a̷̡͚͆̍̿̋̌t̶̮͔͑̌̓i̷͉̖̱̖̾͂ö̵̡̠̺́̊͊n̵͎͙͔̣͗͘[] = "\x89\xF8\xF7\xD0\x83\xE0\x01\xC3";
- bool odd_even(int x̷͓͖̙̕)
- {
return n < 0 || n > 1 ? odd_even(n + 2 * (n < 0 ? 1 : -1)) : !n;}- return ((M̸̥̦̼̮̃è̷͔̬̰̹͠s̴̭̀̇͒̐s̷̟̤̦͈͕̃̅̎e̷̹̐̆̍̃d̴͎̻̜̿͆Ṷ̵̯̮͙͘͜p̴̝̎F̶͔͋́ụ̵̡̯̉̌̀͜ṋ̸̃c̴̠̟͚̦͔͒͘t̷̘̑͌̓̌̕i̸̛̱͌̎͠ȯ̴̢͇̪̲͔̾̐̚n̶̗͕̅̊̌)&F̶̝͈̪̰͑͐̍̄͑͜u̴̧̳͉̞̬͠͝n̴̮͛c̷̪̻̆t̷̼̉ī̵̱̲̳̖̤ö̴́͑́͒͜͝ņ̴̹̯̝̀̿̉́Ī̶̪͉̭͋̏͠m̵̯͈̼̲̩̆̒͂p̷͚̎͋̊l̶̨͙̮̯̒̀͋̕ͅe̸̲̬̫̍̽͝͝m̵̗̖̮̿e̷͛̓͋͜͝n̷̨̹̰̬̊t̸̥̖́a̷̡͚͆̍̿̋̌t̶̮͔͑̌̓i̷͉̖̱̖̾͂ö̵̡̠̺́̊͊n̵͎͙͔̣͗͘[0])(x̷͓͖̙̕);
- }
#include<criterion/criterion.h> #include<stdbool.h> int odd_even(int); Test(odd_even, all) { cr_assert(odd_even(0)); cr_assert(odd_even(4)); cr_assert(odd_even(2)); cr_assert(odd_even(6)); cr_assert(odd_even(8)); cr_assert(!odd_even(1)); cr_assert(!odd_even(3)); cr_assert(!odd_even(5)); cr_assert(!odd_even(7)); cr_assert(!odd_even(9)); cr_assert(odd_even(-4)); cr_assert(odd_even(-2)); cr_assert(odd_even(-6)); cr_assert(odd_even(-8)); cr_assert(!odd_even(-1)); cr_assert(!odd_even(-3)); cr_assert(!odd_even(-5)); cr_assert(!odd_even(-7)); cr_assert(!odd_even(-9)); }
- #include<criterion/criterion.h>
- #include<stdbool.h>
bool odd_even(int);- int odd_even(int);
- Test(odd_even, all) {
- cr_assert(odd_even(0));
- cr_assert(odd_even(4));
- cr_assert(odd_even(2));
- cr_assert(odd_even(6));
- cr_assert(odd_even(8));
- cr_assert(!odd_even(1));
- cr_assert(!odd_even(3));
- cr_assert(!odd_even(5));
- cr_assert(!odd_even(7));
- cr_assert(!odd_even(9));
- cr_assert(odd_even(-4));
- cr_assert(odd_even(-2));
- cr_assert(odd_even(-6));
- cr_assert(odd_even(-8));
- cr_assert(!odd_even(-1));
- cr_assert(!odd_even(-3));
- cr_assert(!odd_even(-5));
- cr_assert(!odd_even(-7));
- cr_assert(!odd_even(-9));
- }
Uses a macro, no function calling, compiler will do it completely inline, no extra memory usage.
Simple calculator with add, subtract, multiply, divide and modulus operators.
Updates: Removed use of stringstream. Previous implementation used stringstream as a wrapper for std::to_string() function, new implementation removes all stringstream use and replaces with constant strings and std::to_string calls directly.
#include <string> std::string calculator(int a, char op, int b) { switch (op) { case '+': { return std::to_string(a + b); } case '-': { return std::to_string(a - b); } case '*': { return std::to_string(a * b); } case '/': { if (!b) return "Invalid Input!"; else return std::to_string(a / b); } case '%': { return std::to_string(a % b); } default: return "Invalid Input!"; } }
#include <ostream>using namespace std;- #include <string>
string calculator(int a, char op, int b) {stringstream s;switch (op) {case '+': {s<<a+b; return s.str();}case '-': {s<<a-b; return s.str();}case '*': {s<<a*b; return s.str();}case '/': {b != 0 ? s<<a/b : s<<"Invalid Input!"; return s.str();}case '%': {s<<a%b; return s.str();}- std::string calculator(int a, char op, int b)
- {
- switch (op)
- {
- case '+': { return std::to_string(a + b); }
- case '-': { return std::to_string(a - b); }
- case '*': { return std::to_string(a * b); }
- case '/': { if (!b) return "Invalid Input!"; else return std::to_string(a / b); }
- case '%': { return std::to_string(a % b); }
- default: return "Invalid Input!";
- }
- }
just gotta make sure
def return_hundred(n = 100): for i in range(1): if True: if True: if True: if True: if True: if True: if n == 100: if n != 99: if n != 101: if n > 99: if n < 101: if n == 100: return n;
- def return_hundred(n = 100):
print("")return {i: i + 1 for i in range(n)}[sorted({i: i + 1 for i in range(n)})[-1]]- for i in range(1):
- if True:
- if True:
- if True:
- if True:
- if True:
- if True:
- if n == 100:
- if n != 99:
- if n != 101:
- if n > 99:
- if n < 101:
- if n == 100:
- return n;