HiveBrain v1.2.0
Get Started
← Back to all entries
patterncsharpModerate

Maximizing XOR HackerRank challenge

Submitted by: @import:stackexchange-codereview··
0
Viewed 0 times
hackerrankxormaximizingchallenge

Problem

I know that there are combinatoric libraries for this kind of thing. However, with me being new to C# and coding in general I found that I couldn't understand the code well enough to implement it in my solution.

Here is the challenge:


Given two integers: L and R,


find the maximal values of A xor B given, L ≤ A ≤ B ≤ R


Input Format The input contains two lines, L is present in the first line. R in the second line.


Constraints 1 ≤ L ≤ R ≤ 103


Output Format The maximal value as mentioned in the problem statement.


Sample Input#00

1
 10




Sample Output#00

15





Sample Input#01

10
15




Sample Output#01

7





Explanation for the second example is as follows:


In the second sample let's say L=10, R=15, then all pairs
which comply to above condition are


10⊕10=0
10⊕11=1
10⊕12=6
10⊕13=7
10⊕14=4
10⊕15=5
11⊕11=0
11⊕12=7
11⊕13=6
11⊕14=5

11⊕15=4
12⊕12=0
12⊕13=1
12⊕14=2
12⊕15=3

13⊕13=0
13⊕14=3
13⊕15=2
14⊕14=0
14⊕15=1

15⊕15=0


Here two pairs (10,13) and (11,12) have maximum xor value 7 and this
is the answer.

The code below represents my solution to the problem in question. It works but I feel like I reinvented the wheel on this one. Is there a better way of going about it than what I have?

```
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;

class Solution {

public static List Combinations( List number_list )
{

// We are only choosing 2 values out of any list of numbers
int[] TwoList = new int[2];

List result = new List();

List stack = new List(number_list);

while (stack.Count > 0)
{

int StackLast = stack.Count - 1;

for (int i =0; i NumList = new List(Enumerable.Range(l, r - l + 1));

// Inserts the list combinations as int arrays
List comboList = Combinati

Solution

Couple of basic things with C#

  • Don't use Egyptian style Bracing, that's for Java.



  • Watch your indentation, I fixed it in the question.



  • Casing should follow basic C# standards



  • PascalCase for all Methods, Constants, and Property names



  • camelCase for everything else



  • Protected and public instance variables are UpperCamelCase (to avoid confusion with 3.2) as Jeroen commented



  • You have more than enough newlines in the code, this can be distracting in your code.



  • From what I see of your Comments they are all unneeded



  • old code should be deleted



  • other comments are not needed to explain the flow of code or the purpose of the code because it is apparent what is going on with your code.



With these Variables I am not sure what was meant by the Underscore on them, they don't look private or look like properties, they should have a more meaningful name as well

int _l;
   int _r;


// We are only choosing 2 values out of any list of numbers
   int[] two_list = new int[2];


This seams like a waste of time to me, you want two numbers, not an array of numbers and not a list of numbers, so you should have two numbers.

int number1;
int number2;


and these numbers should not be written outside of the double loop, this brings me to the conclusion that they are not needed at all, and that you should write this:

for (int i =0; i < stack.Count; i++) {

            two_list[0] = stack[stackLast];

            two_list[1] = stack[i];

            result.Add(new int[] {two_list[0], two_list[1]});

        }


instead like this

for (int i =0; i < stack.Count; i++) 
{
    result.Add(new int[] {stack[stackLast], stack[i]});
}

Code Snippets

int _l;
   int _r;
// We are only choosing 2 values out of any list of numbers
   int[] two_list = new int[2];
int number1;
int number2;
for (int i =0; i < stack.Count; i++) {

            two_list[0] = stack[stackLast];

            two_list[1] = stack[i];

            result.Add(new int[] {two_list[0], two_list[1]});

        }
for (int i =0; i < stack.Count; i++) 
{
    result.Add(new int[] {stack[stackLast], stack[i]});
}

Context

StackExchange Code Review Q#64888, answer score: 10

Revisions (0)

No revisions yet.