From 1a92001dfa7b05779125ecd6d11664d22159b2a1 Mon Sep 17 00:00:00 2001 From: Dan Date: Mon, 20 Oct 2025 16:29:46 +0300 Subject: [PATCH 1/3] Add selection sort algorithm --- test1/selectionSort/src/main.c | 45 ++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 test1/selectionSort/src/main.c diff --git a/test1/selectionSort/src/main.c b/test1/selectionSort/src/main.c new file mode 100644 index 0000000..f51c3f7 --- /dev/null +++ b/test1/selectionSort/src/main.c @@ -0,0 +1,45 @@ +#include + +void selectionSort(int *arr, int n); + +void printArray(int *arr, int n); + +int main() { + int arr[] = {64, 25, 12, 22, 11}; + int n = sizeof(arr) / sizeof(arr[0]); + + printf("Initial array: "); + printArray(arr, n); + + selectionSort(arr, n); + + printf("Sorted array: "); + printArray(arr, n); + + return 0; +} + +void selectionSort(int *arr, int n) { + for (int i = 0; i < n - 1; ++i) { + int minIndex = i; + for (int j = i + 1; j < n; ++j) { + if (arr[j] < arr[minIndex]) { + minIndex = j; + } + } + + if (minIndex != i) { + int temp = arr[i]; + arr[i] = arr[minIndex]; + arr[minIndex] = temp; + } + } +} + +void printArray(int *arr, int n) { + for (int i = 0; i < n; i++) { + printf("%d ", arr[i]); + } + printf("\n"); +} + From d5399f078cf216c5910b8d16b33fa3874061a93a Mon Sep 17 00:00:00 2001 From: Dan Date: Mon, 20 Oct 2025 16:41:28 +0300 Subject: [PATCH 2/3] Add algorithm that finds number with max sum of digits in binary format --- test1/maxSum/src/main.c | 50 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 50 insertions(+) create mode 100644 test1/maxSum/src/main.c diff --git a/test1/maxSum/src/main.c b/test1/maxSum/src/main.c new file mode 100644 index 0000000..c2ca0fb --- /dev/null +++ b/test1/maxSum/src/main.c @@ -0,0 +1,50 @@ +#include + +void printMax(int *numbers, const int size); + +int binaryDigitSum(int num); + +int main() { + int numbers[] = {15, 7, 3, 31, 63, 1, 255, 127, 85}; + const int size = sizeof(numbers) / sizeof(numbers[0]); + + printMax(numbers, size); + + return 0; +} + +void printMax(int *numbers, const int size) { + int maxSum = -1; + int maxNumbers[size]; + int count = 0; + + for (int i = 0; i < size; i++) { + int currentSum = binaryDigitSum(numbers[i]); + + if (currentSum > maxSum) { + maxSum = currentSum; + count = 0; + maxNumbers[count++] = numbers[i]; + } else if (currentSum == maxSum) + maxNumbers[count++] = numbers[i]; + } + + for (int i = 0; i < count; i++) + printf("%d ", maxNumbers[i]); + printf("\n"); +} + +int binaryDigitSum(int num) { + int sum = 0; + + if (num < 0) + num = -num; + + while (num > 0) { + sum += num % 2; + num = num / 2; + } + + return sum; +} + From 34a667e0d393d2723e59bb8d5b68c03f9c48b301 Mon Sep 17 00:00:00 2001 From: Dan Date: Mon, 20 Oct 2025 16:57:18 +0300 Subject: [PATCH 3/3] Add searching for fibonacci digit by position algorithm --- test1/fibonacci/src/main.c | 48 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100644 test1/fibonacci/src/main.c diff --git a/test1/fibonacci/src/main.c b/test1/fibonacci/src/main.c new file mode 100644 index 0000000..8d46f26 --- /dev/null +++ b/test1/fibonacci/src/main.c @@ -0,0 +1,48 @@ +#include + +int fibonacciDigit(int n); + +int main() { + printf("%d\n", fibonacciDigit(7)); + printf("%d\n", fibonacciDigit(11)); + + return 0; +} + +int fibonacciDigit(int n) { + if (n <= 0) + return -1; + if (n == 1 || n == 2) + return 1; + + int currentPos = 2; + long long a = 1, b = 1; + + while (currentPos < n) { + long long next = a + b; + a = b; + b = next; + + long long temp = next; + int numDigits = 0; + while (temp > 0) { + numDigits++; + temp /= 10; + } + + if (currentPos + numDigits >= n) { + int leftSpace = n - currentPos - 1; + long long divisor = 1; + + for (int i = 0; i < numDigits - leftSpace - 1; i++) { + divisor *= 10; + } + + return (int)((next / divisor) % 10); + } + + currentPos += numDigits; + } + + return -1; +}