// require '04_wonky_coins'
// require 'rspec'
//
// # Catsylvanian money is a strange thing: they have a coin for every
// # denomination (including zero!). A wonky change machine in
// # Catsylvania takes any coin of value N and returns 3 new coins,
// # valued at N/2, N/3 and N/4 (rounding down).
// #
// # Write a method `wonky_coins(n)` that returns the number of coins you
// # are left with if you take all non-zero coins and keep feeding them
// # back into the machine until you are left with only zero-value coins.
// #
// # Difficulty: 3/5
//
// describe "#wonky_coins" do
// it "handles a coin of value 1" do
// wonky_coins(1).should == 3
// end
//
// it "handles a coin of value 5" do
// wonky_coins(5).should == 11
// # 11
// # => [2, 1, 1]
// # => [[1, 0, 0], [0, 0, 0], [0, 0, 0]]
// # => [[[0, 0, 0], 0, 0], [0, 0, 0], [0, 0, 0]]
// end
//
// it "handles a coin of value 6" do
// wonky_coins(6).should == 15
// end
//
// it "handles being given the zero coin" do
// wonky_coins(0).should == 1
// end
// end
function check_coins(hand){
for(var i=0; i<hand.length; i++){
var coin = hand[i]
if(coin !==0){
return i;
} else {
return null;
}
}
return false;
}
function wonkyCoins(n){
var hand = [];
hand.push(Math.floor(n/2));
hand.push(Math.floor(n/3));
hand.push(Math.floor(n/4));
while(check_coins(hand){
var indx = check_coins(hand);
var value = hand[indx];
var index1 = hand.indexOf(hand[indx]);
if (index1 > -1) {
hand.splice(index1, 1);
}
hand.push(Math.floor(value/2));
hand.push(Math.floor(value/3));
hand.push(Math.floor(value/4));
}
return hand.length;
}
該程序正在工作,但由於某些原因while循環沒有循環。我懷疑這種情況有什麼問題。我不確定如果javaScript接受這樣的條件。但是,在ruby中它工作。 有人可以請爲我解釋爲什麼不工作?while循環沒有執行或不循環?
在while條件中是否有缺少的右括號? – joshuanapoli