Level Extreme platform
Subscription
Corporate profile
Products & Services
Support
Legal
Français
Need Math Whiz - Frankenbach ?
Message
From
21/02/2005 10:53:42
 
General information
Forum:
Visual FoxPro
Category:
Coding, syntax & commands
Miscellaneous
Thread ID:
00987308
Message ID:
00988865
Views:
61
>very true, I just thought perhaps you were getting something extra out, the code seemed a bit complex to work out what.
>
>are you getting the same results as me?

My code add another way for balanced split a number: splitNumberMin

For Charles's definition, uses splitNumberMax :
CLEAR 
DIMENSION aX[1]
*	FOR k=10 TO 10
*		FOR j=1 TO m.k
*			=splitNumberMin(m.k,m.j,@aX)
*			? m.k,m.j,' ',arrayToString(@aX)
*		NEXT
*	NEXT
*	? "Max"
FOR k=10 TO 10
	FOR j=1 TO m.k
		=splitNumberMax(m.k,m.j,@aX)
		? m.k,m.j,' ',arrayToString(@aX)
	NEXT
NEXT


*	PROCEDURE splitNumberMin(N,parts,aReturn)
*		DIMENSION aReturn[m.parts]
*		aReturn=INT(m.N/m.parts)
*		aReturn[m.parts]=aReturn[m.parts]+m.N%m.parts


PROCEDURE splitNumberMax(N,parts,aReturn)
	DIMENSION aReturn[m.parts]
	IF EMPTY(m.N%m.parts)
		aReturn=m.N/m.parts
	ELSE
		aReturn=INT(m.N/(m.parts-1))-IIF(EMPTY(m.N%(m.parts-1)),1,0)
		aReturn[m.parts]=m.N-m.aReturn*(m.parts-1)
	ENDIF

FUNCTION arrayToString(aInput)
	PRIVATE i,s
	s=""
	FOR i=1 TO ALEN(aInput)
		s=m.s+","+LTRIM(STR(aInput[m.i]))
	NEXT
	RETURN SUBSTR(m.s,2)


* output
        10          1   10
        10          2   5,5
        10          3   4,4,2
        10          4   3,3,3,1
        10          5   2,2,2,2,2
        10          6   1,1,1,1,1,5
        10          7   1,1,1,1,1,1,4
        10          8   1,1,1,1,1,1,1,3
        10          9   1,1,1,1,1,1,1,1,2
        10         10   1,1,1,1,1,1,1,1,1,1
Fabio
Previous
Next
Reply
Map
View

Click here to load this message in the networking platform