From 09706b5e862b87b828810e15bfe470607d9c8c26 Mon Sep 17 00:00:00 2001 From: Dan Date: Mon, 1 Dec 2025 02:09:25 +0300 Subject: [PATCH 1/6] Add main --- .clang-format | 246 +++++++++++++++++++++++++++ .github/dependabot.yml | 6 + .github/workflows/build-and-lint.yml | 15 ++ HW1-LuckyTickets/src/main.c | 39 +++-- HW7/BinaryRepresentation/main.c | 39 +++++ 5 files changed, 325 insertions(+), 20 deletions(-) create mode 100644 .clang-format create mode 100644 .github/dependabot.yml create mode 100644 .github/workflows/build-and-lint.yml create mode 100644 HW7/BinaryRepresentation/main.c diff --git a/.clang-format b/.clang-format new file mode 100644 index 0000000..39a8ea0 --- /dev/null +++ b/.clang-format @@ -0,0 +1,246 @@ +--- +Language: Cpp +# BasedOnStyle: WebKit +AccessModifierOffset: -4 +AlignAfterOpenBracket: DontAlign +AlignArrayOfStructures: None +AlignConsecutiveAssignments: + Enabled: false + AcrossEmptyLines: false + AcrossComments: false + AlignCompound: false + AlignFunctionPointers: false + PadOperators: true +AlignConsecutiveBitFields: + Enabled: false + AcrossEmptyLines: false + AcrossComments: false + AlignCompound: false + AlignFunctionPointers: false + PadOperators: false +AlignConsecutiveDeclarations: + Enabled: false + AcrossEmptyLines: false + AcrossComments: false + AlignCompound: false + AlignFunctionPointers: false + PadOperators: false +AlignConsecutiveMacros: + Enabled: false + AcrossEmptyLines: false + AcrossComments: false + AlignCompound: false + AlignFunctionPointers: false + PadOperators: false +AlignConsecutiveShortCaseStatements: + Enabled: false + AcrossEmptyLines: false + AcrossComments: false + AlignCaseColons: false +AlignEscapedNewlines: Right +AlignOperands: DontAlign +AlignTrailingComments: + Kind: Never + OverEmptyLines: 0 +AllowAllArgumentsOnNextLine: true +AllowAllParametersOfDeclarationOnNextLine: true +AllowBreakBeforeNoexceptSpecifier: Never +AllowShortBlocksOnASingleLine: Empty +AllowShortCaseLabelsOnASingleLine: false +AllowShortCompoundRequirementOnASingleLine: true +AllowShortEnumsOnASingleLine: true +AllowShortFunctionsOnASingleLine: All +AllowShortIfStatementsOnASingleLine: Never +AllowShortLambdasOnASingleLine: All +AllowShortLoopsOnASingleLine: false +AlwaysBreakAfterDefinitionReturnType: None +AlwaysBreakAfterReturnType: None +AlwaysBreakBeforeMultilineStrings: false +AlwaysBreakTemplateDeclarations: MultiLine +AttributeMacros: + - __capability +BinPackArguments: true +BinPackParameters: true +BitFieldColonSpacing: Both +BraceWrapping: + AfterCaseLabel: false + AfterClass: false + AfterControlStatement: Never + AfterEnum: false + AfterExternBlock: false + AfterFunction: true + AfterNamespace: false + AfterObjCDeclaration: false + AfterStruct: false + AfterUnion: false + BeforeCatch: false + BeforeElse: false + BeforeLambdaBody: false + BeforeWhile: false + IndentBraces: false + SplitEmptyFunction: true + SplitEmptyRecord: true + SplitEmptyNamespace: true +BreakAdjacentStringLiterals: true +BreakAfterAttributes: Leave +BreakAfterJavaFieldAnnotations: false +BreakArrays: true +BreakBeforeBinaryOperators: All +BreakBeforeConceptDeclarations: Always +BreakBeforeBraces: WebKit +BreakBeforeInlineASMColon: OnlyMultiline +BreakBeforeTernaryOperators: true +BreakConstructorInitializers: BeforeComma +BreakInheritanceList: BeforeColon +BreakStringLiterals: true +ColumnLimit: 0 +CommentPragmas: '^ IWYU pragma:' +CompactNamespaces: false +ConstructorInitializerIndentWidth: 4 +ContinuationIndentWidth: 4 +Cpp11BracedListStyle: false +DerivePointerAlignment: false +DisableFormat: false +EmptyLineAfterAccessModifier: Never +EmptyLineBeforeAccessModifier: LogicalBlock +ExperimentalAutoDetectBinPacking: false +FixNamespaceComments: false +ForEachMacros: + - foreach + - Q_FOREACH + - BOOST_FOREACH +IfMacros: + - KJ_IF_MAYBE +IncludeBlocks: Preserve +IncludeCategories: + - Regex: '^"(llvm|llvm-c|clang|clang-c)/' + Priority: 2 + SortPriority: 0 + CaseSensitive: false + - Regex: '^(<|"(gtest|gmock|isl|json)/)' + Priority: 3 + SortPriority: 0 + CaseSensitive: false + - Regex: '.*' + Priority: 1 + SortPriority: 0 + CaseSensitive: false +IncludeIsMainRegex: '(Test)?$' +IncludeIsMainSourceRegex: '' +IndentAccessModifiers: false +IndentCaseBlocks: false +IndentCaseLabels: false +IndentExternBlock: AfterExternBlock +IndentGotoLabels: true +IndentPPDirectives: None +IndentRequiresClause: true +IndentWidth: 4 +IndentWrappedFunctionNames: false +InsertBraces: false +InsertNewlineAtEOF: false +InsertTrailingCommas: None +IntegerLiteralSeparator: + Binary: 0 + BinaryMinDigits: 0 + Decimal: 0 + DecimalMinDigits: 0 + Hex: 0 + HexMinDigits: 0 +JavaScriptQuotes: Leave +JavaScriptWrapImports: true +KeepEmptyLinesAtTheStartOfBlocks: true +KeepEmptyLinesAtEOF: false +LambdaBodyIndentation: Signature +LineEnding: DeriveLF +MacroBlockBegin: '' +MacroBlockEnd: '' +MaxEmptyLinesToKeep: 1 +NamespaceIndentation: Inner +ObjCBinPackProtocolList: Auto +ObjCBlockIndentWidth: 4 +ObjCBreakBeforeNestedBlockParam: true +ObjCSpaceAfterProperty: true +ObjCSpaceBeforeProtocolList: true +PackConstructorInitializers: BinPack +PenaltyBreakAssignment: 2 +PenaltyBreakBeforeFirstCallParameter: 19 +PenaltyBreakComment: 300 +PenaltyBreakFirstLessLess: 120 +PenaltyBreakOpenParenthesis: 0 +PenaltyBreakScopeResolution: 500 +PenaltyBreakString: 1000 +PenaltyBreakTemplateDeclaration: 10 +PenaltyExcessCharacter: 1000000 +PenaltyIndentedWhitespace: 0 +PenaltyReturnTypeOnItsOwnLine: 60 +PointerAlignment: Left +PPIndentWidth: -1 +QualifierAlignment: Leave +ReferenceAlignment: Pointer +ReflowComments: true +RemoveBracesLLVM: false +RemoveParentheses: Leave +RemoveSemicolon: false +RequiresClausePosition: OwnLine +RequiresExpressionIndentation: OuterScope +SeparateDefinitionBlocks: Leave +ShortNamespaceLines: 1 +SkipMacroDefinitionBody: false +SortIncludes: CaseSensitive +SortJavaStaticImport: Before +SortUsingDeclarations: LexicographicNumeric +SpaceAfterCStyleCast: false +SpaceAfterLogicalNot: false +SpaceAfterTemplateKeyword: true +SpaceAroundPointerQualifiers: Default +SpaceBeforeAssignmentOperators: true +SpaceBeforeCaseColon: false +SpaceBeforeCpp11BracedList: true +SpaceBeforeCtorInitializerColon: true +SpaceBeforeInheritanceColon: true +SpaceBeforeJsonColon: false +SpaceBeforeParens: ControlStatements +SpaceBeforeParensOptions: + AfterControlStatements: true + AfterForeachMacros: true + AfterFunctionDefinitionName: false + AfterFunctionDeclarationName: false + AfterIfMacros: true + AfterOverloadedOperator: false + AfterPlacementOperator: true + AfterRequiresInClause: false + AfterRequiresInExpression: false + BeforeNonEmptyParentheses: false +SpaceBeforeRangeBasedForLoopColon: true +SpaceBeforeSquareBrackets: false +SpaceInEmptyBlock: true +SpacesBeforeTrailingComments: 1 +SpacesInAngles: Never +SpacesInContainerLiterals: true +SpacesInLineCommentPrefix: + Minimum: 1 + Maximum: -1 +SpacesInParens: Never +SpacesInParensOptions: + InCStyleCasts: false + InConditionalStatements: false + InEmptyParentheses: false + Other: false +SpacesInSquareBrackets: false +Standard: Latest +StatementAttributeLikeMacros: + - Q_EMIT +StatementMacros: + - Q_UNUSED + - QT_REQUIRE_VERSION +TabWidth: 8 +UseTab: Never +VerilogBreakBetweenInstancePorts: true +WhitespaceSensitiveMacros: + - BOOST_PP_STRINGIZE + - CF_SWIFT_NAME + - NS_SWIFT_NAME + - PP_STRINGIZE + - STRINGIZE +... + diff --git a/.github/dependabot.yml b/.github/dependabot.yml new file mode 100644 index 0000000..58865cf --- /dev/null +++ b/.github/dependabot.yml @@ -0,0 +1,6 @@ +version: 2 +updates: + - package-ecosystem: github-actions + directory: / + schedule: + interval: "weekly" diff --git a/.github/workflows/build-and-lint.yml b/.github/workflows/build-and-lint.yml new file mode 100644 index 0000000..4a55671 --- /dev/null +++ b/.github/workflows/build-and-lint.yml @@ -0,0 +1,15 @@ +name: Build and lint + +on: + - push + - pull_request + +jobs: + build-and-lint: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v5 + - name: Check format + run: | + find . -path ./build -prune -o -type f -name '*.[c|h]' -print | xargs clang-format-18 --style=file --dry-run -Werror + diff --git a/HW1-LuckyTickets/src/main.c b/HW1-LuckyTickets/src/main.c index a52fd62..898e9f1 100644 --- a/HW1-LuckyTickets/src/main.c +++ b/HW1-LuckyTickets/src/main.c @@ -1,32 +1,31 @@ #include -int getLuckyTicketsAmount() { - const int combinationsPossible = 28; +int getLuckyTicketsAmount(int sumOfNumbers) { + int ticketsAmount = 1000000; + int count = 0; - int sumArr[combinationsPossible] = {0}; + for (int i = 0; i < ticketsAmount; i++) { + int sum1 = 0, sum2 = 0; + int currTicket = i; - for (int s = 0; s < combinationsPossible; ++s) { - int count = 0; - - for (int firstNum = 0; firstNum <= 9; ++firstNum) { - int remaining = s - firstNum; - if (remaining < 0) - break; - if (remaining <= 18) - count += (remaining <= 9) ? (remaining + 1) : (19 - remaining); + for (int j = 0; j < 3; j++) { + sum1 += currTicket % 10; + currTicket /= 10; + } + for (int j = 0; j < 3; j++) { + sum2 += currTicket % 10; + currTicket /= 10; } - sumArr[s] = count; + if (sum1 == sumOfNumbers && sum2 == sumOfNumbers) + count++; } - - int totalLucky = 0; - for (int i = 0; i < combinationsPossible; ++i) - totalLucky += sumArr[i] * sumArr[i]; - - return totalLucky; + return count; } int main() { - printf("%d", getLuckyTicketsAmount()); + const int sumOfNumbers = 12; + printf("%d", getLuckyTicketsAmount(sumOfNumbers)); return 0; } + diff --git a/HW7/BinaryRepresentation/main.c b/HW7/BinaryRepresentation/main.c new file mode 100644 index 0000000..fd82548 --- /dev/null +++ b/HW7/BinaryRepresentation/main.c @@ -0,0 +1,39 @@ +#include "include/logic.h" +#include +#include +#include + +int main() +{ + int firstNum, secNum; + printf("First number = "); + if (scanf("%d", &firstNum) != 1) { + printf("Invalid input\n"); + return 1; + } + printf("Second number = "); + if (scanf("%d", &secNum) != 1) { + printf("Invalid input\n"); + return 1; + } + + char* firstBin = toTwosComplement(firstNum); + char* secBin = toTwosComplement(secNum); + printf("First binary:\n"); + printBinary(firstBin); + printf("Second binary:\n"); + printBinary(secBin); + + char* addition = binaryAddition(firstBin, secBin); + printf("Addition:\n"); + printBinary(addition); + + int decimal = toDecimal(addition); + printf("Decimal:\n%d", decimal); + + free(firstBin); + free(secBin); + free(addition); + + return 0; +} From 8c48d6e8c61ac681571c07a9fda227afbce5a35f Mon Sep 17 00:00:00 2001 From: Dan Date: Mon, 1 Dec 2025 02:09:59 +0300 Subject: [PATCH 2/6] Add Makefile --- HW7/BinaryRepresentation/Makefile | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) create mode 100644 HW7/BinaryRepresentation/Makefile diff --git a/HW7/BinaryRepresentation/Makefile b/HW7/BinaryRepresentation/Makefile new file mode 100644 index 0000000..4a41043 --- /dev/null +++ b/HW7/BinaryRepresentation/Makefile @@ -0,0 +1,26 @@ +CC = gcc +CFLAGS = -Iinclude -Wall -Wextra + +SRC = main.c src/logic.c +TEST_SRC = tests/tests.c + +OUT = program +TEST_OUT = testProgram + +all: $(OUT) + +$(OUT): $(SRC) + $(CC) $(CFLAGS) $(SRC) -o $(OUT) + +test: src/logic.c tests/tests.c + $(CC) $(CFLAGS) -DTEST_MAIN src/logic.c tests/tests.c -o $(TEST_OUT) + +clean: + rm -f $(OUT) $(TEST_OUT) + +format: + find . -path ./build -prune -o -type f \( -path "./src/*" -o -path "./include/*" -o -path "./tests/*" -o -name "main.c" \) \( -name '*.c' -o -name '*.h' \) -print | xargs clang-format --style=file -i + +format-check: + find . -path ./build -prune -o -type f \( -path "./src/*" -o -path "./include/*" -o -path "./tests/*" -o -name "main.c" \) \( -name '*.c' -o -name '*.h' \) -print | xargs clang-format --style=file --dry-run -Werror + From 291167c40c98f4ed33794fb70845cd0e84ee50a2 Mon Sep 17 00:00:00 2001 From: Dan Date: Mon, 1 Dec 2025 02:10:33 +0300 Subject: [PATCH 3/6] Add binary representation logic --- HW7/BinaryRepresentation/include/logic.h | 8 ++++ HW7/BinaryRepresentation/src/logic.c | 59 ++++++++++++++++++++++++ 2 files changed, 67 insertions(+) create mode 100644 HW7/BinaryRepresentation/include/logic.h create mode 100644 HW7/BinaryRepresentation/src/logic.c diff --git a/HW7/BinaryRepresentation/include/logic.h b/HW7/BinaryRepresentation/include/logic.h new file mode 100644 index 0000000..5f51588 --- /dev/null +++ b/HW7/BinaryRepresentation/include/logic.h @@ -0,0 +1,8 @@ +#pragma once + +extern const int BITS_NUM; + +char* toTwosComplement(int num); +void printBinary(const char* binaryStr); +char* binaryAddition(const char* firstBin, const char* secBin); +int toDecimal(const char* binaryStr); diff --git a/HW7/BinaryRepresentation/src/logic.c b/HW7/BinaryRepresentation/src/logic.c new file mode 100644 index 0000000..ad1235c --- /dev/null +++ b/HW7/BinaryRepresentation/src/logic.c @@ -0,0 +1,59 @@ +#include "../include/logic.h" +#include +#include + +const int BITS_NUM = sizeof(int) * 8; + +char* toTwosComplement(const int num) +{ + char* binaryStr = (char*)malloc(BITS_NUM + 1); + unsigned int mask = 1 << (BITS_NUM - 1); + + unsigned int uNum = (unsigned int)num; + + for (int i = 0; i < BITS_NUM; ++i) { + binaryStr[i] = (uNum & mask) ? '1' : '0'; + mask >>= 1; + } + binaryStr[BITS_NUM] = '\0'; + + return binaryStr; +} + +void printBinary(const char* binaryStr) +{ + for (int i = 0; i < BITS_NUM; ++i) { + printf("%c", binaryStr[i]); + if ((i + 1) % 8 == 0 && i != BITS_NUM - 1) + printf(" "); + } + printf("\n"); +} + +char* binaryAddition(const char* firstBin, const char* secBin) +{ + char* binaryStr = (char*)malloc(BITS_NUM + 1); + + int carry = 0; + for (int i = BITS_NUM - 1; i >= 0; --i) { + int firstBit = firstBin[i] - '0'; + int secBit = secBin[i] - '0'; + + int sum = firstBit + secBit + carry; + binaryStr[i] = (sum % 2) + '0'; + carry = sum / 2; + } + binaryStr[BITS_NUM] = '\0'; + + return binaryStr; +} + +int toDecimal(const char* binaryStr) +{ + unsigned int decimal = 0; + + for (int i = 0; i < BITS_NUM; ++i) + decimal = (decimal << 1) | (binaryStr[i] - '0'); + + return (int)decimal; +} From 70f3368c008c044568bd82625ae5f82d84439cee Mon Sep 17 00:00:00 2001 From: Dan Date: Mon, 1 Dec 2025 02:10:47 +0300 Subject: [PATCH 4/6] Add tests --- HW7/BinaryRepresentation/tests/tests.c | 107 +++++++++++++++++++++++++ 1 file changed, 107 insertions(+) create mode 100644 HW7/BinaryRepresentation/tests/tests.c diff --git a/HW7/BinaryRepresentation/tests/tests.c b/HW7/BinaryRepresentation/tests/tests.c new file mode 100644 index 0000000..cea0a1b --- /dev/null +++ b/HW7/BinaryRepresentation/tests/tests.c @@ -0,0 +1,107 @@ +#include "../include/logic.h" +#include +#include +#include + +int assertInt(const char* name, int got, int expected) +{ + if (got != expected) { + printf("Failed %s: got: %d, expected: %d\n", name, got, expected); + return 0; + } + printf("Passed %s\n", name); + return 1; +} + +int assertStr(const char* name, const char* got, const char* expected) +{ + if (strcmp(got, expected) != 0) { + printf("Failed %s: got: %s, expected: %s\n", name, got, expected); + return 0; + } + printf("Passed %s\n", name); + return 1; +} + +void testToTwosComplementPositive() +{ + char* b = toTwosComplement(5); + char expected[BITS_NUM + 1]; + for (int i = 0; i < BITS_NUM; ++i) + expected[i] = '0'; + expected[BITS_NUM - 3] = '1'; + expected[BITS_NUM - 1] = '1'; + expected[BITS_NUM] = '\0'; + assertStr("toTwosComplement(5)", b, expected); + free(b); +} + +void testToTwosComplementNegative() +{ + char* b = toTwosComplement(-1); + char expected[BITS_NUM + 1]; + for (int i = 0; i < BITS_NUM; ++i) + expected[i] = '1'; + expected[BITS_NUM] = '\0'; + assertStr("toTwosComplement(-1)", b, expected); + free(b); +} + +void testBinaryAdditionPositive() +{ + char* a = toTwosComplement(5); + char* b = toTwosComplement(7); + char* sum = binaryAddition(a, b); + int dec = toDecimal(sum); + assertInt("binaryAddition(5+7)", dec, 12); + free(a); + free(b); + free(sum); +} + +void testBinaryAdditionNegative() +{ + char* a = toTwosComplement(-5); + char* b = toTwosComplement(1); + char* sum = binaryAddition(a, b); + int dec = toDecimal(sum); + assertInt("binaryAddition(-5+1)", dec, -4); + free(a); + free(b); + free(sum); +} + +void testToDecimalZero() +{ + char* a = toTwosComplement(0); + int dec = toDecimal(a); + assertInt("toDecimal(0)", dec, 0); + free(a); +} + +void testToDecimalNegative() +{ + char* a = toTwosComplement(-1); + int dec = toDecimal(a); + assertInt("toDecimal(-1)", dec, -1); + free(a); +} + +void runTests() +{ + testToTwosComplementPositive(); + testToTwosComplementNegative(); + testBinaryAdditionPositive(); + testBinaryAdditionNegative(); + testToDecimalZero(); + testToDecimalNegative(); + printf("All tests finished.\n"); +} + +#ifdef TEST_MAIN +int main() +{ + runTests(); + return 0; +} +#endif From 417c40a47f07805ecfbab5daa036a03334f11001 Mon Sep 17 00:00:00 2001 From: Dan Date: Mon, 1 Dec 2025 02:16:59 +0300 Subject: [PATCH 5/6] Remove unwatned files pulled from main --- .clang-format | 246 --------------------------- .github/dependabot.yml | 6 - .github/workflows/build-and-lint.yml | 15 -- HW1-LuckyTickets/src/main.c | 31 ---- 4 files changed, 298 deletions(-) delete mode 100644 .clang-format delete mode 100644 .github/dependabot.yml delete mode 100644 .github/workflows/build-and-lint.yml delete mode 100644 HW1-LuckyTickets/src/main.c diff --git a/.clang-format b/.clang-format deleted file mode 100644 index 39a8ea0..0000000 --- a/.clang-format +++ /dev/null @@ -1,246 +0,0 @@ ---- -Language: Cpp -# BasedOnStyle: WebKit -AccessModifierOffset: -4 -AlignAfterOpenBracket: DontAlign -AlignArrayOfStructures: None -AlignConsecutiveAssignments: - Enabled: false - AcrossEmptyLines: false - AcrossComments: false - AlignCompound: false - AlignFunctionPointers: false - PadOperators: true -AlignConsecutiveBitFields: - Enabled: false - AcrossEmptyLines: false - AcrossComments: false - AlignCompound: false - AlignFunctionPointers: false - PadOperators: false -AlignConsecutiveDeclarations: - Enabled: false - AcrossEmptyLines: false - AcrossComments: false - AlignCompound: false - AlignFunctionPointers: false - PadOperators: false -AlignConsecutiveMacros: - Enabled: false - AcrossEmptyLines: false - AcrossComments: false - AlignCompound: false - AlignFunctionPointers: false - PadOperators: false -AlignConsecutiveShortCaseStatements: - Enabled: false - AcrossEmptyLines: false - AcrossComments: false - AlignCaseColons: false -AlignEscapedNewlines: Right -AlignOperands: DontAlign -AlignTrailingComments: - Kind: Never - OverEmptyLines: 0 -AllowAllArgumentsOnNextLine: true -AllowAllParametersOfDeclarationOnNextLine: true -AllowBreakBeforeNoexceptSpecifier: Never -AllowShortBlocksOnASingleLine: Empty -AllowShortCaseLabelsOnASingleLine: false -AllowShortCompoundRequirementOnASingleLine: true -AllowShortEnumsOnASingleLine: true -AllowShortFunctionsOnASingleLine: All -AllowShortIfStatementsOnASingleLine: Never -AllowShortLambdasOnASingleLine: All -AllowShortLoopsOnASingleLine: false -AlwaysBreakAfterDefinitionReturnType: None -AlwaysBreakAfterReturnType: None -AlwaysBreakBeforeMultilineStrings: false -AlwaysBreakTemplateDeclarations: MultiLine -AttributeMacros: - - __capability -BinPackArguments: true -BinPackParameters: true -BitFieldColonSpacing: Both -BraceWrapping: - AfterCaseLabel: false - AfterClass: false - AfterControlStatement: Never - AfterEnum: false - AfterExternBlock: false - AfterFunction: true - AfterNamespace: false - AfterObjCDeclaration: false - AfterStruct: false - AfterUnion: false - BeforeCatch: false - BeforeElse: false - BeforeLambdaBody: false - BeforeWhile: false - IndentBraces: false - SplitEmptyFunction: true - SplitEmptyRecord: true - SplitEmptyNamespace: true -BreakAdjacentStringLiterals: true -BreakAfterAttributes: Leave -BreakAfterJavaFieldAnnotations: false -BreakArrays: true -BreakBeforeBinaryOperators: All -BreakBeforeConceptDeclarations: Always -BreakBeforeBraces: WebKit -BreakBeforeInlineASMColon: OnlyMultiline -BreakBeforeTernaryOperators: true -BreakConstructorInitializers: BeforeComma -BreakInheritanceList: BeforeColon -BreakStringLiterals: true -ColumnLimit: 0 -CommentPragmas: '^ IWYU pragma:' -CompactNamespaces: false -ConstructorInitializerIndentWidth: 4 -ContinuationIndentWidth: 4 -Cpp11BracedListStyle: false -DerivePointerAlignment: false -DisableFormat: false -EmptyLineAfterAccessModifier: Never -EmptyLineBeforeAccessModifier: LogicalBlock -ExperimentalAutoDetectBinPacking: false -FixNamespaceComments: false -ForEachMacros: - - foreach - - Q_FOREACH - - BOOST_FOREACH -IfMacros: - - KJ_IF_MAYBE -IncludeBlocks: Preserve -IncludeCategories: - - Regex: '^"(llvm|llvm-c|clang|clang-c)/' - Priority: 2 - SortPriority: 0 - CaseSensitive: false - - Regex: '^(<|"(gtest|gmock|isl|json)/)' - Priority: 3 - SortPriority: 0 - CaseSensitive: false - - Regex: '.*' - Priority: 1 - SortPriority: 0 - CaseSensitive: false -IncludeIsMainRegex: '(Test)?$' -IncludeIsMainSourceRegex: '' -IndentAccessModifiers: false -IndentCaseBlocks: false -IndentCaseLabels: false -IndentExternBlock: AfterExternBlock -IndentGotoLabels: true -IndentPPDirectives: None -IndentRequiresClause: true -IndentWidth: 4 -IndentWrappedFunctionNames: false -InsertBraces: false -InsertNewlineAtEOF: false -InsertTrailingCommas: None -IntegerLiteralSeparator: - Binary: 0 - BinaryMinDigits: 0 - Decimal: 0 - DecimalMinDigits: 0 - Hex: 0 - HexMinDigits: 0 -JavaScriptQuotes: Leave -JavaScriptWrapImports: true -KeepEmptyLinesAtTheStartOfBlocks: true -KeepEmptyLinesAtEOF: false -LambdaBodyIndentation: Signature -LineEnding: DeriveLF -MacroBlockBegin: '' -MacroBlockEnd: '' -MaxEmptyLinesToKeep: 1 -NamespaceIndentation: Inner -ObjCBinPackProtocolList: Auto -ObjCBlockIndentWidth: 4 -ObjCBreakBeforeNestedBlockParam: true -ObjCSpaceAfterProperty: true -ObjCSpaceBeforeProtocolList: true -PackConstructorInitializers: BinPack -PenaltyBreakAssignment: 2 -PenaltyBreakBeforeFirstCallParameter: 19 -PenaltyBreakComment: 300 -PenaltyBreakFirstLessLess: 120 -PenaltyBreakOpenParenthesis: 0 -PenaltyBreakScopeResolution: 500 -PenaltyBreakString: 1000 -PenaltyBreakTemplateDeclaration: 10 -PenaltyExcessCharacter: 1000000 -PenaltyIndentedWhitespace: 0 -PenaltyReturnTypeOnItsOwnLine: 60 -PointerAlignment: Left -PPIndentWidth: -1 -QualifierAlignment: Leave -ReferenceAlignment: Pointer -ReflowComments: true -RemoveBracesLLVM: false -RemoveParentheses: Leave -RemoveSemicolon: false -RequiresClausePosition: OwnLine -RequiresExpressionIndentation: OuterScope -SeparateDefinitionBlocks: Leave -ShortNamespaceLines: 1 -SkipMacroDefinitionBody: false -SortIncludes: CaseSensitive -SortJavaStaticImport: Before -SortUsingDeclarations: LexicographicNumeric -SpaceAfterCStyleCast: false -SpaceAfterLogicalNot: false -SpaceAfterTemplateKeyword: true -SpaceAroundPointerQualifiers: Default -SpaceBeforeAssignmentOperators: true -SpaceBeforeCaseColon: false -SpaceBeforeCpp11BracedList: true -SpaceBeforeCtorInitializerColon: true -SpaceBeforeInheritanceColon: true -SpaceBeforeJsonColon: false -SpaceBeforeParens: ControlStatements -SpaceBeforeParensOptions: - AfterControlStatements: true - AfterForeachMacros: true - AfterFunctionDefinitionName: false - AfterFunctionDeclarationName: false - AfterIfMacros: true - AfterOverloadedOperator: false - AfterPlacementOperator: true - AfterRequiresInClause: false - AfterRequiresInExpression: false - BeforeNonEmptyParentheses: false -SpaceBeforeRangeBasedForLoopColon: true -SpaceBeforeSquareBrackets: false -SpaceInEmptyBlock: true -SpacesBeforeTrailingComments: 1 -SpacesInAngles: Never -SpacesInContainerLiterals: true -SpacesInLineCommentPrefix: - Minimum: 1 - Maximum: -1 -SpacesInParens: Never -SpacesInParensOptions: - InCStyleCasts: false - InConditionalStatements: false - InEmptyParentheses: false - Other: false -SpacesInSquareBrackets: false -Standard: Latest -StatementAttributeLikeMacros: - - Q_EMIT -StatementMacros: - - Q_UNUSED - - QT_REQUIRE_VERSION -TabWidth: 8 -UseTab: Never -VerilogBreakBetweenInstancePorts: true -WhitespaceSensitiveMacros: - - BOOST_PP_STRINGIZE - - CF_SWIFT_NAME - - NS_SWIFT_NAME - - PP_STRINGIZE - - STRINGIZE -... - diff --git a/.github/dependabot.yml b/.github/dependabot.yml deleted file mode 100644 index 58865cf..0000000 --- a/.github/dependabot.yml +++ /dev/null @@ -1,6 +0,0 @@ -version: 2 -updates: - - package-ecosystem: github-actions - directory: / - schedule: - interval: "weekly" diff --git a/.github/workflows/build-and-lint.yml b/.github/workflows/build-and-lint.yml deleted file mode 100644 index 4a55671..0000000 --- a/.github/workflows/build-and-lint.yml +++ /dev/null @@ -1,15 +0,0 @@ -name: Build and lint - -on: - - push - - pull_request - -jobs: - build-and-lint: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v5 - - name: Check format - run: | - find . -path ./build -prune -o -type f -name '*.[c|h]' -print | xargs clang-format-18 --style=file --dry-run -Werror - diff --git a/HW1-LuckyTickets/src/main.c b/HW1-LuckyTickets/src/main.c deleted file mode 100644 index 898e9f1..0000000 --- a/HW1-LuckyTickets/src/main.c +++ /dev/null @@ -1,31 +0,0 @@ -#include - -int getLuckyTicketsAmount(int sumOfNumbers) { - int ticketsAmount = 1000000; - int count = 0; - - for (int i = 0; i < ticketsAmount; i++) { - int sum1 = 0, sum2 = 0; - int currTicket = i; - - for (int j = 0; j < 3; j++) { - sum1 += currTicket % 10; - currTicket /= 10; - } - for (int j = 0; j < 3; j++) { - sum2 += currTicket % 10; - currTicket /= 10; - } - - if (sum1 == sumOfNumbers && sum2 == sumOfNumbers) - count++; - } - return count; -} - -int main() { - const int sumOfNumbers = 12; - printf("%d", getLuckyTicketsAmount(sumOfNumbers)); - return 0; -} - From ef607c7cb984fc6d7b8c350b5f4972c71439c47f Mon Sep 17 00:00:00 2001 From: Dan Date: Mon, 1 Dec 2025 02:22:07 +0300 Subject: [PATCH 6/6] Reset HW1-LuckyTickets/src/main.c to main version --- HW1-LuckyTickets/src/main.c | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 HW1-LuckyTickets/src/main.c diff --git a/HW1-LuckyTickets/src/main.c b/HW1-LuckyTickets/src/main.c new file mode 100644 index 0000000..a52fd62 --- /dev/null +++ b/HW1-LuckyTickets/src/main.c @@ -0,0 +1,32 @@ +#include + +int getLuckyTicketsAmount() { + const int combinationsPossible = 28; + + int sumArr[combinationsPossible] = {0}; + + for (int s = 0; s < combinationsPossible; ++s) { + int count = 0; + + for (int firstNum = 0; firstNum <= 9; ++firstNum) { + int remaining = s - firstNum; + if (remaining < 0) + break; + if (remaining <= 18) + count += (remaining <= 9) ? (remaining + 1) : (19 - remaining); + } + + sumArr[s] = count; + } + + int totalLucky = 0; + for (int i = 0; i < combinationsPossible; ++i) + totalLucky += sumArr[i] * sumArr[i]; + + return totalLucky; +} + +int main() { + printf("%d", getLuckyTicketsAmount()); + return 0; +}