From 505ff7549f1fd15395d5fe7e09ffe77fed775d31 Mon Sep 17 00:00:00 2001 From: Vincent Russo Date: Thu, 11 Jul 2019 18:00:21 -0400 Subject: [PATCH] Adding to Swap variables for all CPP,Python, and Java --- README.md | 5 ++- cpp/SwapVariables.cpp | 74 +++++++++++++++++++++++++++++++++++++++++ java/SwapVariables.java | 62 ++++++++++++++++++++++++++++++++++ python/SwapVariables.py | 56 +++++++++++++++++++++++++++++++ 4 files changed, 196 insertions(+), 1 deletion(-) create mode 100644 cpp/SwapVariables.cpp create mode 100644 java/SwapVariables.java create mode 100644 python/SwapVariables.py diff --git a/README.md b/README.md index 74e9359..1ea9ebc 100644 --- a/README.md +++ b/README.md @@ -99,7 +99,10 @@ Given two integers, write a function to sum the numbers without using any arithm * [Reverse Stack](http://www.byte-by-byte.com/reversestack/) Given a stack, reverse the items without creating any additional data structures. -* [Swap Variables](http://www.byte-by-byte.com/swapvariables/) +* [Swap Variables](http://www.byte-by-byte.com/swapvariables/) +([C++](https://github.com/samgh/Byte-by-Byte-Solutions/blob/master/cpp/SwapVariables.cpp)) +([Java](https://github.com/samgh/Byte-by-Byte-Solutions/blob/master/java/SwapVariables.java)) +([Python](https://github.com/samgh/Byte-by-Byte-Solutions/blob/master/python/SwapVariables.py))
Given two integers, write a function that swaps them without using any temporary variables. * [Matrix Search](http://www.byte-by-byte.com/matrixsearch/) diff --git a/cpp/SwapVariables.cpp b/cpp/SwapVariables.cpp new file mode 100644 index 0000000..4c4b3e1 --- /dev/null +++ b/cpp/SwapVariables.cpp @@ -0,0 +1,74 @@ +/* +* Title: Swap Variables +* +* Given two integers, write a function that swaps them without using any +* temporary variables. +* +* Execution: g++ SwapVariables.cpp -o SwapVariables +* +* For more details, check out http://www.byte-by-byte.com/swapvariables +*/ + +#include +#include + +using namespace std; + +vector swap_1(int x, int y) { + vector vars; + + x = x + y; + y = x - y; + x = x - y; + + vars.push_back(x); + vars.push_back(y); + + return vars; +} + +vector swap_2(int x, int y) { + vector vars; + + x = x ^ y; + y = x ^ y; + x = x ^ y; + + vars.push_back(x); + vars.push_back(y); + return vars; +} + +int main() { + vector test_1 = swap_1(1, 2); + assert(test_1[0] == 2); + assert(test_1[1] == 1); + cout << "Swapped (1,2) with (2,1)" << endl; + + vector test_2 = swap_1(5, 5); + assert(test_2[0] == 5); + assert(test_2[1] == 5); + cout << "Swapped (5,5) with (5,5)" << endl; + + vector test_3 = swap_1(-1, 40); + assert(test_3[0] == 40); + assert(test_3[1] == -1); + cout << "Swapped (40,-1) with (-1,40)" << endl; + + vector test_4 = swap_2(1, 2); + assert(test_4[0] == 2); + assert(test_4[1] == 1); + cout << "Swapped (1,2) with (2,1)" << endl; + + vector test_5 = swap_2(5, 5); + assert(test_5[0] == 5); + assert(test_5[1] == 5); + cout << "Swapped (5,5) with (5,5)" << endl; + + vector test_6 = swap_2(-1, 40); + assert(test_6[0] == 40); + assert(test_6[1] == -1); + cout << "Swapped (40,-1) with (-1,40)" << endl; + + return 0; +} diff --git a/java/SwapVariables.java b/java/SwapVariables.java new file mode 100644 index 0000000..36fb91b --- /dev/null +++ b/java/SwapVariables.java @@ -0,0 +1,62 @@ +/* +* Title: Swap Variables +* +* Given two integers, write a function that swaps them without using any temporary variables. +* +* Execution: javac SwapVariables.java && java SwapVariables + +* For more details, check out http://www.byte-by-byte.com/swapvariables +*/ + +public class SwapVariables { + public static int[] swap_1(int x, int y) { + x = x + y; + y = x - y; + x = x - y; + + int ar[] = new int[2]; + ar[0] = x; + ar[1] = y; + return ar; + } + + public static int[] swap_2(int x, int y) { + x = x ^ y; + y = x ^ y; + x = x ^ y; + + int ar[] = new int[2]; + ar[0] = x; + ar[1] = y; + return ar; + } + + // Sample test cases + public static void main(String[] args) { + int ar_1[] = swap_1(1, 2); + assert ar_1[0] == 2 && ar_1[1] == 1: + "Swapped (1,2) with (2,1)"; + + int ar_2[] = swap_1(5, 5); + assert ar_2[0] == 5 && ar_2[1] == 5: + "Swapped (5,5) with (5,5)"; + + int ar_3[] = swap_1(-1, 40); + assert ar_3[0] == 40 && ar_3[1] == -1: + "Swaped(-1,40) with (40,-1)"; + + int ar_4[] = swap_2(1, 2); + assert ar_4[0] == 2 && ar_4[1] == 1: + "Swapped (1,2) with (2,1)"; + + int ar_5[] = swap_2(5, 5); + assert ar_5[0] == 5 && ar_5[1] == 5: + "Swapped (5,5) with (5,5)"; + + int ar_6[] = swap_2(-1, 40); + assert ar_6[0] == 40 && ar_6[1] == -1: + "Swapped(-1,40) with (40,-1)"; + + System.out.println("Passed all test cases"); + } +} diff --git a/python/SwapVariables.py b/python/SwapVariables.py new file mode 100644 index 0000000..a2081b7 --- /dev/null +++ b/python/SwapVariables.py @@ -0,0 +1,56 @@ +""" +Title: Swap Variables + +Given two integers, write a function that swaps them without using any +temporary variables. + +Execution: python SwapVariables.py + +For more details, check out http://www.byte-by-byte.com/swapvariables + +""" +import unittest + + +def swap_1(x: int, y: int): + x = x + y + y = x - y + x = x - y + return x, y + + +def swap_2(x: int, y: int): + x = x ^ y + y = x ^ y + x = x ^ y + return x, y + + +class TestSwap(unittest.TestCase): + def test_swap_1_1_2(self): + self.assertEqual(swap_1(1, 2), (2, 1)) + print("Swapped (1, 2) with (2, 1)") + + def test_swap_1_5_5(self): + self.assertEqual(swap_1(5, 5), (5, 5)) + print("Swapped (5, 5) with (5, 5)") + + def test_swap_1_neg1_40(self): + self.assertEqual(swap_1(-1, 40), (40, -1)) + print("Swapped (-1, 40) with (40, -1)") + + def test_swap_2_1_2(self): + self.assertEqual(swap_2(1, 2), (2, 1)) + print("Swapped (1, 2) with (2, 1)") + + def test_swap_2_5_5(self): + self.assertEqual(swap_2(5, 5), (5, 5)) + print("Swapped (5, 5) with (5, 5)") + + def test_swap_2_neg1_40(self): + self.assertEqual(swap_2(-1, 40), (40, -1)) + print("Swapped (-1, 40) with (40, -1)") + + +if __name__ == '__main__': + unittest.main()