On Tuesday 24 August 2010 19:14:11 CraZyBoY wrote:
> You have an abstract computer, so just forget everything you know
> about computers, this one only does what I'm about to tell you it
> does. You can use as many variables as you need, there are no negative
> numbers, all numbers are integers. You do not know the size of the
> integers, they could be infinitely large, so you can't count on
> truncating at any point. There are NO comparisons allowed, no if
> statements or anything like that.
> 
>  There are only four operations you can do on a variable.
> 1) You can set a variable to 0.
> 2) You can set a variable = another variable.
> 3) You can increment a variable (only by 1), and it's a post
> increment.
> 4) You can loop. So, if you were to say loop(v1) and v1 = 10, your
> loop would execute 10 times, but the value in v1 wouldn't change so
> the first line in the loop can change value of v1 without changing the
> number of times you loop.
> 
> You need to do 3 things.
> 1) Write a function that decrements by 1.
> 2) Write a function that subtracts one variable from another.
> 3) Write a function that divides one variable by another.
> 4) See if you can implement all 3 using at most 4 variables. Meaning,
> you're not making function calls now, you're making macros. And at
> most you can have 4 variables. The restriction really only applies to
> divide, the other 2 are easy to do with 4 vars or less. Division on
> the other hand is dependent on the other 2 functions, so, if subtract
> requires 3 variables, then divide only has 1 variable left unchanged
> after a call to subtract. Basically, just make your function calls to
> decrement and subtract so you pass your vars in by reference, and you
> can't declare any new variables in a function, what you pass in is all
> it gets.

-- 
You received this message because you are subscribed to the Google Groups 
"Algorithm Geeks" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/algogeeks?hl=en.

#include <stdio.h>

/* 'dis the C version of loop() */
#define loop( v, statement ) int __r = v; while ( ( __r-- ) > 0 ) statement

static int decrement( int v )
{
	int a = 0;
	int b = 0;

	loop( v, {
		a = b;
		b++;
	});

	return a;
}

int main( void )
{
	int v1 = 10;

	v1 = decrement( v1 );
	printf( "v2 = %d\n", v1 );

	/* and the rest is, as they say, history ...*/

	return 0;
}

Reply via email to