This is the type of stuff that Linq excels in.
Quick and dirty version:
var eval = from i in Enumerable.Range(0, 1000)
where i % 2 != 0
let cs = Enumerable.Range(i, 5 * 2).Where(j => j % 2 != 0)
let sum = cs.Sum()
select new { Sum = sum, Numbers = cs};
var result = eval.First(i => i.Sum == 755);
Console.WriteLine(string.Join(” + “, result.Numbers) + ” = ” + result.Sum);
It¡¦s in point of fact a nice and useful piece of info. I am glad that you shared this helpful information with us. Please keep us up to date like this. Thank you for sharing.
Programmer Puzzlers publishes logic and coding puzzles designed for programmers. Stretch your mind, have fun, challenge your friends or gear up for an interview.
Answers are not provided, but you can submit your answer.
This is the type of stuff that Linq excels in.
Quick and dirty version:
var eval = from i in Enumerable.Range(0, 1000)
where i % 2 != 0
let cs = Enumerable.Range(i, 5 * 2).Where(j => j % 2 != 0)
let sum = cs.Sum()
select new { Sum = sum, Numbers = cs};
var result = eval.First(i => i.Sum == 755);
Console.WriteLine(string.Join(” + “, result.Numbers) + ” = ” + result.Sum);
Prints:
147 + 149 + 151 + 153 + 155 = 755
(x)+(x+2)+(x+4)+(x+6)+(x+8)=755
5*x+20=755
5*x=735
x=147
755 = 147 + 149 + 151 + 153 + 155
Less Stupid version:
static IEnumerable ConsecutiveOdds(int target, int noConsecutives)
{
var midPoint = target / (double)noConsecutives;
var start = (int)(midPoint – Math.Floor(noConsecutives / 2.0) * 2);
return Enumerable.Range(start, noConsecutives * 2).Where(i => i % 2 == 0);
}
>>> 755/5
151
>>> 147+149+151+153+155
number = 755
number_of_odds = 5
mid = number / number_of_odds
odd_numbers = [x for x in xrange(mid-4,mid+5) if x % 2 != 0]
mid_index = odd_numbers.index(mid)
print “%d + %d + %d + %d + %d = %d” % \
(odd_numbers[mid_index-2],odd_numbers[mid_index-1],odd_numbers[mid_index],
odd_numbers[mid_index+1],odd_numbers[mid_index+2],number)
prints:
147 + 149 + 151 + 153 + 155 = 755
Came to post R G’s solution.
idiomatic java version :
——————————-
import junit.framework.TestCase;
public class ChmodMath extends TestCase{
public int[] consecutiveOdd(int target,int numberOfConsecutives){
for(int i = 0; i < target; i++){
if(i % 2 != 0){
int sum = 0;
int[] consecutiveOff = new int[numberOfConsecutives];
for(int j=i, index=0;j< i+(numberOfConsecutives*2); j+=2, index++){
consecutiveOff[index] = j;
sum += j;
}
if(sum == target){
return consecutiveOff;
}
}
}
return null;
}
public void testConsecutiveOdd() throws Exception {
int[] odds = consecutiveOdd(755, 5);
int total = 0;
for(int odd : odds){
System.out.println(odd);
total += odd;
}
assertEquals(755, total);
}
}
————————
Agree with R G.
Yup, also came to post R.G.’s solution.
It¡¦s in point of fact a nice and useful piece of info. I am glad that you shared this helpful information with us. Please keep us up to date like this. Thank you for sharing.
public class puzzle755 {
public int siguienteNumeroImpar(int actual){
int respuesta=0;
if ((actual % 2) == 0){
actual++;
}
System.out.println(“actual : ” + actual);
return actual;
}
public boolean calculando(){
int suma = 0,digito1,digito2,digito3,digito4,digito5 =0;
for (int i=0; suma <= 756; i++){
digito1= this.siguienteNumeroImpar(i +1);
digito2 =this.siguienteNumeroImpar(digito1+1);
digito3 =this.siguienteNumeroImpar(digito2+1);
digito4 =this.siguienteNumeroImpar(digito3+1);
digito5 =this.siguienteNumeroImpar(digito4+1);
suma =digito1 + digito2 +digito3+digito4+digito5;
System.out.println("suma : " +suma);
if (suma== 755){
System.out.println("r : " + digito1);
System.out.println("r : " + digito2);
System.out.println("r : " + digito3);
System.out.println("r : " + digito4);
System.out.println("r : " + digito5);
}
i ++;
}
return true;
}
public static void main(String args []){
System.out.println(new puzzle755().calculando());
}
}