A Farmer With Four Stones.....

by Rob 20. January 2012 12:08

A farmer had a stone that he used to measure grain on his scale. One day his neighbor borrowed the stone; and when he returned; it was broken into four pieces. The neighbor was very apologetic; but the farmer thanked the neighbor for doing him a big favor. The farmer said that now he can measure his grain in one pound increments starting at one pound all the way to forty pounds (1; 2; 3; 17; 29; 37; etc.) using these four stones. How much do the four stones weigh?

Solution with LINQ...

 var a = ((from myA in Enumerable.Range(1, 40)
		 from myB in Enumerable.Range(1, 40)
		 from myC in Enumerable.Range(1, 40)
		 from myD in Enumerable.Range(1, 40)
			 where myA + myB + myC + myD == 40
				 && myA <= myB
				 && myB <= myC
				 && myC <= myD
		 select new[] {myA, myB, myC, myD}).Where(
					   myNum => Enumerable.Range(1, 40).All(
								target => ((from myn1 in new[] { 0, 1, -1 }
											from myn2 in new[] { 0, 1, -1 }
											from myn3 in new[] { 0, 1, -1 }
											from myn4 in new[] { 0, 1, -1 }
											select myn1*myNum[0]
												   + myn2*myNum[1]
												   + myn3*myNum[2]
												   + myn4*myNum[3]).
											  Any
											  (x => x == target))))).ToList();
Tags: ,
Categories: