Accenture Interview Question
ConsultantsCountry: United States
module.exports = function (n, m) {
var N = n.toString()
var M = m.toString()
// generate mins
var minN, minM, maxN, maxM
minN = minM = maxN = maxM = ''
for (var i = 0; i < N.length; ++i) {
var char = N.charAt(i)
if (char === '6') {
char = '5'
}
minN += char
}
for (i = 0; i < M.length; ++i) {
char = M.charAt(i)
if (char === '6') {
char = '5'
}
minM += char
}
//generate maxes
for (var i = 0; i < N.length; ++i) {
var char = N.charAt(i)
if (char === '5') {
char = '6'
}
maxN += char
}
for (i = 0; i < M.length; ++i) {
char = M.charAt(i)
if (char === '5') {
char = '6'
}
maxM += char
}
minN = parseInt(minN, 10)
minM = parseInt(minM, 10)
maxN = parseInt(maxN, 10)
maxM = parseInt(maxM, 10)
console.log(n, m, minN, minM, maxN, maxM)
return {
min: minN + minM,
max: maxN + maxM
}
}
var ans = module.exports(645, 666)
console.log(ans)
Don't think we have a python solution yet. This is a bit clunky, but it does the job. Forgetting to take negative numbers into account is probably a common mistake.
import math
def min_sum(a, b):
a = minimize(a)
b = minimize(b)
return a + b
def max_sum(a, b):
a = -minimize(-a)
b = -minimize(-b)
return a + b
def minimize(val):
pos = val >= 0
ans = 0
sval = str(abs(val))
for x, i in zip(map(int, sval), range(len(sval))):
if pos and x == 6:
ans += 5 * int(math.pow(10, len(sval) - i - 1))
elif not pos and x == 5:
ans += 6 * int(math.pow(10, len(sval) - i - 1))
else:
ans += x * int(math.pow(10, len(sval) -i - 1))
if pos:
return ans
else:
return -ans
function getModifiedNumber(input, target, replace) {
var str = input.toString();
var regex = new RegExp(target.toString(), 'gi');
var result = Number(str.replace(regex, replace.toString()));
return result;
}
function getSum(num1, num2) {
var result = {
min : getModifiedNumber(num1, 6, 5) + getModifiedNumber(num2, 6, 5),
max : getModifiedNumber(num1, 5, 6) + getModifiedNumber(num2, 5, 6)
}
return result;
}
console.log( getSum(645, 666) );
{{
function getModifiedNumber(input, target, replace) {
var str = input.toString();
var regex = new RegExp(target.toString(), 'gi');
var result = Number(str.replace(regex, replace.toString()));
}
function getSum(num1, num2) {
var result = {
min : getModifiedNumber(num1, 6, 5) + getModifiedNumber(num2, 6, 5),
max : getModifiedNumber(num1, 5, 6) + getModifiedNumber(num2, 5, 6)
}
return result;
}
console.log(getSum(645, 666));
}}
int replaceNumber(int number, int compare, int replace ){
int result = 0;
int multiply = 1;
while( number ){
int rem = number%10;
if(rem == compare ){
result += (replace*multiply);
}else{
result += (rem*multiply);
}
multiply *=10;
number = number/10;
}
return result;
}
vector<int> getMinMaxSum(int number1, int number2 ){
vector<int> minMax;
int replacedNum1 = replaceNumber(number1, 5, 6 );
int replacedNum2 = replaceNumber(number2, 5, 6 );
minMax.push_back(replacedNum1+replacedNum2);
replacedNum1 = replaceNumber(number1, 6, 5 );
replacedNum2 = replaceNumber(number2, 6, 5 );
minMax.push_back(replacedNum1+replacedNum2);
return minMax;
}
class CMinMaxSum{
public:
int replaceNumber(int number, int compare, int replace ){
int result = 0;
int multiply = 1;
while( number ){
int rem = number%10;
if(rem == compare ){
result += (replace*multiply);
}else{
result += (rem*multiply);
}
multiply *=10;
number = number/10;
}
return result;
}
vector<int> getMinMaxSum(int number1, int number2 ){
vector<int> minMax;
int replacedNum1 = replaceNumber(number1, 5, 6 );
int replacedNum2 = replaceNumber(number2, 5, 6 );
minMax.push_back(replacedNum1+replacedNum2);
replacedNum1 = replaceNumber(number1, 6, 5 );
replacedNum2 = replaceNumber(number2, 6, 5 );
minMax.push_back(replacedNum1+replacedNum2);
return minMax;
}
};
class CMinMaxSum{
public:
int replaceNumber(int number, int compare, int replace ){
int result = 0;
int multiply = 1;
while( number ){
int rem = number%10;
if(rem == compare ){
result += (replace*multiply);
}else{
result += (rem*multiply);
}
multiply *=10;
number = number/10;
}
return result;
}
vector<int> getMinMaxSum(int number1, int number2 ){
vector<int> minMax;
int replacedNum1 = replaceNumber(number1, 5, 6 );
int replacedNum2 = replaceNumber(number2, 5, 6 );
minMax.push_back(replacedNum1+replacedNum2);
replacedNum1 = replaceNumber(number1, 6, 5 );
replacedNum2 = replaceNumber(number2, 6, 5 );
minMax.push_back(replacedNum1+replacedNum2);
return minMax;
}
};
class CMinMaxSum{
public:
int replaceNumber(int number, int compare, int replace ){
int result = 0;
int multiply = 1;
while( number ){
int rem = number%10;
if(rem == compare ){
result += (replace*multiply);
}else{
result += (rem*multiply);
}
multiply *=10;
number = number/10;
}
return result;
}
vector<int> getMinMaxSum(int number1, int number2 ){
vector<int> minMax;
int replacedNum1 = replaceNumber(number1, 5, 6 );
int replacedNum2 = replaceNumber(number2, 5, 6 );
minMax.push_back(replacedNum1+replacedNum2);
replacedNum1 = replaceNumber(number1, 6, 5 );
replacedNum2 = replaceNumber(number2, 6, 5 );
minMax.push_back(replacedNum1+replacedNum2);
return minMax;
}
};
def max(n):
n_str = str(n)
ln = []
for i in n_str:
if i == '5':
ln.append('6')
continue
ln.append(i)
max_str = ''.join(ln)
return int(max_str)
def min(n):
n_str = str(n)
ln = []
for i in n_str:
if i == '6':
ln.append('5')
continue
ln.append(i)
min_str = ''.join(ln)
return int(min_str)
def main(n, m):
print('%s + %s = %s' % (n, m, n + m))
print('%s + %s = %s' % (min(n), min(m), min(n) + min(m)))
print('%s + %s = %s' % (max(n), max(m), max(n) + max(m)))
- srammer January 02, 2017