Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
48 changes: 48 additions & 0 deletions test1/fibonacci/src/main.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
#include <stdio.h>

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;
}
50 changes: 50 additions & 0 deletions test1/maxSum/src/main.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
#include <stdio.h>

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;
}

45 changes: 45 additions & 0 deletions test1/selectionSort/src/main.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
#include <stdio.h>

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");
}