Move History

Fork Selected
  • Description

    someone had to do it

    Code
    int multiply_and_add_one(int a, int b)
    {
      int res;
      __asm__
      (
        "imul %1, %2;"
        "add $1, %2;"
        "mov %2, %0;"
        : "=r" (res)
        : "r" (a), "r" (b)
        :
      );
      return res;
    }
    Test Cases
    #include <criterion/criterion.h>
    
    int multiply_and_add_one(int a, int b);
    
    Test(multiply_and_add_one_tests, basic_tests)
    {
      cr_assert_eq(multiply_and_add_one(2, 3), 7);
      cr_assert_eq(multiply_and_add_one(4, 5), 21);
      cr_assert_eq(multiply_and_add_one(0, 10), 1);
      cr_assert_eq(multiply_and_add_one(-1, 5), -4);
    }
  • Code
    • def multiply_and_add_one(a, b):
    • return a * b + 1
    • int multiply_and_add_one(int a, int b)
    • {
    • int res;
    • __asm__
    • (
    • "imul %1, %2;"
    • "add $1, %2;"
    • "mov %2, %0;"
    • : "=r" (res)
    • : "r" (a), "r" (b)
    • :
    • );
    • return res;
    • }
    Test Cases
    • import codewars_test as test
    • from solution import multiply_and_add_one
    • #include <criterion/criterion.h>
    • @test.describe("Multiply and Add One Tests")
    • def _():
    • @test.it("Basic tests")
    • def test_case():
    • test.assert_equals(multiply_and_add_one(2, 3), 7)
    • test.assert_equals(multiply_and_add_one(4, 5), 21)
    • test.assert_equals(multiply_and_add_one(0, 10), 1)
    • test.assert_equals(multiply_and_add_one(-1, 5), -4)
    • int multiply_and_add_one(int a, int b);
    • Test(multiply_and_add_one_tests, basic_tests)
    • {
    • cr_assert_eq(multiply_and_add_one(2, 3), 7);
    • cr_assert_eq(multiply_and_add_one(4, 5), 21);
    • cr_assert_eq(multiply_and_add_one(0, 10), 1);
    • cr_assert_eq(multiply_and_add_one(-1, 5), -4);
    • }