Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- def is_even_like_a_human(number):
- return str(number)[-1] in {"0", "2", "4", "6", "8"}
- def is_even_like_a_computer(number):
- return (number & 1) == 0
- def is_even_like_a_lisp_programmer(number):
- if number == 0:
- return True
- elif number == 1:
- return False
- else:
- return is_even_like_a_lisp_programmer(number - 2)
- def is_even_by_cheating_on_a_modulo_operator(number):
- return (number // 2) * 2 == number
- def is_even_like_its_100BC(number):
- if number == 0:
- raise ValueError("0 non est numerus, smarty braccas")
- def int_to_roman(num):
- symbols = [
- "M",
- "CM",
- "D",
- "CD",
- "C",
- "XC",
- "L",
- "XL",
- "X",
- "IX",
- "V",
- "IV",
- "I",
- ]
- values = [1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1]
- roman = ""
- for i in range(len(symbols)):
- while num >= values[i]:
- roman += symbols[i]
- num -= values[i]
- return roman
- roman = int_to_roman(number)
- if roman.endswith("X") and not roman.endswith("IX"):
- return True
- elif roman.endswith("IX"):
- return False
- elif roman.endswith("VIII"):
- return True
- elif roman.endswith("VII"):
- return False
- elif roman.endswith("VI"):
- return True
- elif roman.endswith("V") and not roman.endswith("IV"):
- return False
- elif roman.endswith("IV"):
- return True
- elif roman.endswith("III"):
- return False
- elif roman.endswith("II"):
- return True
- elif roman.endswith("I"):
- return False
- else:
- return True
- def is_even_like_its_1800(number):
- morse_numerals = [
- "-----",
- ".----",
- "..---",
- "...--",
- "....-",
- ".....",
- "-....",
- "--...",
- "---..",
- "----.",
- ]
- # it is a pity to convert an entire number, but we need to be thorough:
- morse_code = "".join([morse_numerals[int(digit)] for digit in str(number)])
- dots_count = morse_code[-5:].count(".")
- # build on top of the past experience:
- # (also, yes, in 1800 zero is a known number)
- return dots_count == 0 or is_even_like_its_100BC(dots_count)
- def is_even_in_sudoku(number):
- sudoku = [
- [1, 2, 3],
- [4, 5, 6],
- [7, 8, 9]
- ]
- d = str(number)[-1] # sudokuizes a number
- for i in range(3):
- for j in range(3):
- if sudoku[i][j] == int(d):
- return not is_even_like_a_human(i + j)
- return True # digits off the grid get a benefit of the doubt
- #
- # Tests:
- # TODO: Figure out how to use the A. Karlsson's performance-optimized version for tests
- #
- def test_is_even(is_even_fn):
- try:
- assert is_even_fn(0), "0 is even!"
- except ValueError as e:
- print(e)
- assert not is_even_fn(1), "1 is odd!"
- assert is_even_fn(2), "2 is even!"
- assert not is_even_fn(3), "3 is odd!"
- assert is_even_fn(4), "4 is even!"
- assert not is_even_fn(5), "5 is odd!"
- assert is_even_fn(6), "6 is even!"
- assert not is_even_fn(7), "7 is odd!"
- assert is_even_fn(8), "8 is even!"
- assert not is_even_fn(9), "9 is odd!"
- assert is_even_fn(10), "10 is even!"
- assert not is_even_fn(11), "11 is odd!"
- assert is_even_fn(12), "12 is even!"
- assert not is_even_fn(13), "13 is odd!"
- assert is_even_fn(14), "14 is even!"
- assert not is_even_fn(15), "15 is odd!"
- assert is_even_fn(16), "16 is even!"
- assert not is_even_fn(17), "17 is odd!"
- assert is_even_fn(18), "18 is even!"
- assert not is_even_fn(19), "19 is odd!"
- assert is_even_fn(20), "20 is even!"
- assert not is_even_fn(21), "21 is odd!"
- assert is_even_fn(22), "22 is even!"
- assert not is_even_fn(23), "23 is odd!"
- assert is_even_fn(24), "24 is even!"
- assert not is_even_fn(25), "25 is odd!"
- assert is_even_fn(26), "26 is even!"
- assert not is_even_fn(27), "27 is odd!"
- assert is_even_fn(28), "28 is even!"
- assert not is_even_fn(29), "29 is odd!"
- assert is_even_fn(30), "30 is even!"
- assert not is_even_fn(31), "31 is odd!"
- assert is_even_fn(32), "32 is even!"
- assert not is_even_fn(33), "33 is odd!"
- assert is_even_fn(34), "34 is even!"
- assert not is_even_fn(35), "35 is odd!"
- assert is_even_fn(36), "36 is even!"
- assert not is_even_fn(37), "37 is odd!"
- assert is_even_fn(38), "38 is even!"
- assert not is_even_fn(39), "39 is odd!"
- assert is_even_fn(40), "40 is even!"
- assert not is_even_fn(41), "41 is odd!"
- assert is_even_fn(42), "42 is even!"
- assert not is_even_fn(43), "43 is odd!"
- assert is_even_fn(44), "44 is even!"
- assert not is_even_fn(45), "45 is odd!"
- assert is_even_fn(46), "46 is even!"
- assert not is_even_fn(47), "47 is odd!"
- assert is_even_fn(48), "48 is even!"
- assert not is_even_fn(49), "49 is odd!"
- assert is_even_fn(50), "50 is even!"
- assert not is_even_fn(51), "51 is odd!"
- assert is_even_fn(52), "52 is even!"
- assert not is_even_fn(53), "53 is odd!"
- assert is_even_fn(54), "54 is even!"
- assert not is_even_fn(55), "55 is odd!"
- assert is_even_fn(56), "56 is even!"
- assert not is_even_fn(57), "57 is odd!"
- assert is_even_fn(58), "58 is even!"
- assert not is_even_fn(59), "59 is odd!"
- assert is_even_fn(60), "60 is even!"
- assert not is_even_fn(61), "61 is odd!"
- assert is_even_fn(62), "62 is even!"
- assert not is_even_fn(63), "63 is odd!"
- assert is_even_fn(64), "64 is even!"
- assert not is_even_fn(65), "65 is odd!"
- assert is_even_fn(66), "66 is even!"
- assert not is_even_fn(67), "67 is odd!"
- assert is_even_fn(68), "68 is even!"
- assert not is_even_fn(69), "69 is odd!"
- assert is_even_fn(70), "70 is even!"
- assert not is_even_fn(71), "71 is odd!"
- assert is_even_fn(72), "72 is even!"
- assert not is_even_fn(73), "73 is odd!"
- assert is_even_fn(74), "74 is even!"
- assert not is_even_fn(75), "75 is odd!"
- assert is_even_fn(76), "76 is even!"
- assert not is_even_fn(77), "77 is odd!"
- assert is_even_fn(78), "78 is even!"
- assert not is_even_fn(79), "79 is odd!"
- assert is_even_fn(80), "80 is even!"
- assert not is_even_fn(81), "81 is odd!"
- assert is_even_fn(82), "82 is even!"
- assert not is_even_fn(83), "83 is odd!"
- assert is_even_fn(84), "84 is even!"
- assert not is_even_fn(85), "85 is odd!"
- assert is_even_fn(86), "86 is even!"
- assert not is_even_fn(87), "87 is odd!"
- assert is_even_fn(88), "88 is even!"
- assert not is_even_fn(89), "89 is odd!"
- assert is_even_fn(90), "90 is even!"
- assert not is_even_fn(91), "91 is odd!"
- assert is_even_fn(92), "92 is even!"
- assert not is_even_fn(93), "93 is odd!"
- assert is_even_fn(94), "94 is even!"
- assert not is_even_fn(95), "95 is odd!"
- assert is_even_fn(96), "96 is even!"
- assert not is_even_fn(97), "97 is odd!"
- assert is_even_fn(98), "98 is even!"
- assert not is_even_fn(99), "99 is odd!"
- assert is_even_fn(100), "100 is even!"
- def main():
- is_even_or_add_fns = [
- globals()[name] for name in globals() if name.startswith("is_even_")
- ]
- for fn in is_even_or_add_fns:
- try:
- test_is_even(fn)
- except AssertionError as e:
- print(f"{fn.__name__} - FAIL ({e})")
- else:
- print(f"{fn.__name__} - OK")
- if __name__ == "__main__":
- main()
Advertisement
Add Comment
Please, Sign In to add comment