Plateforme Level Extreme
Abonnement
Profil corporatif
Produits & Services
Support
Légal
English
Need Math Whiz - Frankenbach ?
Message
De
21/02/2005 10:53:42
 
 
Information générale
Forum:
Visual FoxPro
Catégorie:
Codage, syntaxe et commandes
Divers
Thread ID:
00987308
Message ID:
00988865
Vues:
58
>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
Précédent
Suivant
Répondre
Fil
Voir

Click here to load this message in the networking platform