# Tiresome GCD

Not all algorithms are equal.

https://codecombat.com/play/level/tiresome-gcd

Solution

``````// Calculate the secret number and get into the Treasury.
// Those two guys know keys for the password.
var friends = hero.findFriends();
var number1 = friends.secretNumber;
var number2 = friends.secretNumber;
// Just to be sure that the first number is greater.
if (number2 > number1) {
var swap = number1;
number1 = number2;
number2 = swap;
}

// It's simple but slow function to find gcd.
function bruteforceGCD (a, b) {
hero.say("The naive algorithm.");
var cycles = 0;
// We enumerate all possible divisors.
var counter = b;
while (true) {
cycles++;
if (cycles > 100) {
hero.say("Calculating is hard. I'm tired.");
break;
}
// If both number have "counter" divisor.
if (a % counter === 0 && b % counter === 0) {
break;
}
counter--;
}
hero.say("I used " + cycles + " cycles");
return counter;
}

// It's smart way to find gcd.
function euclidianGCD (a, b) {
var cycles = 0;
while (b) {
cycles++;
var swap = b;
b = a % b;
a = swap;
}
hero.say("I used " + cycles + " cycles");
return a;
}

// Maybe you need to use another function?
var secretNumber = euclidianGCD(number1, number2); // ∆
hero.moveXY(48, 34);
hero.say(secretNumber);
// The treasury is open (I hope so)! Go there!
hero.moveXY(68, 34);
``````
Points for
time
damage-dealt
Needed items with
moveXY
findFriends
This site is in another language version