Hello there!
Today we are back with the second article of this series in which we put ChatGPT to the test and without me waffling on any further, lets take a look at the challenge.
Here is the challenge Sum of odd numbers
Followed by the instructions and examples:
Given the triangle of consecutive odd numbers:
1
3 5
7 9 11
13 15 17 19
21 23 25 27 29
...
Calculate the sum of the numbers in the nth row of this triangle (starting at index 1) e.g.: (Input --> Output)
1 --> 1
2 --> 3 + 5 = 8
Not a great deal to go off of, but simple enough that ChatGPT should not struggle... I think.
Solving it in JavaScript
function rowSumOddNumbers(n) {
// Calculate the starting number for the nth row
let start = (n * (n - 1)) + 1;
// Calculate the sum of the numbers in the nth row
let sum = 0;
for (let i = 0; i < n; i++) {
sum += start + (2 * i);
}
return sum;
}
Running the above code makes all tests pass!
Solving it in C
#include <inttypes.h>
uint64_t rowSumOddNumbers(uint32_t n) {
uint64_t start_num = 1, sum = 0;
// Calculate the starting number of the nth row
for (uint32_t i = 1; i < n; i++) {
start_num += 2 * i;
}
// Calculate the sum of the numbers in the nth row
for (uint32_t i = 0; i < n; i++) {
sum += start_num + 2 * i;
}
return sum;
}
It took 2 attempts for the C implementation to be correct however I think the issue was not starting a new prompt with ChatGPT
Solving it in SQL
SELECT SUM(nums.num) as sum_of_row
FROM
(SELECT ((n-1)*(n-1)+1) as num
FROM nums WHERE n = [input row number]) as nums
UNION ALL
SELECT SUM(nums.num) as sum_of_row
FROM
(SELECT ((n-1)*(n-1)+1) as num
FROM nums WHERE n = [input row number]) as nums
JOIN
(SELECT ((n-1)*(n-1)+1) as num
FROM nums WHERE n = [input row number]-1) as nums_prev
ON nums_prev.num < nums.num AND nums_prev.num % 2 = 1
After many attempts, I could not get ChatGPT to understand what it needed to do in order to pass this challenge.
Even before testing the SQL solution I have a feeling it is wrong because it is writing very verbose solutions to what I feel should be quite trivial at this point.
Maybe we will continue with SQL, maybe not. It depends on whether or not I figure out this current challenge!