Problem 4
Write a function that given a list of non negative integers, arranges them
such that they form the largest possible number. For example, given [50, 2,
1, 9], the largest formed number is 95021.
Again, not enough test cases, and in this case his initial solution failed
when tested more rigorously. If this were a discussion at my work, this is
the point where someone would break out the sound from The Price is Right
when someone screws up (wa, wa, wa, Waaaaaaa<sad note>).
Interestingly, the solution he chose -- padding -- is what I chose as well.
He bailed on it once people pointed out cases that fail. My implementation
stands up so far, but I wouldn't bet my left thumb it can't be broken. The
difference is that I pad with the first digit (not the last, not 0). So in
the final example, 42 gets ranked as 424 and thus comes before 423.
However, (this conversation just happened) another test case makes it fail.
So this is still a work in progress...
function maxValue L
put 0 into ml
repeat for each item i in L
if length(i) > ml then put length(i) into ml
end repeat
repeat with i = 0 to 9
repeat ml
put i after d[i]
end repeat
end repeat
repeat for each item i in L
put i & cr after C[char 1 to ml of (i & d[char 1 of i])]
end repeat
put keys of C into kList
sort kList descending numeric
repeat for each line K in kList
put C[K] after R
end repeat
replace cr with empty in R
return R
end maxValue
Test Data
642,6,4,3
642,6,4,1
642,6,661,4,3
5,50,56
420,42,423
262,26
26,262
Test Results
664243
664241
666164243
56550
42423420
26226 -- fail
26262
_______________________________________________
use-livecode mailing list
[email protected]
Please visit this url to subscribe, unsubscribe and manage your subscription
preferences:
http://lists.runrev.com/mailman/listinfo/use-livecode