This commit is contained in:
JISAUAY committed 2024-12-02 09:58:35 -06:00
commit ca9736d8ec
122 files changed
+28514

No files matched your search

+5
View File
@@ -0,0 +1,5 @@
# AOC2022
My Advent of Code 2022
All done in C.
My goals with this were to write readible code that worked with varying inputs.
+43
View File
@@ -0,0 +1,43 @@
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
FILE *File;
char *Line = malloc(256);
int CurrentCal, MaxCalories, ElfNum, ElfLargest = 0;
File = fopen("input.txt","r");
while(fgets(Line, 10, File))
{
if (atoi(Line) == 0)
{
if (CurrentCal > MaxCalories)
{
MaxCalories = CurrentCal;
ElfLargest = ElfNum;
}
CurrentCal = 0;
ElfNum++;
}
else
CurrentCal += atoi(Line);
}
printf("Elf %d is carrying %d calories of food.", ElfLargest, MaxCalories);
fclose(File);
return 0;
}
File diff suppressed because it is too large. Load diff
+80
View File
@@ -0,0 +1,80 @@
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
int FindSmallest(int Array[3])
{
int SmallestNumberPosition = 0;
int SmallestNumber = Array[0];
for (int i = 1; i < 3; i++)
{
if (Array[i] < SmallestNumber)
{
SmallestNumber = Array[i];
SmallestNumberPosition = i;
}
}
return SmallestNumberPosition;
}
int main()
{
FILE *File;
char *Line = malloc(256);
int TopThree[3] = {0,0,0};
int CurrentCal = 0;
File = fopen("input.txt","r");
while(fgets(Line, 10, File))
{
if (atoi(Line) == 0)
{
for (int i=0; i < 3; i++)
{
bool ZeroCheck = false;
if (CurrentCal > TopThree[i])
{
int SmallestPos = FindSmallest(TopThree);
TopThree[SmallestPos] = CurrentCal;
break;
}
}
CurrentCal = 0;
}
else
CurrentCal += atoi(Line);
}
int Total = 0;
for (int i = 0; i < 3; i++)
Total += TopThree[i];
printf("Total of the top three elves: %d\n", Total);
fclose(File);
return 0;
}
File diff suppressed because it is too large. Load diff
+102
View File
@@ -0,0 +1,102 @@
#include <stdio.h>
#include <stdlib.h>
/*
KEY
A, X R 1
B, Y P 2
C, Z S 3
win 6
lose 0
draw 3
3 6 You: Scissors; Them: Paper (win)
3 3 You: Scissors; Them: Scissors (tie)
2 0 You: Paper; Them: Scissors (lose)
9+6+2
*/
int main()
{
FILE *File;
char Line[6];
int TotalScore = 0;
File = fopen("input.txt", "r");
while (fgets(Line, 6, File) != NULL)
{
int Score = 0;
char Me = Line[2];
char Opponent = Line[0];
printf("%c %c\n", Me, Opponent);
if (Me == 'X')
{
Score += 1;
printf("You played Rock! +1\n");
if (Opponent == 'C') // Scissors (win)
{
Score += 6;
printf("You won! +6\n");
}
else if (Opponent == 'A') // Rock (tie)
{
Score += 3;
printf("Tie! +3\n");
}
}
else if (Me == 'Y')
{
Score += 2;
printf("You played Paper! +2\n");
if (Opponent == 'A') // Rock (win)
{
Score += 6;
printf("You won! +6\n");
}
else if (Opponent == 'B') // Paper (tie)
{
Score += 3;
printf("Tie! +3\n");
}
}
else if (Me == 'Z')
{
Score += 3;
printf("You played Scissors! +3\n");
if (Opponent == 'B') // Paper (win)
{
Score += 6;
printf("You won! +6\n");
}
else if (Opponent == 'C') // Scissors (tie)
{
Score += 3;
printf("Tie! +3\n");
}
}
TotalScore += Score;
}
printf("Total score was %d\n",TotalScore);
fclose(File);
return 0;
}
File diff suppressed because it is too large. Load diff
+83
View File
@@ -0,0 +1,83 @@
#include <stdio.h>
#include <stdlib.h>
int main()
{
FILE *File;
char Line[6];
int TotalScore = 0;
File = fopen("input.txt", "r");
while (fgets(Line, 6, File) != NULL)
{
int Score = 0;
char Me = Line[2];
char Opponent = Line[0];
if (Me == 'X') // Lose
{
// O: Rock, Y: Scissors
if (Opponent == 'A')
Score += 3;
// O: Paper, Y: Rock
else if (Opponent == 'B')
Score += 1;
// O: Scissors, Y: Paper
else if (Opponent == 'C')
Score += 2;
}
else if (Me == 'Y') // Draw
{
Score += 3;
// O: Rock, Y: Rock
if (Opponent == 'A')
Score += 1;
// O: Paper, Y: Paper
else if (Opponent == 'B')
Score += 2;
// O: Scissors, Y: Scissors
else if (Opponent == 'C')
Score += 3;
}
else if (Me == 'Z') // Win
{
Score+=6;
// O: Rock, Y: Paper
if (Opponent == 'A')
Score += 2;
// O: Paper, Y: Scissors
else if (Opponent == 'B')
Score += 3;
// O: Scissors, Y: Rock
else if (Opponent == 'C')
Score += 1;
}
TotalScore += Score;
}
printf("Total score was %d\n",TotalScore);
fclose(File);
return 0;
}
File diff suppressed because it is too large. Load diff
+83
View File
@@ -0,0 +1,83 @@
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
/*
A-Z : 65-90 ; - 38
a-z : 97-122 ; - 96
*/
void PrintLine(char Line[], int Start, int End)
{
for (int i = Start; i < End; i++) {
printf("%c", Line[i]);
}
printf("\n");
}
int main()
{
FILE *File;
char *Line = malloc(256);
int Total = 0;
int Priority = 0;
File = fopen("input.txt", "r");
while (fgets(Line, 256, File) != NULL)
{
int Size = strlen(Line);
int Compartment1End = Size/2; // compartment 1 end
char Shared = ' ';
PrintLine(Line, 0, Compartment1End);
PrintLine(Line, Compartment1End, Size);
for (int i = 0; i < Compartment1End; i++)
{
char Current = Line[i];
for (int y = Compartment1End; y < Size; y++)
{
if (Current == Line[y])
{
Shared = Line[y];
break;
}
}
if (Shared != ' ')
{
break;
}
}
printf("Shared Item: %c\n", Shared);
printf("\n");
int n = (int) Shared;
if (n >= 65 && n <= 90)
Priority = n-38;
else if (n >= 97 && n <= 122)
Priority = n-96;
Total += Priority;
}
printf("Total priority is %d\n", Total);
fclose(File);
return 0;
}
+300
View File
@@ -0,0 +1,300 @@
dWlhclDHdFvDCCDfFq
mGdZBZBwRGjZMFgvTvgtvv
jwwJrzdzGdSbGGnNlzWczHzPHPhn
cczcbMBszhzzDBTBPPPGjtvtlt
LqJLfpwdLnvQLRGQjGtj
gSgnSJJCGSGpGSrwgfhchmmmHzcrHDmbrmMm
bVjstCsSstCLCrbSLnMpdMndcLddcqcpHR
wPZJQJwtBfJZmgBwPTcpTdcnfHMppcGMdG
gmFJzwPJJtszvNhCNC
DmjZDMZWDqGRqqRpHmmRLTTNTPTfCQJQQLJHTClc
FtzfvrfFwVgtzztgBLJNcNlTcTVNNQLN
vgsdbzzrwtqWfWRpZDdZ
rJhqRhLHhdcQqdHqfQGfPGstgGPlWttM
DzCpDDmnNCmBZBZnVBmZzBGPfsbglfNPwgPGPMWsWWft
BZFnlmpBpBzDzVZmhFHFrrrchhRqTdrc
DWCCWFNqdGFdPVcb
HllttQsTRlJlsblrHlhdmPLVcVcTccndLvPLmL
HSlstHgJltghhRrzNBNDzSwMjNZwNb
dzGSHCWSsGVVSdHVHHWWVVDCgJDpQqLTTRJpgmTLRmJTTpTR
BvNjMPZMBtBBMvvNMNttlhLQqCJpLmhTRQqQJgRJLQQg
llNncBlMCwwMnwPZrGsVHzcfFGdHGFGs
JfZhphMMQmFzDTDjSdrQjQ
sqHCbCwBVtbqbCqtrWdjzlSJTlrTSWBn
bHcwbGCGRssNscwtHNbwvmRFvpFFJFvLZMmPLFfv
qBCrzznVmDCmMMDNgrgcrvHHcgbQcW
TTTsdJRTRhhlsgbvbdCFdbWvbQ
JhGGlfRlJsnCMDMqjmfV
rqLLvDLtStDLQhQDQrQhhNdsmWdmmjjnssPnTMnTzfTsWT
ZRFFpgCgppcBcnjTsjTMTfPFMP
GCZpGlwJwBgGHcJhSSHLDDrNqrMtNq
FsPFqsDNZFNnZrcBmWfWWQ
lSnRlRTvgrWtctTmft
SMbGbbvnGlnSDwGqLwNCqNVD
dPQDcBwJJDgDTPgGgQTBVjSsmLhLTrLmjSLpjSLh
MvvZRHtMtbCNvCNCNtNvbRfBSMSrjmLpjnjmVhrVSLsnnmSh
qHZtbBZfRztbHbCzNRHPQgJPJgGgglFPPFqdQD
MsBsVDspRPfPlhMl
zWnCFzHbSCwqNmPSjmGlsmfN
FnHnFbFzsHHCCgzCzbBptVppgvvVgVrpBrJt
pTLntptZjQLfVDjQTDlVJCSWNCPSCCsSNmFlNslm
BBHbqGHHqgwSWSCCWwZWWZ
qRzbhhbzzrHdRRHhRHvzZjfrVTrppVQttDfcQTfp
DHsdHPHHsHMsRmhMZZQBtljgZGtC
NFnCbFznLVJbVrjhQthjGBLZBjGL
wNrfFJJbCpNnfbdwDSDHsvsHmsmH
jLZRjnMMjJhJnvtQbdHfHZbvHQ
mBzwptCWlcFCwsHSTpQfQHQfrpTb
mNltzmsCNmFzGwCBllGRgRgqjgLMnGqjnPjV
ZqqcqmVVtbcBMFfFMcQfgphJ
HLWLDvWjjLwTWzzvGLThQQshQllgJDJgfbffJQ
vHzLvrwwzGzTRGzzLLRPRwRdSVdnBBdSbBSVStbNmnrmZS
TWVVvPSgwWSqcRgRwbRRcqshsfFzzzChTGNHzHhhhCsG
njZrjMLlpmDmGfSGtrNttzCF
ZQBmZdDBZRRPRSBgcb
TpntvdpnZDptnbnTDGtSFSlFmzCzzmSFRjqlZj
MWrNcWRMlgqzMjzq
NPwsPNrBNcVHNNcJHBNBcJwwttDvGVnDptVRtbnTtGvVGtGG
tsbbvvSfnqvzQLLBjfMLdd
gJRmRNmJNchgmmrFJhFgWJQMwBnjwrMBVQwQTBdLdVQj
GcGpGGRGJgqstvpbnCqb
rsHcrbZHBTTtLtNSwwHLLJ
mFqhWVsjsVCjQlNJGMwMlMMGMh
QggzffQRCfgVFWzzCQffqfZpZDcRvTTBTvvZnsdnddcn
bPFMFFBpMlFfMZMpHGNSrNctJcPSSchJchPt
zCgwnmgzQDnQgdWWQRgqSrqLSqSgssLNJhgJ
rQCQQTrRRmDBFfbHBFHZbT
fzfPQsGrrMMjtHtBHs
SwNNDqwhWpVTwbDGGDmwSVhZRZHdbCtgBjCRjMtbBHtRMd
vVTGvVGNvPPvQvfncJ
cwzMJbclHDPqfJQPfq
rrqjjTBrqqBjRCgTjrRjNrsGPDhDFGCfWGfPFfFPGWfD
BZTTSTZgjbSwVptvpq
PPPPJpvpJsJwPHHPsJdTNZRZZZjTFFmRRRNjZd
qbWVfChDCDnVVDGfnSFNNjRLmNfBNLQjLjmBRm
DhFDhbnWCDhGcbJPPwrsrMwrvlvc
lFSDTwHTSwlTNwFFlwNcFFpjLZvZqvnqLPnnWbgngbbncqbZ
rzQfMzRGrRGJCffBMGdGsJZWWnqWVqdPPgNvvVZWPWWn
RJrttBtNQCsNzTpShhHFDwFlth
QNzQFjNFrQPNbmPpqTTDGswWmB
ggHRcSlcCVCSzMVqDGwgqTWpsmqwqG
cltzCZtLClHRRtMZZLQjfNvtrJfhvrddvNNd
mcfWHffBFnQRQlTFdv
wssSLVbbzDVbzbggzSzNshNMnvnljRdvQRlMBjvQdnCj
bhDzVSSJDDJhDLBwtbDzzbbWppfpcmWGmprqqGtqprcHPp
rpVFrZpgHWSZrFPqhzwcqPwmcVBD
vMTnQJjQLCbljvvQzTMbTjPNdBLwwDhmhNNqPwmmhhBh
jvGjjQJnrspGHgFz
sjssjtZlcphZHwWvcrHTwWJH
qDdzzrFNNNDGdFDzzVBVVvfWJPfgPmgWPgvwVH
nqMQGDrnLGnqqLNqjtCZZjsMhZhCMbtl
JJJsLFmzsrFlSpzPscjgHhnRnmvcjqRvvj
fCMQbCbTjjqTGhjc
bfdbWdCddfBbtCfbfbqVWQQpPlBrJLJJSSLwppFssFzLzp
pdbbzlffWtJbgQwhcphQcCCg
vHvLFvVLvSfFRLnRFRNHjPjggcssQcjjsnwhsPCC
vGVGGFFVHLTvDRHDmBbTzfZWMdJZlfMm
wjCbjQgjTQhNNzgWQCWrDFMZmZDZDCrrMDpLpL
czGSPznnRGGJGGlVVRVBGGlBmDDcMDFDDZLqfffZFrrZqFpZ
JPGlvBSJHVGnVsjvQjjzwdwjzd
MFlWQHDTpnpsFNNQllWFWlhzjGgrgDzGGhGGjvmZDZrh
PtTPcTLbBCVPTRVcvhjmmhVhSZGGgvZg
JLPfCwPbTbBPJCfblplMpqWsMpMwWHQn
QbHVBBzWtzHBNtBwQSgqhqSbFgRLjhmqqj
ZnCnMcdsDnJTncggFJwRmSwgRFmL
sTMZpGDvsZcMpcvTCPHwzrfzrpzHpWBrWz
PMdJWwJWHFWJnNzbDlfbCfMvbl
rZgttrFptFFcBtccbbCDvgfbGCGGgGDz
QsZBmsrFscrVrjQJjJQRJWWLwq
GwNNJwwRThwrWfhh
SmQqmzsjHssQzCbvsmSSzsQTjWpFTTfFfThchhFTBBfppB
mmbHbmtmCzzQZzQRdZJhNMdMlRMglh
rrsPbncQvvgnnrTdGDVcCdpZHHZp
RwwwhjLLqtJFwjzwtwmwwGpDZVdGDVdZBZDFHdHZCp
zhzwLhhfffLtjNChgWbbrbnMvPrMrrfv
tQMtQtTSBFtSmQSttMggMtbtnTnPrZvrnzNNTGZvrZZdLdnL
HqhwDpDcwlHqpVrrFzvFGpZrrzrP
RwlhhjwRCjVfjDbMtFWBWJMgWjWm
WpWVlWzsGlBJpspNclNlhhhmgzrdtzQMQttzMmtt
RfnPRLTPDHRdPbwvvntnSrFgmvnmtm
CwqRDCCwqCwbCTqJcJBNcZqdVcBlpJ
tpfnNBsGGNRppRCgfgRRCRQJGMPPWdwMJdWFFwjVzGPJ
chLSchLTbLqvqcZLlvvLqbmldMzFFWdzVSFWFMzQVJwjQjdM
rLqqcjDrcvhRsDfHDtNNnN
DjZjvTTDqrtTZZSMcdRdmRJrcJNc
HWgPGVhFPgnSVtnJcdMs
FPLfBwCWGPfCwfLHCCDBZlbDpBjvqTtDzzDj
FJNqNFgNFssqGGqBsTlMVcgVrCwLwlhcrw
fRZzDmDZvvDdZbtdpDZmbrThrLMCvcChwwlSTrvMSr
zmfZmtZmpDmbfWRDDZdqFljqnNQjGWnsjFqGsG
rMdMWddmJmvdSdmWfWMddpVRqRFVHRRqMRRPQMRqRq
tDGtGGhLjLLZNLjjNgNthGtqHTVqRVVpPDRpHHVRQVRPPR
ZlLtzNjgsZZlssLgtjNpfWfJvlJrrvCJfBmBfn
hqpWvFJsJFNHhqMWNhWvWRmmDcDMLcwZnjcwnjRnjn
LdrlgCCrSSTrTnwRjmwRQZwdwG
PVlfClrLlLlfggtBPzHHhHFbWzJNbvqJFNqF
TbbQtnDtbGGjGlGsGHpJJmFWFJJrBWWFlWrS
CZzzNzzhddNchhMhhRVjpCBwBrCvJvpmSCvrwJ
fhZZhddRjRgZzMZRzPjPTsLGQtHLTHTbDPQTtqPT
nHnWsQNQQWTWQshwjBJJJmHwFBwm
VZZpfbffZVvbSbGfBhSwmtmmJlmjJFJJ
bpphpMfMvMzDbMGZgQNrrngzdTsNqWdd
VPNddVTPPmdnVcPVZcdTmcDbQTFjMpjtFzbMtFjzsFTssT
lJCllWCrgvRlgwlJfRRvSzjSjQpbzMHpbwMQpszM
fRhGBBJJCgrNLsNPNVVhNq
pLrVDgbNbjVplpsltHBqWSqhSQcHDttH
MCdCwCGTmnTmmmvTTCwCqNhHQhRWcwHWBRHSqSQH
TNTFFPfffTvFTJvTPCPTFfGdzVjspVLZglJbsbZpVblrzjlb
cdPzFrldgcdCrnlznPzrBNRssLLBbVNVZsLHRHdm
wTQQwvvtqwqcGvTZmVHBbVLLBbRV
GWJSGfJWcjQwhQQWjqJhhGfgpMnMzDnpMlPpMnDlMrzl
pMhqTTsSpdBPpNBshsdMMTQFvFlQtQWCRQlCllVFqVqG
dfcbnmrnjzRFvGQQGvfv
mDrjLLLcJjLhpZSSJMdpph
NGZNwqFqZhhcFSCfRzwdzRfCzVRw
QTTmBTsWQWJPPCvzvpHPzdvVFR
bsmWTBbQDbmbLQQMsWWQchgqLqhGGGGZLhSFjhqS
HgmGlgsvBBDgBGCdHHvHwCGwhZJWhTjSdhTSFFFhJtSJTJhT
RQfVrfQNszMQfpMzpNnfLbtjhtSbWJWFWtFFtFJtFSZq
PNzLfnLnBCPHgsgC
mTZGgCdNSNmCQLLpPnDhRlGhpV
vWJHWFsfHMWBBFbBsjfjHrFfLRRLPPnpLthttRVPLSnhSPbS
fzMrBjWfBrzsZCZmSTgQzcNN
mgmCZCMgmnZmZgBZpgpJfbQfwSQPDTdfdwSDfwhn
sHhcrWLcFlzHcHRNNFvNFcFPwDDTWdddDdqWbSTWDPTTQS
RNsslsRrNcRNvNRFFNvVsghZBJtVCCtCtGghjhGBGG
gchrcRRdnRwPPnvQ
CVCCSrDjFHjVDbBLFGGBSvwnwNMnMsPPNsNPvwPQVM
lHLCTHGDCbbjFTTzdWlpcqfgcrdzZg
fRDPsDsqqJttttJSzPDgJWQCbQQbGMWCCnGGPVGVQQ
rTTBvZhrvBnWWDWCbZWW
cwLlTLpjTwBFLLhgfRRfmRqRDmRdjq
sprGGPTrJTsGPzszqGzNtTtpfbQddQSQSDFDFvvbZvwFbbfN
LWWCMVmwMmgWFQfFDDvZDgdF
mlMmRVCWVMmmHRjVCmjHWRhMzpTtlrlPzrtzwlsGPrpwtrJp
tsfwwfjfdfrtrClfvwvvLnTHNmvLHcNccRNcvNWH
qQSqZqFQRBzghDFncHgmccHNmWcNmM
SQJphFJzRDSsdpVlllrCrw
vGQqLQFvBvLvdNnvjnvNDc
TRJwmWmZWlCCmzznbNhhbDhRgj
CCTtDTlmDTWTmDmZZlVLLsFfstfFFLsBLQfF
cfWflMmWWlWfPWBhBlQtLmmvrrrvCLjvRTjLLwwr
gSgbsbgHdsjzHbqbdVDLZLvTZwLTvSrZrFvZLw
sdbJqDNdjJNdsJBpBWpJlMcfcB
FHlMHPqDLlPctgHSnttCSC
zhrmBrTwJTjBmQcSQvQqbtwGvg
jBjmBmJjjjRZTBzhhrBJLDdZqfpDMdfWWlDDLMlV
zPVdbsBzZdwqJGhrLTvNNJqH
tmmCgCPCDDnptHDjNvGvhrDvLv
pRWRlpSpPllClnpbQVQwFFVSQFVBZz
nDrCvmvMnMSmsCvblBzzCZplbJlTbZ
FNRtFWRfcGqFGQbzlZTQqQTBbd
GRwFfNtwFRNFGMvBsnnwMMMBjn
LVTBjjlJCDrnJzJNQR
GsGGsggGpfhgpchgdqzbMzzhzQRnnMRrNzzR
PwWFqFGpwWpdWgfsGggdmjCVHPHlCCCVZNCjVmVj
qVTsCWwbCsPlCVfcbvfPDgLzbzDDhrzRrjgZghgr
ntmHmNpSQNGtntNttmSdSdBdjrrDLQZQLLhRrFFFRDTFZhDF
mtMtBNTSNBpNJStMGSdHppNcVWPsWvqVcsVJfwwqlqWqlc
vvWzLvvdpZDvhTpcrLcTTLpdwSPnCfJwCMnQSMwSnCGJrnwr
ttHVmVNNsHBBRsHbMMwwnjnjBfjJwCMP
tsVllgNVqbRlfplldDvDWT
mLjLsQqLQqsBRvvlRBLRlT
bhgtDDhCtmptmTTS
nfmdbggwGWrfsPzfWq
JpWDcSGJpGzsHPSSlbbd
wVRqVZwwRwPDwbDddH
VtVVVLthLVtVgfQLRTNtqDcCcJBmmWMWWprpFrcBJWNp
dhhhDtmLdttdPlslGlRFjfzBBpzzRpGJ
QMrVMwbVrrbvVVCrvcnqQQrrSMBJfpjFSzfjJFMFRWSpjjFG
cwvbHHbCqVchRDHgDsPTdt
CgVNCtDsDtJGZZGqMMGhDq
cLRnSHgWcRdLHWSSRLjQdlHBTTPcPwwhzqzTMBPTwhPPwP
HnnnglnWWgdRjlmQNsNFmJCFJFvsJsNN
hfccLbjhfSRbfDZjFRJzrlvlwwlnnFrWwzqr
TCsPLNtQdpdQQVtVNvJNJWlzJzwlrvJl
pHtPsPtPtCQfbRHHDHhMLh
nWRWgLtWnfTcZNNsscfd
JMGzMVJwMVTvzVQFGHMMmPdddsPsCjldlHPcScNPsP
vGrMQQmmvTQzMJpghWRWgpbbBqLbLR
WSbhFbPTpRfTfPdhpfbhSbfPQLzlQlzlHvtQsvlltlsgHdgQ
pZcGJDZNGcVrJwrDrrnvtNvlNzsgtgzvvsgt
qmJZZJcBqwrMJcVbWfSPPWpmpjmSCF
jHVjjCcpNrDgjsfB
ndqllRvJQtqlQQTRWllFNDrsMZBfDBLvNMNDfsbZ
qTFnWJqdWRdqWRlnTRnQGnTmwwSHCzpcGNmHNcPVcHGmCz
pZCpBhDfvgBVZQGMMVZVlq
sLsLTTSssjPnTNbFGRGFPVHqMMRF
TsNSccnjLdcsLjdmjWvWvBhfmvWpCGhGhD
VWFFFPMpPVSMbTppHTnHTbRH
DtvfNdBNddDNSLjsvDTTHnzzHwrTrwsrwqbT
dgBLNffdgjjtfBQSvgNjNDlvMcQJmJJmZCMmVVVZFPFcPMGG
VWsQLHMVVSNRShWLhNSNLjbbbddbpDZDddcbZdDRztpd
FPlhhgPvThGFJndnnCCnJzzdCp
qrTfmllGvfvGqwNMMMsffsQsNh
NsmFqNlmnQRbCFsmJgSffpPcbvSfrVvpgS
LhZGDZhhwtDHMwDdHGhDjDpTzzPdzgTvcPvpSSpPrdrv
jgHMjBLhwtZMHMHmJNNJNFlBqlBJNn
bznSQggscgMcSTTfJbSQzQFwClMhmCmthClvMwFLwhZL
BRWBPBVVPjPNVHpVqlqrvtwFqmmLqltZmL
WDVddNHNvRgccgsDsgbT
sNgnQLtLLLPPnsPpqdqjBclpGWjcWjBG
rVCChSZhVrrwqVDVHSHmMjldGfJGfHddJGJlfGjGJj
CVZmDvZCmmhFVVrCgTNbbnQFgbsqNqNQ
WmMmSSfJNRRPfJRMRMtllCgdStgbgttgCdDd
QGBrvzwBczlgqCtDbvDq
QQpBGFrLQjQzGVVRNjPmNNWMbW
gGljnJhnJtllpNVCHWcccdTdjdmB
bLfSQDSMSHmBnwCB
LFMDrbFfFQZQRzLZnbgtlsRGtltpgNhgPpPG
cRThZZchCThtgTRhZTRtjWFjWNwqCjGmwFjqqffC
DPDPGzPMHDbrpqjfwrjqmjmp
JVHHDdVdVbvGMdnVdQVdDbHcRZllhRtgStRLThRSTcBTvc
lQWPSBrrPZGgPglGssDfHnWsfDFHHvHh
TDCqpttptJNLtwNpbwTqzqHshsvsMMFnmHMNfssmvmvf
JCjqVpDtrBjQjrlj
wFGWGpFLvCczNSWWsz
tlfgtftjlbtHHlDBsBzmQQnsQDQsCn
gjfrsVqVgPlfqhvLdvdwZhGq
pHpZHBSvRvRCBBZCTMngRnWndnRmWcgg
jsfrfrjJFDwDDMMggMCGWGcfmG
qbCszCjtCjQsQrtZVBHBHvBvqLZvlp
scFzsPScNgNPNgQzpttlCBCwpLrMLCrDdljLwq
TjfGZZjVwMZwMLwr
vnGbWTvTmFRjQFQPsb
bVLrzqrzJVgJbbtVrWJVgppcBCzBvdzwBCCBHDcBvc
hflPQnMQmQSRlQMPNRTHwwHHHqpHpdfwdBCp
hFhZMhqSNMNbrZgWWGWJjZ
NJsgNjJlMHQrwnRgSRPwrP
tqpQtTFpFvbGpzTTWSrnSbrhwChCnRfrCf
GtcvGqQpttzcqdFzWppDsZMJjBBsBJcBNmBjMsLJ
lGfZGZhFfhdSWqmFFWSS
wDRDPLcDnjtWbSmqrSCSLC
MPwmtVnVMjztznHPgQhQfJfvvHHGggQZ
llTspLllCHmLHHndldqHdlLQQPSBQczZSFDDQZSNGcGG
jMhwvVrRjbRhFBZNGPcGNN
wVtrrtRwrfrwftjVjwWvMrRpsqsnsHsBglslCmTsdWdHTd
vPvmTGgDPRvGpDPGPqGHQnWJQJMBBzJBlBQWlHWl
bfbwNsmwFdLjbfrrLsSfLNQtMllznBzJQZMQtMlZZnnF
frssSscssNfScCjfSCwjsDmRDpGmDRDvvvVcvRDvRp
LtlPZPjBTbWsWJVJVzdT
nnprqhrqmzfrSrphqfCChVVGVDJWgSHHWgWsRDVHWd
nrmppNqhcCrfMchcMCncqbzPZvlvlwbBNjPjtNjZjL
FPWsFdSspVbbbtWVvl
CCHnnfHHvCwtVMhzlzDllC
LrGnjGfgfvcwfgrLrBjrBLgwdBTSRBFsRZdRsSqFFSFSSPPp
whGCLqsrjgGhhGFqrCCFGCGzTRTZJcNnzlLTnznNHcnzTH
ddvVmbfvdvVbDVQdvvdSzpNcnJzlzSRHNJpnJcSc
BPdvfQdWtPDDPfDvDQVVPmbhssCGGMqgFCFMqGMWgMjrRw
PSLbGmWPSPLQbMTPWGFWltthdDdrmBDHhdDdczzDRh
VfCngVfgsZwCftrZdhcZrdNDzz
CjVJJJqnJwQhWPPLQlGj
ntnnQmTQTQGVWGNGNNlClG
jDffjMSvqjHzHHzwNVwNVcCddPVNdD
ZszJsrrZMjsHqqvZJLRQCbTRQbJmThbt
BgLHgFDsJNWgQgflWd
mnVVcCHnCGRcVnZSjmlthftMQddlfhQctNfW
qbSGqmHSTFprvpvTTL
dvdTMvvpdLpTcSLvdLLMmhfFBftwCNhRwRNjtCTRCf
lshQWgsgrHHqlFfRqFjRFfFwCB
rsgHQbJbrsGHHlgQHgJrlHrPZdhdpMZGDSDpdPLcZhdvhZ
+6
View File
@@ -0,0 +1,6 @@
vJrwpWtwJgWrhcsFMMfFFhFp
jqHRNqRjqzjGDLGLrsFMfFZSrLrFZsSL
PmmdzqPrVvPwwTWBwg
wMqvLMZHhHMvwLHjbvcjnnSBnvTQFn
ttgJtRGJQctTZtZT
CrZsJsPPZsGzwwsLwLmpwMDw
+135
View File
@@ -0,0 +1,135 @@
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int CountLines(char *FileName)
{
char *Line = malloc(256);
int LineCount = 0;
FILE *File;
File = fopen(FileName, "r");
while (fgets(Line, 256, File) != NULL)
{
LineCount++;
}
fclose(File);
return LineCount;
}
void GetLine(char *FileName, int LineNumber, char* Line)
{
int CurrentLineNumber = 1;
FILE *File;
File = fopen(FileName, "r");
while (fgets(Line, 256, File) != NULL)
{
if (CurrentLineNumber == LineNumber)
break;
else
CurrentLineNumber++;
}
fclose(File);
}
int main()
{
char FileName[] = "input.txt";
int Total = 0;
int Priority = 0;
int CurrentLine = 1;
int CurrentGroup = 1;
int LineCount = CountLines(FileName);
while (CurrentLine <= LineCount)
{
char SharedItem = ' ';
char *Member1 = malloc(256);
char *Member2 = malloc(256);
char *Member3 = malloc(256);
GetLine(FileName, CurrentLine, Member1);
GetLine(FileName, CurrentLine + 1, Member2);
GetLine(FileName, CurrentLine + 2, Member3);
for (int a = 0; a < strlen(Member1); a++)
{
char Item1 = Member1[a];
// Loop through each member looking for a shared character
for (int b = 0; b < strlen(Member2); b++)
{
char Item2 = Member2[b];
if (Item1 == Item2)
{
for (int c = 0; c < strlen(Member3); c++)
{
char Item3 = Member3[c];
if ((Item1 == Item3) && (Item2 == Item3))
{
SharedItem = Item3;
}
}
}
// Don't bother searching through the rest if a shared character is found
if (SharedItem != ' ')
break;
}
}
printf("Shared Item of Group %d was %c\n", CurrentGroup, SharedItem);
// Convert character to integer value
int n = (int) SharedItem;
// A-Z ; - 38 to get values 27-52
if (n >= 65 && n <= 90)
Priority = n-38;
// a-z ; - 96 to get values 1-26
else if (n >= 97 && n <= 122)
Priority = n-96;
Total += Priority;
// Each group is three lines, so iterate by three.
CurrentLine += 3;
CurrentGroup++;
}
printf("Total Group Item Priority: %d\n", Total);
return 0;
}
+300
View File
@@ -0,0 +1,300 @@
dWlhclDHdFvDCCDfFq
mGdZBZBwRGjZMFgvTvgtvv
jwwJrzdzGdSbGGnNlzWczHzPHPhn
cczcbMBszhzzDBTBPPPGjtvtlt
LqJLfpwdLnvQLRGQjGtj
gSgnSJJCGSGpGSrwgfhchmmmHzcrHDmbrmMm
bVjstCsSstCLCrbSLnMpdMndcLddcqcpHR
wPZJQJwtBfJZmgBwPTcpTdcnfHMppcGMdG
gmFJzwPJJtszvNhCNC
DmjZDMZWDqGRqqRpHmmRLTTNTPTfCQJQQLJHTClc
FtzfvrfFwVgtzztgBLJNcNlTcTVNNQLN
vgsdbzzrwtqWfWRpZDdZ
rJhqRhLHhdcQqdHqfQGfPGstgGPlWttM
DzCpDDmnNCmBZBZnVBmZzBGPfsbglfNPwgPGPMWsWWft
BZFnlmpBpBzDzVZmhFHFrrrchhRqTdrc
DWCCWFNqdGFdPVcb
HllttQsTRlJlsblrHlhdmPLVcVcTccndLvPLmL
HSlstHgJltghhRrzNBNDzSwMjNZwNb
dzGSHCWSsGVVSdHVHHWWVVDCgJDpQqLTTRJpgmTLRmJTTpTR
BvNjMPZMBtBBMvvNMNttlhLQqCJpLmhTRQqQJgRJLQQg
llNncBlMCwwMnwPZrGsVHzcfFGdHGFGs
JfZhphMMQmFzDTDjSdrQjQ
sqHCbCwBVtbqbCqtrWdjzlSJTlrTSWBn
bHcwbGCGRssNscwtHNbwvmRFvpFFJFvLZMmPLFfv
qBCrzznVmDCmMMDNgrgcrvHHcgbQcW
TTTsdJRTRhhlsgbvbdCFdbWvbQ
JhGGlfRlJsnCMDMqjmfV
rqLLvDLtStDLQhQDQrQhhNdsmWdmmjjnssPnTMnTzfTsWT
ZRFFpgCgppcBcnjTsjTMTfPFMP
GCZpGlwJwBgGHcJhSSHLDDrNqrMtNq
FsPFqsDNZFNnZrcBmWfWWQ
lSnRlRTvgrWtctTmft
SMbGbbvnGlnSDwGqLwNCqNVD
dPQDcBwJJDgDTPgGgQTBVjSsmLhLTrLmjSLpjSLh
MvvZRHtMtbCNvCNCNtNvbRfBSMSrjmLpjnjmVhrVSLsnnmSh
qHZtbBZfRztbHbCzNRHPQgJPJgGgglFPPFqdQD
MsBsVDspRPfPlhMl
zWnCFzHbSCwqNmPSjmGlsmfN
FnHnFbFzsHHCCgzCzbBptVppgvvVgVrpBrJt
pTLntptZjQLfVDjQTDlVJCSWNCPSCCsSNmFlNslm
BBHbqGHHqgwSWSCCWwZWWZ
qRzbhhbzzrHdRRHhRHvzZjfrVTrppVQttDfcQTfp
DHsdHPHHsHMsRmhMZZQBtljgZGtC
NFnCbFznLVJbVrjhQthjGBLZBjGL
wNrfFJJbCpNnfbdwDSDHsvsHmsmH
jLZRjnMMjJhJnvtQbdHfHZbvHQ
mBzwptCWlcFCwsHSTpQfQHQfrpTb
mNltzmsCNmFzGwCBllGRgRgqjgLMnGqjnPjV
ZqqcqmVVtbcBMFfFMcQfgphJ
HLWLDvWjjLwTWzzvGLThQQshQllgJDJgfbffJQ
vHzLvrwwzGzTRGzzLLRPRwRdSVdnBBdSbBSVStbNmnrmZS
TWVVvPSgwWSqcRgRwbRRcqshsfFzzzChTGNHzHhhhCsG
njZrjMLlpmDmGfSGtrNttzCF
ZQBmZdDBZRRPRSBgcb
TpntvdpnZDptnbnTDGtSFSlFmzCzzmSFRjqlZj
MWrNcWRMlgqzMjzq
NPwsPNrBNcVHNNcJHBNBcJwwttDvGVnDptVRtbnTtGvVGtGG
tsbbvvSfnqvzQLLBjfMLdd
gJRmRNmJNchgmmrFJhFgWJQMwBnjwrMBVQwQTBdLdVQj
GcGpGGRGJgqstvpbnCqb
rsHcrbZHBTTtLtNSwwHLLJ
mFqhWVsjsVCjQlNJGMwMlMMGMh
QggzffQRCfgVFWzzCQffqfZpZDcRvTTBTvvZnsdnddcn
bPFMFFBpMlFfMZMpHGNSrNctJcPSSchJchPt
zCgwnmgzQDnQgdWWQRgqSrqLSqSgssLNJhgJ
rQCQQTrRRmDBFfbHBFHZbT
fzfPQsGrrMMjtHtBHs
SwNNDqwhWpVTwbDGGDmwSVhZRZHdbCtgBjCRjMtbBHtRMd
vVTGvVGNvPPvQvfncJ
cwzMJbclHDPqfJQPfq
rrqjjTBrqqBjRCgTjrRjNrsGPDhDFGCfWGfPFfFPGWfD
BZTTSTZgjbSwVptvpq
PPPPJpvpJsJwPHHPsJdTNZRZZZjTFFmRRRNjZd
qbWVfChDCDnVVDGfnSFNNjRLmNfBNLQjLjmBRm
DhFDhbnWCDhGcbJPPwrsrMwrvlvc
lFSDTwHTSwlTNwFFlwNcFFpjLZvZqvnqLPnnWbgngbbncqbZ
rzQfMzRGrRGJCffBMGdGsJZWWnqWVqdPPgNvvVZWPWWn
RJrttBtNQCsNzTpShhHFDwFlth
QNzQFjNFrQPNbmPpqTTDGswWmB
ggHRcSlcCVCSzMVqDGwgqTWpsmqwqG
cltzCZtLClHRRtMZZLQjfNvtrJfhvrddvNNd
mcfWHffBFnQRQlTFdv
wssSLVbbzDVbzbggzSzNshNMnvnljRdvQRlMBjvQdnCj
bhDzVSSJDDJhDLBwtbDzzbbWppfpcmWGmprqqGtqprcHPp
rpVFrZpgHWSZrFPqhzwcqPwmcVBD
vMTnQJjQLCbljvvQzTMbTjPNdBLwwDhmhNNqPwmmhhBh
jvGjjQJnrspGHgFz
sjssjtZlcphZHwWvcrHTwWJH
qDdzzrFNNNDGdFDzzVBVVvfWJPfgPmgWPgvwVH
nqMQGDrnLGnqqLNqjtCZZjsMhZhCMbtl
JJJsLFmzsrFlSpzPscjgHhnRnmvcjqRvvj
fCMQbCbTjjqTGhjc
bfdbWdCddfBbtCfbfbqVWQQpPlBrJLJJSSLwppFssFzLzp
pdbbzlffWtJbgQwhcphQcCCg
vHvLFvVLvSfFRLnRFRNHjPjggcssQcjjsnwhsPCC
vGVGGFFVHLTvDRHDmBbTzfZWMdJZlfMm
wjCbjQgjTQhNNzgWQCWrDFMZmZDZDCrrMDpLpL
czGSPznnRGGJGGlVVRVBGGlBmDDcMDFDDZLqfffZFrrZqFpZ
JPGlvBSJHVGnVsjvQjjzwdwjzd
MFlWQHDTpnpsFNNQllWFWlhzjGgrgDzGGhGGjvmZDZrh
PtTPcTLbBCVPTRVcvhjmmhVhSZGGgvZg
JLPfCwPbTbBPJCfblplMpqWsMpMwWHQn
QbHVBBzWtzHBNtBwQSgqhqSbFgRLjhmqqj
ZnCnMcdsDnJTncggFJwRmSwgRFmL
sTMZpGDvsZcMpcvTCPHwzrfzrpzHpWBrWz
PMdJWwJWHFWJnNzbDlfbCfMvbl
rZgttrFptFFcBtccbbCDvgfbGCGGgGDz
QsZBmsrFscrVrjQJjJQRJWWLwq
GwNNJwwRThwrWfhh
SmQqmzsjHssQzCbvsmSSzsQTjWpFTTfFfThchhFTBBfppB
mmbHbmtmCzzQZzQRdZJhNMdMlRMglh
rrsPbncQvvgnnrTdGDVcCdpZHHZp
RwwwhjLLqtJFwjzwtwmwwGpDZVdGDVdZBZDFHdHZCp
zhzwLhhfffLtjNChgWbbrbnMvPrMrrfv
tQMtQtTSBFtSmQSttMggMtbtnTnPrZvrnzNNTGZvrZZdLdnL
HqhwDpDcwlHqpVrrFzvFGpZrrzrP
RwlhhjwRCjVfjDbMtFWBWJMgWjWm
WpWVlWzsGlBJpspNclNlhhhmgzrdtzQMQttzMmtt
RfnPRLTPDHRdPbwvvntnSrFgmvnmtm
CwqRDCCwqCwbCTqJcJBNcZqdVcBlpJ
tpfnNBsGGNRppRCgfgRRCRQJGMPPWdwMJdWFFwjVzGPJ
chLSchLTbLqvqcZLlvvLqbmldMzFFWdzVSFWFMzQVJwjQjdM
rLqqcjDrcvhRsDfHDtNNnN
DjZjvTTDqrtTZZSMcdRdmRJrcJNc
HWgPGVhFPgnSVtnJcdMs
FPLfBwCWGPfCwfLHCCDBZlbDpBjvqTtDzzDj
FJNqNFgNFssqGGqBsTlMVcgVrCwLwlhcrw
fRZzDmDZvvDdZbtdpDZmbrThrLMCvcChwwlSTrvMSr
zmfZmtZmpDmbfWRDDZdqFljqnNQjGWnsjFqGsG
rMdMWddmJmvdSdmWfWMddpVRqRFVHRRqMRRPQMRqRq
tDGtGGhLjLLZNLjjNgNthGtqHTVqRVVpPDRpHHVRQVRPPR
ZlLtzNjgsZZlssLgtjNpfWfJvlJrrvCJfBmBfn
hqpWvFJsJFNHhqMWNhWvWRmmDcDMLcwZnjcwnjRnjn
LdrlgCCrSSTrTnwRjmwRQZwdwG
PVlfClrLlLlfggtBPzHHhHFbWzJNbvqJFNqF
TbbQtnDtbGGjGlGsGHpJJmFWFJJrBWWFlWrS
CZzzNzzhddNchhMhhRVjpCBwBrCvJvpmSCvrwJ
fhZZhddRjRgZzMZRzPjPTsLGQtHLTHTbDPQTtqPT
nHnWsQNQQWTWQshwjBJJJmHwFBwm
VZZpfbffZVvbSbGfBhSwmtmmJlmjJFJJ
bpphpMfMvMzDbMGZgQNrrngzdTsNqWdd
VPNddVTPPmdnVcPVZcdTmcDbQTFjMpjtFzbMtFjzsFTssT
lJCllWCrgvRlgwlJfRRvSzjSjQpbzMHpbwMQpszM
fRhGBBJJCgrNLsNPNVVhNq
pLrVDgbNbjVplpsltHBqWSqhSQcHDttH
MCdCwCGTmnTmmmvTTCwCqNhHQhRWcwHWBRHSqSQH
TNTFFPfffTvFTJvTPCPTFfGdzVjspVLZglJbsbZpVblrzjlb
cdPzFrldgcdCrnlznPzrBNRssLLBbVNVZsLHRHdm
wTQQwvvtqwqcGvTZmVHBbVLLBbRV
GWJSGfJWcjQwhQQWjqJhhGfgpMnMzDnpMlPpMnDlMrzl
pMhqTTsSpdBPpNBshsdMMTQFvFlQtQWCRQlCllVFqVqG
dfcbnmrnjzRFvGQQGvfv
mDrjLLLcJjLhpZSSJMdpph
NGZNwqFqZhhcFSCfRzwdzRfCzVRw
QTTmBTsWQWJPPCvzvpHPzdvVFR
bsmWTBbQDbmbLQQMsWWQchgqLqhGGGGZLhSFjhqS
HgmGlgsvBBDgBGCdHHvHwCGwhZJWhTjSdhTSFFFhJtSJTJhT
RQfVrfQNszMQfpMzpNnfLbtjhtSbWJWFWtFFtFJtFSZq
PNzLfnLnBCPHgsgC
mTZGgCdNSNmCQLLpPnDhRlGhpV
vWJHWFsfHMWBBFbBsjfjHrFfLRRLPPnpLthttRVPLSnhSPbS
fzMrBjWfBrzsZCZmSTgQzcNN
mgmCZCMgmnZmZgBZpgpJfbQfwSQPDTdfdwSDfwhn
sHhcrWLcFlzHcHRNNFvNFcFPwDDTWdddDdqWbSTWDPTTQS
RNsslsRrNcRNvNRFFNvVsghZBJtVCCtCtGghjhGBGG
gchrcRRdnRwPPnvQ
CVCCSrDjFHjVDbBLFGGBSvwnwNMnMsPPNsNPvwPQVM
lHLCTHGDCbbjFTTzdWlpcqfgcrdzZg
fRDPsDsqqJttttJSzPDgJWQCbQQbGMWCCnGGPVGVQQ
rTTBvZhrvBnWWDWCbZWW
cwLlTLpjTwBFLLhgfRRfmRqRDmRdjq
sprGGPTrJTsGPzszqGzNtTtpfbQddQSQSDFDFvvbZvwFbbfN
LWWCMVmwMmgWFQfFDDvZDgdF
mlMmRVCWVMmmHRjVCmjHWRhMzpTtlrlPzrtzwlsGPrpwtrJp
tsfwwfjfdfrtrClfvwvvLnTHNmvLHcNccRNcvNWH
qQSqZqFQRBzghDFncHgmccHNmWcNmM
SQJphFJzRDSsdpVlllrCrw
vGQqLQFvBvLvdNnvjnvNDc
TRJwmWmZWlCCmzznbNhhbDhRgj
CCTtDTlmDTWTmDmZZlVLLsFfstfFFLsBLQfF
cfWflMmWWlWfPWBhBlQtLmmvrrrvCLjvRTjLLwwr
gSgbsbgHdsjzHbqbdVDLZLvTZwLTvSrZrFvZLw
sdbJqDNdjJNdsJBpBWpJlMcfcB
FHlMHPqDLlPctgHSnttCSC
zhrmBrTwJTjBmQcSQvQqbtwGvg
jBjmBmJjjjRZTBzhhrBJLDdZqfpDMdfWWlDDLMlV
zPVdbsBzZdwqJGhrLTvNNJqH
tmmCgCPCDDnptHDjNvGvhrDvLv
pRWRlpSpPllClnpbQVQwFFVSQFVBZz
nDrCvmvMnMSmsCvblBzzCZplbJlTbZ
FNRtFWRfcGqFGQbzlZTQqQTBbd
GRwFfNtwFRNFGMvBsnnwMMMBjn
LVTBjjlJCDrnJzJNQR
GsGGsggGpfhgpchgdqzbMzzhzQRnnMRrNzzR
PwWFqFGpwWpdWgfsGggdmjCVHPHlCCCVZNCjVmVj
qVTsCWwbCsPlCVfcbvfPDgLzbzDDhrzRrjgZghgr
ntmHmNpSQNGtntNttmSdSdBdjrrDLQZQLLhRrFFFRDTFZhDF
mtMtBNTSNBpNJStMGSdHppNcVWPsWvqVcsVJfwwqlqWqlc
vvWzLvvdpZDvhTpcrLcTTLpdwSPnCfJwCMnQSMwSnCGJrnwr
ttHVmVNNsHBBRsHbMMwwnjnjBfjJwCMP
tsVllgNVqbRlfplldDvDWT
mLjLsQqLQqsBRvvlRBLRlT
bhgtDDhCtmptmTTS
nfmdbggwGWrfsPzfWq
JpWDcSGJpGzsHPSSlbbd
wVRqVZwwRwPDwbDddH
VtVVVLthLVtVgfQLRTNtqDcCcJBmmWMWWprpFrcBJWNp
dhhhDtmLdttdPlslGlRFjfzBBpzzRpGJ
QMrVMwbVrrbvVVCrvcnqQQrrSMBJfpjFSzfjJFMFRWSpjjFG
cwvbHHbCqVchRDHgDsPTdt
CgVNCtDsDtJGZZGqMMGhDq
cLRnSHgWcRdLHWSSRLjQdlHBTTPcPwwhzqzTMBPTwhPPwP
HnnnglnWWgdRjlmQNsNFmJCFJFvsJsNN
hfccLbjhfSRbfDZjFRJzrlvlwwlnnFrWwzqr
TCsPLNtQdpdQQVtVNvJNJWlzJzwlrvJl
pHtPsPtPtCQfbRHHDHhMLh
nWRWgLtWnfTcZNNsscfd
JMGzMVJwMVTvzVQFGHMMmPdddsPsCjldlHPcScNPsP
vGrMQQmmvTQzMJpghWRWgpbbBqLbLR
WSbhFbPTpRfTfPdhpfbhSbfPQLzlQlzlHvtQsvlltlsgHdgQ
pZcGJDZNGcVrJwrDrrnvtNvlNzsgtgzvvsgt
qmJZZJcBqwrMJcVbWfSPPWpmpjmSCF
jHVjjCcpNrDgjsfB
ndqllRvJQtqlQQTRWllFNDrsMZBfDBLvNMNDfsbZ
qTFnWJqdWRdqWRlnTRnQGnTmwwSHCzpcGNmHNcPVcHGmCz
pZCpBhDfvgBVZQGMMVZVlq
sLsLTTSssjPnTNbFGRGFPVHqMMRF
TsNSccnjLdcsLjdmjWvWvBhfmvWpCGhGhD
VWFFFPMpPVSMbTppHTnHTbRH
DtvfNdBNddDNSLjsvDTTHnzzHwrTrwsrwqbT
dgBLNffdgjjtfBQSvgNjNDlvMcQJmJJmZCMmVVVZFPFcPMGG
VWsQLHMVVSNRShWLhNSNLjbbbddbpDZDddcbZdDRztpd
FPlhhgPvThGFJndnnCCnJzzdCp
qrTfmllGvfvGqwNMMMsffsQsNh
NsmFqNlmnQRbCFsmJgSffpPcbvSfrVvpgS
LhZGDZhhwtDHMwDdHGhDjDpTzzPdzgTvcPvpSSpPrdrv
jgHMjBLhwtZMHMHmJNNJNFlBqlBJNn
bznSQggscgMcSTTfJbSQzQFwClMhmCmthClvMwFLwhZL
BRWBPBVVPjPNVHpVqlqrvtwFqmmLqltZmL
WDVddNHNvRgccgsDsgbT
sNgnQLtLLLPPnsPpqdqjBclpGWjcWjBG
rVCChSZhVrrwqVDVHSHmMjldGfJGfHddJGJlfGjGJj
CVZmDvZCmmhFVVrCgTNbbnQFgbsqNqNQ
WmMmSSfJNRRPfJRMRMtllCgdStgbgttgCdDd
QGBrvzwBczlgqCtDbvDq
QQpBGFrLQjQzGVVRNjPmNNWMbW
gGljnJhnJtllpNVCHWcccdTdjdmB
bLfSQDSMSHmBnwCB
LFMDrbFfFQZQRzLZnbgtlsRGtltpgNhgPpPG
cRThZZchCThtgTRhZTRtjWFjWNwqCjGmwFjqqffC
DPDPGzPMHDbrpqjfwrjqmjmp
JVHHDdVdVbvGMdnVdQVdDbHcRZllhRtgStRLThRSTcBTvc
lQWPSBrrPZGgPglGssDfHnWsfDFHHvHh
TDCqpttptJNLtwNpbwTqzqHshsvsMMFnmHMNfssmvmvf
JCjqVpDtrBjQjrlj
wFGWGpFLvCczNSWWsz
tlfgtftjlbtHHlDBsBzmQQnsQDQsCn
gjfrsVqVgPlfqhvLdvdwZhGq
pHpZHBSvRvRCBBZCTMngRnWndnRmWcgg
jsfrfrjJFDwDDMMggMCGWGcfmG
qbCszCjtCjQsQrtZVBHBHvBvqLZvlp
scFzsPScNgNPNgQzpttlCBCwpLrMLCrDdljLwq
TjfGZZjVwMZwMLwr
vnGbWTvTmFRjQFQPsb
bVLrzqrzJVgJbbtVrWJVgppcBCzBvdzwBCCBHDcBvc
hflPQnMQmQSRlQMPNRTHwwHHHqpHpdfwdBCp
hFhZMhqSNMNbrZgWWGWJjZ
NJsgNjJlMHQrwnRgSRPwrP
tqpQtTFpFvbGpzTTWSrnSbrhwChCnRfrCf
GtcvGqQpttzcqdFzWppDsZMJjBBsBJcBNmBjMsLJ
lGfZGZhFfhdSWqmFFWSS
wDRDPLcDnjtWbSmqrSCSLC
MPwmtVnVMjztznHPgQhQfJfvvHHGggQZ
llTspLllCHmLHHndldqHdlLQQPSBQczZSFDDQZSNGcGG
jMhwvVrRjbRhFBZNGPcGNN
wVtrrtRwrfrwftjVjwWvMrRpsqsnsHsBglslCmTsdWdHTd
vPvmTGgDPRvGpDPGPqGHQnWJQJMBBzJBlBQWlHWl
bfbwNsmwFdLjbfrrLsSfLNQtMllznBzJQZMQtMlZZnnF
frssSscssNfScCjfSCwjsDmRDpGmDRDvvvVcvRDvRp
LtlPZPjBTbWsWJVJVzdT
nnprqhrqmzfrSrphqfCChVVGVDJWgSHHWgWsRDVHWd
nrmppNqhcCrfMchcMCncqbzPZvlvlwbBNjPjtNjZjL
FPWsFdSspVbbbtWVvl
CCHnnfHHvCwtVMhzlzDllC
LrGnjGfgfvcwfgrLrBjrBLgwdBTSRBFsRZdRsSqFFSFSSPPp
whGCLqsrjgGhhGFqrCCFGCGzTRTZJcNnzlLTnznNHcnzTH
ddvVmbfvdvVbDVQdvvdSzpNcnJzlzSRHNJpnJcSc
BPdvfQdWtPDDPfDvDQVVPmbhssCGGMqgFCFMqGMWgMjrRw
PSLbGmWPSPLQbMTPWGFWltthdDdrmBDHhdDdczzDRh
VfCngVfgsZwCftrZdhcZrdNDzz
CjVJJJqnJwQhWPPLQlGj
ntnnQmTQTQGVWGNGNNlClG
jDffjMSvqjHzHHzwNVwNVcCddPVNdD
ZszJsrrZMjsHqqvZJLRQCbTRQbJmThbt
BgLHgFDsJNWgQgflWd
mnVVcCHnCGRcVnZSjmlthftMQddlfhQctNfW
qbSGqmHSTFprvpvTTL
dvdTMvvpdLpTcSLvdLLMmhfFBftwCNhRwRNjtCTRCf
lshQWgsgrHHqlFfRqFjRFfFwCB
rsgHQbJbrsGHHlgQHgJrlHrPZdhdpMZGDSDpdPLcZhdvhZ
+6
View File
@@ -0,0 +1,6 @@
vJrwpWtwJgWrhcsFMMfFFhFp
jqHRNqRjqzjGDLGLrsFMfFZSrLrFZsSL
PmmdzqPrVvPwwTWBwg
wMqvLMZHhHMvwLHjbvcjnnSBnvTQFn
ttgJtRGJQctTZtZT
CrZsJsPPZsGzwwsLwLmpwMDw
+95
View File
@@ -0,0 +1,95 @@
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <stdbool.h>
bool IntRangeInIntRange(int * a, int * b, int * c, int * d)
{
if (c <= a && d >= b)
return true;
else
return false;
}
int main()
{
FILE * File;
File = fopen("input.text", "r");
char * Line = malloc(256);
int Total = 0;
char ** Elves;
Elves = malloc(2);
int * ElfRanges[4];
while(fgets(Line, 256, File) != NULL)
{
for (int i = 0; i < 4; i++)
ElfRanges[i] = NULL;
// Splits the line by the comma in the middle of the line to get each elf's range
Elves[0] = strtok(Line, ",");
Elves[1] = strtok(NULL, ",");
// Loop through both elves
for (int a = 0; a < 2; a++)
{
printf(Elves[a]);
printf(" ");
char *Task = strtok(Elves[a], "-");
while (Task != NULL)
{
for (int i = 0; i < 4; i++)
{
if (ElfRanges[i] == NULL)
{
ElfRanges[i] = (int *) strtol(Task, NULL, 10);
break;
}
}
Task = strtok(NULL, "-");
}
}
printf("Elf Pair Ranges: ");
for (int i = 0; i < 4; i++)
printf("%d ", ElfRanges[i]);
printf("\n\n");
if (IntRangeInIntRange(ElfRanges[0], ElfRanges[1], ElfRanges[2], ElfRanges[3]) || IntRangeInIntRange(ElfRanges[2], ElfRanges[3], ElfRanges[0], ElfRanges[1]))
Total++;
}
printf("Total Pairs Fully Contained in Other: %d\n", Total);
fclose(File);
return 0;
}
+1000
View File
@@ -0,0 +1,1000 @@
7-50,8-33
76-83,77-87
68-73,55-68
13-37,12-25
7-7,12-96
9-22,10-12
52-77,12-52
43-83,44-60
33-90,78-89
10-10,9-50
6-89,7-98
10-11,11-60
8-75,7-94
23-23,23-23
65-78,23-64
5-97,96-96
93-96,76-80
15-47,14-16
16-17,17-43
28-39,8-41
40-70,40-41
32-89,57-88
39-76,40-64
13-96,55-69
56-80,57-81
57-82,58-82
57-57,44-58
33-54,33-53
9-91,91-96
58-68,33-57
6-65,4-5
2-88,3-88
23-69,23-98
1-99,2-60
15-70,15-71
45-67,2-68
37-64,5-59
3-79,2-79
38-83,38-83
4-4,5-98
43-74,43-75
4-99,2-5
31-42,42-42
24-28,27-30
2-80,2-81
33-66,30-62
80-93,80-80
30-81,81-93
17-96,16-84
48-86,47-62
62-74,61-74
8-37,37-67
22-98,21-98
29-29,29-58
27-85,5-85
95-98,1-96
99-99,24-97
19-22,21-83
34-82,82-83
13-76,31-92
44-86,77-85
15-47,15-47
25-54,26-55
20-38,3-37
3-15,4-74
78-78,19-78
15-25,18-24
71-87,86-86
9-99,99-99
25-68,24-24
42-89,31-42
47-67,48-74
34-61,20-34
2-80,1-3
5-6,5-74
4-67,5-53
20-20,21-88
7-48,5-8
14-62,14-14
49-79,42-78
23-28,22-22
21-87,21-86
57-95,57-95
36-53,12-77
12-46,13-57
52-84,85-88
41-73,73-73
84-94,64-95
93-94,12-94
1-99,1-99
6-6,6-70
3-99,7-98
96-99,3-97
18-84,17-85
56-99,8-57
7-83,8-84
51-82,50-83
7-77,7-8
58-76,59-77
13-79,14-79
7-7,8-85
15-17,16-28
17-79,16-79
74-74,1-73
28-28,28-65
59-62,59-66
48-69,46-47
14-23,3-24
35-83,83-98
55-84,55-83
10-20,7-19
13-88,21-88
62-62,62-85
32-32,33-33
49-86,15-90
2-3,2-38
1-1,2-93
40-52,22-41
41-82,82-92
42-79,41-59
53-99,52-99
52-68,6-55
30-65,31-65
56-90,8-91
83-93,17-82
5-84,4-70
56-56,56-97
5-44,4-81
85-91,90-90
23-51,22-22
12-15,14-68
28-28,28-84
1-6,10-32
5-86,50-88
8-20,19-19
62-80,62-81
50-77,76-97
3-97,3-96
14-77,37-39
82-84,29-82
6-31,1-24
62-71,46-61
13-13,11-15
3-9,4-17
32-97,11-98
89-90,23-89
51-59,48-60
53-74,53-74
30-30,29-71
8-70,8-9
65-65,65-66
34-85,96-99
36-40,36-36
42-42,42-72
2-43,33-69
4-31,30-77
69-84,70-92
26-95,27-98
3-3,6-89
34-88,51-79
63-63,3-63
8-8,8-61
30-87,13-84
38-38,37-50
24-87,10-93
6-88,3-4
19-70,19-69
36-92,31-37
17-94,14-18
56-61,49-74
30-62,29-62
20-25,21-87
12-76,12-12
94-96,54-95
1-99,4-77
40-40,16-41
72-90,14-73
8-93,7-92
10-95,41-98
29-36,19-51
79-93,70-94
11-18,17-95
3-97,2-98
52-67,53-53
13-46,12-45
5-68,4-94
16-73,15-15
11-40,33-33
76-83,82-85
28-35,40-92
53-93,12-83
2-61,58-60
4-51,4-4
18-43,17-56
93-93,14-93
95-98,16-96
32-39,36-41
9-73,6-9
55-55,36-56
20-98,20-99
2-58,18-99
5-6,9-75
21-90,77-82
88-99,7-89
21-44,14-38
82-97,69-82
12-12,13-87
46-81,98-99
15-82,14-83
12-51,11-12
3-94,4-94
9-33,10-86
20-93,19-50
27-84,53-83
79-80,3-79
73-90,78-89
96-96,93-98
93-98,54-93
33-82,6-33
1-9,9-27
14-14,15-63
4-94,5-95
16-90,15-90
47-78,47-79
4-75,3-75
3-96,96-99
38-66,19-92
16-56,12-14
37-47,46-47
4-70,1-70
26-58,48-72
38-97,43-93
76-84,76-78
13-55,5-14
66-78,62-92
42-87,41-86
3-21,4-62
10-63,9-63
9-67,8-67
10-92,92-92
96-98,79-95
19-53,99-99
4-64,4-63
46-60,14-59
2-90,1-89
16-25,9-11
8-98,8-97
3-92,3-91
65-87,64-88
4-67,3-4
66-88,78-87
14-82,76-81
12-85,11-84
30-53,12-52
53-60,7-61
73-73,5-73
55-55,55-57
14-16,10-15
23-29,22-22
64-82,38-63
38-68,69-69
9-79,10-56
43-87,42-88
30-63,31-62
25-25,24-83
31-31,31-75
2-96,17-99
31-37,35-36
3-42,2-43
82-97,19-82
38-94,95-97
1-87,88-99
47-87,46-84
4-54,53-55
80-96,3-81
5-5,4-98
35-50,24-36
7-78,12-94
45-70,69-73
32-32,32-63
61-71,39-72
35-35,34-35
80-81,22-82
34-62,5-34
19-21,18-19
24-87,25-87
34-97,34-98
5-91,64-92
19-49,19-98
27-50,49-51
10-70,69-71
10-66,66-66
66-99,65-66
3-33,32-53
23-32,8-34
90-91,37-90
41-77,53-76
57-57,30-57
35-37,36-48
46-86,46-67
60-83,60-61
15-21,35-56
60-91,60-91
12-30,3-29
89-90,82-92
24-53,25-53
13-60,14-61
44-45,41-48
24-94,93-94
28-59,60-85
94-98,66-93
11-94,46-93
89-93,44-89
72-93,30-72
22-40,23-35
14-94,15-97
51-86,48-76
90-90,66-91
58-74,10-71
27-34,36-42
1-96,96-97
25-94,24-24
9-28,1-10
14-15,15-92
5-26,25-25
98-99,32-98
12-71,11-11
77-81,80-96
30-66,40-65
26-54,33-53
17-78,18-18
9-94,9-10
87-95,37-88
15-93,86-92
30-82,29-82
58-93,57-71
20-75,60-67
1-89,88-88
19-95,19-94
13-95,12-14
34-67,33-67
35-97,31-35
54-99,54-98
6-92,18-36
31-59,30-30
1-75,74-81
44-47,45-45
26-75,3-26
35-36,36-71
7-7,8-29
32-88,33-74
11-66,47-65
29-93,28-94
79-85,20-78
8-60,52-60
39-41,40-80
4-90,6-90
49-86,87-87
8-8,9-99
7-59,10-92
30-93,11-30
16-31,30-30
33-62,33-33
10-25,10-24
15-59,40-85
16-94,94-95
1-2,1-99
77-91,54-78
10-76,34-72
2-90,2-89
26-54,23-58
3-82,2-99
20-65,21-21
42-67,31-43
18-51,3-19
9-73,52-72
19-40,18-41
53-66,65-72
3-99,76-97
73-73,15-73
11-15,11-11
20-71,20-72
60-74,54-75
6-91,8-90
35-52,35-53
17-94,96-96
8-84,30-65
21-82,16-22
84-89,43-90
41-81,41-80
39-48,38-94
13-59,13-60
39-40,40-86
11-11,10-90
76-76,68-76
26-93,25-27
78-94,68-77
88-95,7-88
3-20,19-74
88-93,25-65
6-6,6-51
12-15,22-97
18-22,18-19
65-84,65-84
37-94,34-35
8-28,7-36
53-83,53-55
3-99,4-79
2-43,31-43
52-68,52-84
12-53,11-11
69-74,64-75
4-5,5-98
11-47,12-21
61-87,88-89
3-3,4-98
24-80,83-86
2-55,1-54
92-92,46-92
14-26,14-27
3-57,1-4
57-64,56-92
78-78,11-78
48-48,49-90
79-80,53-80
7-53,8-47
48-81,47-75
28-88,27-87
12-66,12-66
29-92,37-92
10-99,98-99
58-72,57-73
24-78,77-83
1-24,23-83
30-57,57-82
39-72,40-46
8-85,7-86
24-43,24-40
1-98,1-99
35-79,35-80
54-68,67-76
6-89,4-90
99-99,13-69
5-5,6-42
3-88,27-89
91-91,2-92
32-69,34-68
53-79,53-85
21-22,22-88
10-69,7-11
3-81,9-68
7-42,3-86
52-58,57-69
44-74,42-74
3-22,4-18
20-62,62-92
84-87,20-85
3-69,3-3
40-48,47-67
9-9,8-99
3-92,2-10
20-20,18-20
5-93,7-93
52-76,15-77
14-87,14-88
43-46,44-49
2-3,6-92
28-66,24-82
2-88,3-87
43-87,42-92
2-3,3-95
45-49,44-50
30-83,29-82
24-81,25-57
76-77,77-77
18-85,4-90
57-57,19-57
9-99,3-10
45-50,44-50
3-99,2-79
38-61,41-62
63-87,64-87
1-86,98-98
51-58,50-54
31-41,31-31
20-85,10-19
8-97,8-8
16-64,64-89
1-4,3-92
12-68,13-69
45-46,46-90
84-98,53-84
32-49,46-48
55-93,55-92
3-4,6-21
6-99,3-7
52-90,19-88
7-7,8-85
53-95,53-53
69-87,68-88
33-34,15-34
22-38,4-39
67-83,68-68
52-89,53-68
30-85,53-84
26-94,26-95
11-37,11-96
86-92,17-93
33-78,33-78
9-81,80-80
46-53,53-53
44-63,62-98
1-78,1-78
31-61,16-29
16-88,16-96
9-51,9-50
34-53,35-54
18-98,18-18
31-66,6-16
28-35,36-52
98-99,60-97
25-35,25-25
60-90,84-89
13-15,1-21
2-23,2-24
2-91,90-93
25-32,31-80
55-62,56-63
24-43,42-91
63-82,62-84
5-9,31-87
47-63,48-76
62-88,62-87
26-73,26-72
25-41,26-42
10-77,76-76
82-87,2-83
1-96,1-97
9-56,18-55
2-93,3-92
58-94,62-97
71-97,12-69
15-91,90-90
49-60,50-60
73-84,83-83
57-91,10-58
12-70,11-69
3-53,52-67
13-94,94-96
90-92,2-68
4-74,74-82
16-95,20-97
17-30,17-31
41-50,5-28
18-34,17-98
37-66,15-99
2-43,1-1
1-58,38-70
5-7,6-24
38-54,54-63
6-20,5-7
72-93,83-90
89-90,34-89
8-18,7-14
1-54,2-53
45-87,45-46
6-24,5-5
5-81,1-3
4-5,4-97
38-38,38-70
4-91,5-98
52-69,51-53
18-45,18-44
99-99,4-99
32-93,35-93
25-95,15-30
35-38,34-75
25-29,26-64
30-51,30-52
36-37,37-40
14-81,13-15
19-85,18-85
15-88,16-16
21-96,22-95
29-31,30-68
22-85,22-48
19-84,18-79
63-63,24-64
51-79,51-80
21-38,37-44
19-72,4-18
30-95,30-94
1-88,89-98
4-5,4-83
95-97,74-95
2-83,83-83
89-94,93-98
27-93,19-28
43-43,44-88
86-89,87-87
1-3,5-66
98-99,59-97
4-80,5-21
5-5,4-85
15-82,16-97
49-50,48-49
8-89,89-90
14-15,15-25
42-48,47-49
9-48,8-10
21-84,21-83
97-99,1-97
22-90,90-95
18-73,72-76
87-91,68-80
21-22,22-44
5-91,90-97
25-97,96-98
8-22,1-7
4-77,4-30
43-43,44-64
43-43,43-88
39-56,40-57
15-90,16-71
25-78,85-97
27-78,26-79
61-70,66-67
8-94,96-98
11-16,30-89
9-55,9-54
53-92,53-54
1-98,1-99
29-30,31-76
81-83,27-80
75-85,75-85
18-94,11-12
2-11,11-93
1-4,3-84
2-62,1-61
2-96,2-95
1-87,86-88
71-78,75-75
96-96,6-97
6-8,8-44
64-86,85-99
3-11,9-11
31-92,14-92
8-96,14-97
6-94,5-93
5-67,5-66
10-14,13-92
14-74,13-73
21-96,96-97
56-66,62-65
7-77,7-77
88-92,18-73
9-63,19-93
1-84,18-84
12-85,9-12
28-28,29-94
18-37,17-36
20-93,93-94
33-52,4-60
35-93,65-82
27-27,27-67
22-92,22-77
45-50,45-64
8-99,8-98
1-1,2-90
4-62,5-63
22-44,4-45
92-94,14-95
3-95,39-94
29-96,95-95
21-96,21-95
65-71,66-91
88-94,58-89
13-84,1-83
13-87,12-86
29-48,28-36
6-90,6-89
37-70,36-38
20-79,21-80
32-89,30-89
8-76,8-8
52-74,51-75
6-89,5-89
59-77,60-76
35-83,35-35
52-78,49-98
39-88,22-35
27-32,27-27
13-50,12-13
61-61,61-61
13-85,12-14
17-25,26-95
57-71,41-73
50-76,49-49
87-87,18-88
95-95,41-96
53-54,52-53
6-44,5-98
1-88,88-93
13-29,29-81
9-70,3-6
92-97,41-92
14-48,3-5
2-5,3-20
39-83,55-83
83-83,8-83
14-52,2-15
7-64,8-63
50-76,50-77
1-78,1-77
3-80,2-2
96-96,47-96
99-99,65-99
52-74,9-53
25-53,25-54
18-18,18-73
47-52,16-48
83-88,83-88
3-7,6-75
8-93,9-76
57-57,30-59
61-61,62-96
73-88,73-88
17-41,11-40
49-49,48-69
1-62,1-54
15-26,15-45
6-56,5-5
4-99,2-3
15-89,88-93
22-22,17-22
12-85,12-12
89-99,62-90
53-95,53-95
4-64,10-74
6-42,4-6
11-41,20-22
49-50,48-49
11-85,12-84
32-32,26-31
40-67,8-39
17-17,16-93
12-54,13-55
43-44,43-43
33-35,34-93
2-8,7-64
30-91,31-91
70-70,15-74
36-36,36-80
23-23,3-24
18-40,25-40
36-99,35-45
45-83,83-84
90-90,9-91
24-25,23-23
12-91,11-90
30-37,30-38
24-94,25-98
30-67,29-29
4-50,8-51
63-95,14-85
14-14,15-32
2-3,2-86
27-41,26-42
6-86,86-86
34-70,34-69
89-97,2-90
59-75,59-74
58-94,58-93
6-75,2-75
44-73,43-45
50-61,50-70
6-92,7-7
34-88,35-92
2-96,97-99
10-91,10-91
1-94,2-23
21-40,21-39
19-87,87-95
6-75,2-18
22-72,15-73
9-96,42-96
16-16,16-87
27-84,26-83
94-97,2-94
45-58,56-56
10-16,22-71
34-55,43-78
94-98,9-99
1-90,89-95
1-84,29-85
13-70,70-71
58-86,4-87
1-41,41-55
36-71,37-72
65-68,45-69
30-30,31-31
35-69,35-68
58-94,58-95
10-94,93-98
53-94,23-54
47-51,48-48
7-86,7-7
28-44,23-29
7-73,6-7
5-88,5-88
10-92,9-9
18-71,17-72
7-16,15-78
41-42,42-78
9-32,8-96
51-52,32-52
24-76,23-87
2-99,2-2
95-95,1-95
42-92,92-92
21-85,88-93
75-75,1-75
70-71,3-72
39-87,32-42
1-1,3-85
55-57,56-70
16-39,15-16
25-26,26-87
14-79,33-73
53-64,14-53
96-99,2-97
32-91,33-95
85-92,25-86
4-96,1-3
69-98,51-69
24-76,75-75
60-93,68-85
51-51,52-90
25-30,30-34
10-90,11-89
1-96,1-97
42-61,42-62
30-71,29-31
26-35,17-36
7-84,7-83
18-25,18-24
9-86,21-87
3-27,26-51
56-97,55-56
47-74,48-96
5-35,6-92
35-70,27-37
2-2,2-90
18-64,18-63
1-3,3-78
14-36,13-42
12-53,19-58
55-91,56-62
14-24,23-64
9-32,33-86
40-64,40-63
25-92,25-92
49-51,55-69
13-46,13-45
46-75,45-76
2-77,2-76
21-88,3-96
7-12,12-92
46-91,45-92
7-78,57-79
2-2,1-97
78-87,8-79
28-75,27-74
5-81,80-83
30-63,29-64
69-80,32-70
2-78,1-79
13-15,14-74
79-84,83-84
68-69,11-69
9-43,9-44
92-99,92-92
90-97,35-90
13-68,13-13
3-87,1-3
47-52,48-53
27-94,8-28
46-93,44-52
8-56,8-95
50-57,44-58
4-18,2-2
3-77,76-76
17-17,18-83
2-93,20-23
94-94,5-95
73-82,3-74
31-49,48-81
40-43,9-41
74-74,74-85
10-95,3-95
14-22,21-78
2-96,1-4
26-66,11-66
48-48,6-49
12-86,85-94
81-83,80-83
3-29,30-77
55-90,47-91
5-83,1-6
7-19,6-6
36-39,37-43
11-60,17-45
8-83,3-21
11-11,11-79
25-31,35-97
30-46,46-47
24-24,25-78
6-96,5-7
73-83,13-84
15-99,14-82
84-98,84-99
7-61,42-61
2-37,37-37
9-9,9-34
40-42,41-85
11-33,10-32
2-9,8-64
92-92,86-93
7-38,7-37
16-92,2-17
2-3,3-50
1-95,2-96
38-87,67-87
5-21,21-22
38-47,24-70
4-44,3-81
84-85,1-84
22-99,21-96
70-72,59-72
15-96,16-96
6-76,6-6
83-83,78-83
26-37,25-25
9-43,3-43
81-81,80-80
47-51,49-53
97-97,29-98
23-47,46-46
28-84,29-85
1-94,1-95
14-72,13-15
61-95,4-78
9-89,9-9
10-12,11-90
50-54,19-50
97-98,9-98
15-94,16-28
77-77,25-76
20-74,19-28
1-99,2-41
29-79,79-79
30-88,30-87
24-98,75-91
15-65,14-65
67-77,67-78
5-86,2-4
3-81,4-82
40-90,39-91
19-51,19-19
48-67,42-67
17-60,24-47
27-81,18-82
48-87,66-87
35-96,34-89
16-23,22-50
7-85,85-85
7-43,6-42
26-75,27-27
6-10,9-64
18-38,14-39
45-85,84-89
30-98,98-98
84-93,14-85
8-57,8-56
24-91,23-92
79-93,79-94
37-60,16-37
2-81,5-80
80-92,81-99
5-40,5-40
10-44,44-48
5-15,14-42
8-68,2-6
30-78,53-77
81-88,29-80
98-99,6-98
42-99,98-98
63-63,17-63
41-98,41-97
1-99,2-98
+6
View File
@@ -0,0 +1,6 @@
2-4,6-8
2-3,4-5
5-7,7-9
2-8,3-7
6-6,4-6
2-6,4-8
+99
View File
@@ -0,0 +1,99 @@
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <stdbool.h>
bool Overlap(int * Ranges[4])
{
for (int * x = Ranges[0]; x <= Ranges[1]; x++)
{
for (int * y = Ranges[2]; y <= Ranges[3]; y++)
{
if (x == y)
{
return true;
}
}
}
return false;
}
int main()
{
FILE * File;
File = fopen("input.text", "r");
char * Line = malloc(256);
int Total = 0;
char ** Elves;
Elves = malloc(2);
int * ElfRanges[4];
//exit(1);
while(fgets(Line, 256, File) != NULL)
{
for (int i = 0; i < 4; i++)
ElfRanges[i] = NULL;
// Splits the line by the comma in the middle of the line to get each elf's range
Elves[0] = strtok(Line, ",");
Elves[1] = strtok(NULL, ",");
// Loop through both elves
for (int a = 0; a < 2; a++)
{
printf(Elves[a]);
printf(" ");
char *Task = strtok(Elves[a], "-");
while (Task != NULL)
{
for (int i = 0; i < 4; i++)
{
if (ElfRanges[i] == NULL)
{
ElfRanges[i] = (int *) strtol(Task, NULL, 10);
break;
}
}
Task = strtok(NULL, "-");
}
}
printf("Elf Pair Ranges: ");
for (int i = 0; i < 4; i++)
printf("%d ", ElfRanges[i]);
printf("\n\n");
if (Overlap(ElfRanges))
Total++;
}
printf("Total Overlaps: %d\n", Total);
fclose(File);
}
+1000
View File
@@ -0,0 +1,1000 @@
7-50,8-33
76-83,77-87
68-73,55-68
13-37,12-25
7-7,12-96
9-22,10-12
52-77,12-52
43-83,44-60
33-90,78-89
10-10,9-50
6-89,7-98
10-11,11-60
8-75,7-94
23-23,23-23
65-78,23-64
5-97,96-96
93-96,76-80
15-47,14-16
16-17,17-43
28-39,8-41
40-70,40-41
32-89,57-88
39-76,40-64
13-96,55-69
56-80,57-81
57-82,58-82
57-57,44-58
33-54,33-53
9-91,91-96
58-68,33-57
6-65,4-5
2-88,3-88
23-69,23-98
1-99,2-60
15-70,15-71
45-67,2-68
37-64,5-59
3-79,2-79
38-83,38-83
4-4,5-98
43-74,43-75
4-99,2-5
31-42,42-42
24-28,27-30
2-80,2-81
33-66,30-62
80-93,80-80
30-81,81-93
17-96,16-84
48-86,47-62
62-74,61-74
8-37,37-67
22-98,21-98
29-29,29-58
27-85,5-85
95-98,1-96
99-99,24-97
19-22,21-83
34-82,82-83
13-76,31-92
44-86,77-85
15-47,15-47
25-54,26-55
20-38,3-37
3-15,4-74
78-78,19-78
15-25,18-24
71-87,86-86
9-99,99-99
25-68,24-24
42-89,31-42
47-67,48-74
34-61,20-34
2-80,1-3
5-6,5-74
4-67,5-53
20-20,21-88
7-48,5-8
14-62,14-14
49-79,42-78
23-28,22-22
21-87,21-86
57-95,57-95
36-53,12-77
12-46,13-57
52-84,85-88
41-73,73-73
84-94,64-95
93-94,12-94
1-99,1-99
6-6,6-70
3-99,7-98
96-99,3-97
18-84,17-85
56-99,8-57
7-83,8-84
51-82,50-83
7-77,7-8
58-76,59-77
13-79,14-79
7-7,8-85
15-17,16-28
17-79,16-79
74-74,1-73
28-28,28-65
59-62,59-66
48-69,46-47
14-23,3-24
35-83,83-98
55-84,55-83
10-20,7-19
13-88,21-88
62-62,62-85
32-32,33-33
49-86,15-90
2-3,2-38
1-1,2-93
40-52,22-41
41-82,82-92
42-79,41-59
53-99,52-99
52-68,6-55
30-65,31-65
56-90,8-91
83-93,17-82
5-84,4-70
56-56,56-97
5-44,4-81
85-91,90-90
23-51,22-22
12-15,14-68
28-28,28-84
1-6,10-32
5-86,50-88
8-20,19-19
62-80,62-81
50-77,76-97
3-97,3-96
14-77,37-39
82-84,29-82
6-31,1-24
62-71,46-61
13-13,11-15
3-9,4-17
32-97,11-98
89-90,23-89
51-59,48-60
53-74,53-74
30-30,29-71
8-70,8-9
65-65,65-66
34-85,96-99
36-40,36-36
42-42,42-72
2-43,33-69
4-31,30-77
69-84,70-92
26-95,27-98
3-3,6-89
34-88,51-79
63-63,3-63
8-8,8-61
30-87,13-84
38-38,37-50
24-87,10-93
6-88,3-4
19-70,19-69
36-92,31-37
17-94,14-18
56-61,49-74
30-62,29-62
20-25,21-87
12-76,12-12
94-96,54-95
1-99,4-77
40-40,16-41
72-90,14-73
8-93,7-92
10-95,41-98
29-36,19-51
79-93,70-94
11-18,17-95
3-97,2-98
52-67,53-53
13-46,12-45
5-68,4-94
16-73,15-15
11-40,33-33
76-83,82-85
28-35,40-92
53-93,12-83
2-61,58-60
4-51,4-4
18-43,17-56
93-93,14-93
95-98,16-96
32-39,36-41
9-73,6-9
55-55,36-56
20-98,20-99
2-58,18-99
5-6,9-75
21-90,77-82
88-99,7-89
21-44,14-38
82-97,69-82
12-12,13-87
46-81,98-99
15-82,14-83
12-51,11-12
3-94,4-94
9-33,10-86
20-93,19-50
27-84,53-83
79-80,3-79
73-90,78-89
96-96,93-98
93-98,54-93
33-82,6-33
1-9,9-27
14-14,15-63
4-94,5-95
16-90,15-90
47-78,47-79
4-75,3-75
3-96,96-99
38-66,19-92
16-56,12-14
37-47,46-47
4-70,1-70
26-58,48-72
38-97,43-93
76-84,76-78
13-55,5-14
66-78,62-92
42-87,41-86
3-21,4-62
10-63,9-63
9-67,8-67
10-92,92-92
96-98,79-95
19-53,99-99
4-64,4-63
46-60,14-59
2-90,1-89
16-25,9-11
8-98,8-97
3-92,3-91
65-87,64-88
4-67,3-4
66-88,78-87
14-82,76-81
12-85,11-84
30-53,12-52
53-60,7-61
73-73,5-73
55-55,55-57
14-16,10-15
23-29,22-22
64-82,38-63
38-68,69-69
9-79,10-56
43-87,42-88
30-63,31-62
25-25,24-83
31-31,31-75
2-96,17-99
31-37,35-36
3-42,2-43
82-97,19-82
38-94,95-97
1-87,88-99
47-87,46-84
4-54,53-55
80-96,3-81
5-5,4-98
35-50,24-36
7-78,12-94
45-70,69-73
32-32,32-63
61-71,39-72
35-35,34-35
80-81,22-82
34-62,5-34
19-21,18-19
24-87,25-87
34-97,34-98
5-91,64-92
19-49,19-98
27-50,49-51
10-70,69-71
10-66,66-66
66-99,65-66
3-33,32-53
23-32,8-34
90-91,37-90
41-77,53-76
57-57,30-57
35-37,36-48
46-86,46-67
60-83,60-61
15-21,35-56
60-91,60-91
12-30,3-29
89-90,82-92
24-53,25-53
13-60,14-61
44-45,41-48
24-94,93-94
28-59,60-85
94-98,66-93
11-94,46-93
89-93,44-89
72-93,30-72
22-40,23-35
14-94,15-97
51-86,48-76
90-90,66-91
58-74,10-71
27-34,36-42
1-96,96-97
25-94,24-24
9-28,1-10
14-15,15-92
5-26,25-25
98-99,32-98
12-71,11-11
77-81,80-96
30-66,40-65
26-54,33-53
17-78,18-18
9-94,9-10
87-95,37-88
15-93,86-92
30-82,29-82
58-93,57-71
20-75,60-67
1-89,88-88
19-95,19-94
13-95,12-14
34-67,33-67
35-97,31-35
54-99,54-98
6-92,18-36
31-59,30-30
1-75,74-81
44-47,45-45
26-75,3-26
35-36,36-71
7-7,8-29
32-88,33-74
11-66,47-65
29-93,28-94
79-85,20-78
8-60,52-60
39-41,40-80
4-90,6-90
49-86,87-87
8-8,9-99
7-59,10-92
30-93,11-30
16-31,30-30
33-62,33-33
10-25,10-24
15-59,40-85
16-94,94-95
1-2,1-99
77-91,54-78
10-76,34-72
2-90,2-89
26-54,23-58
3-82,2-99
20-65,21-21
42-67,31-43
18-51,3-19
9-73,52-72
19-40,18-41
53-66,65-72
3-99,76-97
73-73,15-73
11-15,11-11
20-71,20-72
60-74,54-75
6-91,8-90
35-52,35-53
17-94,96-96
8-84,30-65
21-82,16-22
84-89,43-90
41-81,41-80
39-48,38-94
13-59,13-60
39-40,40-86
11-11,10-90
76-76,68-76
26-93,25-27
78-94,68-77
88-95,7-88
3-20,19-74
88-93,25-65
6-6,6-51
12-15,22-97
18-22,18-19
65-84,65-84
37-94,34-35
8-28,7-36
53-83,53-55
3-99,4-79
2-43,31-43
52-68,52-84
12-53,11-11
69-74,64-75
4-5,5-98
11-47,12-21
61-87,88-89
3-3,4-98
24-80,83-86
2-55,1-54
92-92,46-92
14-26,14-27
3-57,1-4
57-64,56-92
78-78,11-78
48-48,49-90
79-80,53-80
7-53,8-47
48-81,47-75
28-88,27-87
12-66,12-66
29-92,37-92
10-99,98-99
58-72,57-73
24-78,77-83
1-24,23-83
30-57,57-82
39-72,40-46
8-85,7-86
24-43,24-40
1-98,1-99
35-79,35-80
54-68,67-76
6-89,4-90
99-99,13-69
5-5,6-42
3-88,27-89
91-91,2-92
32-69,34-68
53-79,53-85
21-22,22-88
10-69,7-11
3-81,9-68
7-42,3-86
52-58,57-69
44-74,42-74
3-22,4-18
20-62,62-92
84-87,20-85
3-69,3-3
40-48,47-67
9-9,8-99
3-92,2-10
20-20,18-20
5-93,7-93
52-76,15-77
14-87,14-88
43-46,44-49
2-3,6-92
28-66,24-82
2-88,3-87
43-87,42-92
2-3,3-95
45-49,44-50
30-83,29-82
24-81,25-57
76-77,77-77
18-85,4-90
57-57,19-57
9-99,3-10
45-50,44-50
3-99,2-79
38-61,41-62
63-87,64-87
1-86,98-98
51-58,50-54
31-41,31-31
20-85,10-19
8-97,8-8
16-64,64-89
1-4,3-92
12-68,13-69
45-46,46-90
84-98,53-84
32-49,46-48
55-93,55-92
3-4,6-21
6-99,3-7
52-90,19-88
7-7,8-85
53-95,53-53
69-87,68-88
33-34,15-34
22-38,4-39
67-83,68-68
52-89,53-68
30-85,53-84
26-94,26-95
11-37,11-96
86-92,17-93
33-78,33-78
9-81,80-80
46-53,53-53
44-63,62-98
1-78,1-78
31-61,16-29
16-88,16-96
9-51,9-50
34-53,35-54
18-98,18-18
31-66,6-16
28-35,36-52
98-99,60-97
25-35,25-25
60-90,84-89
13-15,1-21
2-23,2-24
2-91,90-93
25-32,31-80
55-62,56-63
24-43,42-91
63-82,62-84
5-9,31-87
47-63,48-76
62-88,62-87
26-73,26-72
25-41,26-42
10-77,76-76
82-87,2-83
1-96,1-97
9-56,18-55
2-93,3-92
58-94,62-97
71-97,12-69
15-91,90-90
49-60,50-60
73-84,83-83
57-91,10-58
12-70,11-69
3-53,52-67
13-94,94-96
90-92,2-68
4-74,74-82
16-95,20-97
17-30,17-31
41-50,5-28
18-34,17-98
37-66,15-99
2-43,1-1
1-58,38-70
5-7,6-24
38-54,54-63
6-20,5-7
72-93,83-90
89-90,34-89
8-18,7-14
1-54,2-53
45-87,45-46
6-24,5-5
5-81,1-3
4-5,4-97
38-38,38-70
4-91,5-98
52-69,51-53
18-45,18-44
99-99,4-99
32-93,35-93
25-95,15-30
35-38,34-75
25-29,26-64
30-51,30-52
36-37,37-40
14-81,13-15
19-85,18-85
15-88,16-16
21-96,22-95
29-31,30-68
22-85,22-48
19-84,18-79
63-63,24-64
51-79,51-80
21-38,37-44
19-72,4-18
30-95,30-94
1-88,89-98
4-5,4-83
95-97,74-95
2-83,83-83
89-94,93-98
27-93,19-28
43-43,44-88
86-89,87-87
1-3,5-66
98-99,59-97
4-80,5-21
5-5,4-85
15-82,16-97
49-50,48-49
8-89,89-90
14-15,15-25
42-48,47-49
9-48,8-10
21-84,21-83
97-99,1-97
22-90,90-95
18-73,72-76
87-91,68-80
21-22,22-44
5-91,90-97
25-97,96-98
8-22,1-7
4-77,4-30
43-43,44-64
43-43,43-88
39-56,40-57
15-90,16-71
25-78,85-97
27-78,26-79
61-70,66-67
8-94,96-98
11-16,30-89
9-55,9-54
53-92,53-54
1-98,1-99
29-30,31-76
81-83,27-80
75-85,75-85
18-94,11-12
2-11,11-93
1-4,3-84
2-62,1-61
2-96,2-95
1-87,86-88
71-78,75-75
96-96,6-97
6-8,8-44
64-86,85-99
3-11,9-11
31-92,14-92
8-96,14-97
6-94,5-93
5-67,5-66
10-14,13-92
14-74,13-73
21-96,96-97
56-66,62-65
7-77,7-77
88-92,18-73
9-63,19-93
1-84,18-84
12-85,9-12
28-28,29-94
18-37,17-36
20-93,93-94
33-52,4-60
35-93,65-82
27-27,27-67
22-92,22-77
45-50,45-64
8-99,8-98
1-1,2-90
4-62,5-63
22-44,4-45
92-94,14-95
3-95,39-94
29-96,95-95
21-96,21-95
65-71,66-91
88-94,58-89
13-84,1-83
13-87,12-86
29-48,28-36
6-90,6-89
37-70,36-38
20-79,21-80
32-89,30-89
8-76,8-8
52-74,51-75
6-89,5-89
59-77,60-76
35-83,35-35
52-78,49-98
39-88,22-35
27-32,27-27
13-50,12-13
61-61,61-61
13-85,12-14
17-25,26-95
57-71,41-73
50-76,49-49
87-87,18-88
95-95,41-96
53-54,52-53
6-44,5-98
1-88,88-93
13-29,29-81
9-70,3-6
92-97,41-92
14-48,3-5
2-5,3-20
39-83,55-83
83-83,8-83
14-52,2-15
7-64,8-63
50-76,50-77
1-78,1-77
3-80,2-2
96-96,47-96
99-99,65-99
52-74,9-53
25-53,25-54
18-18,18-73
47-52,16-48
83-88,83-88
3-7,6-75
8-93,9-76
57-57,30-59
61-61,62-96
73-88,73-88
17-41,11-40
49-49,48-69
1-62,1-54
15-26,15-45
6-56,5-5
4-99,2-3
15-89,88-93
22-22,17-22
12-85,12-12
89-99,62-90
53-95,53-95
4-64,10-74
6-42,4-6
11-41,20-22
49-50,48-49
11-85,12-84
32-32,26-31
40-67,8-39
17-17,16-93
12-54,13-55
43-44,43-43
33-35,34-93
2-8,7-64
30-91,31-91
70-70,15-74
36-36,36-80
23-23,3-24
18-40,25-40
36-99,35-45
45-83,83-84
90-90,9-91
24-25,23-23
12-91,11-90
30-37,30-38
24-94,25-98
30-67,29-29
4-50,8-51
63-95,14-85
14-14,15-32
2-3,2-86
27-41,26-42
6-86,86-86
34-70,34-69
89-97,2-90
59-75,59-74
58-94,58-93
6-75,2-75
44-73,43-45
50-61,50-70
6-92,7-7
34-88,35-92
2-96,97-99
10-91,10-91
1-94,2-23
21-40,21-39
19-87,87-95
6-75,2-18
22-72,15-73
9-96,42-96
16-16,16-87
27-84,26-83
94-97,2-94
45-58,56-56
10-16,22-71
34-55,43-78
94-98,9-99
1-90,89-95
1-84,29-85
13-70,70-71
58-86,4-87
1-41,41-55
36-71,37-72
65-68,45-69
30-30,31-31
35-69,35-68
58-94,58-95
10-94,93-98
53-94,23-54
47-51,48-48
7-86,7-7
28-44,23-29
7-73,6-7
5-88,5-88
10-92,9-9
18-71,17-72
7-16,15-78
41-42,42-78
9-32,8-96
51-52,32-52
24-76,23-87
2-99,2-2
95-95,1-95
42-92,92-92
21-85,88-93
75-75,1-75
70-71,3-72
39-87,32-42
1-1,3-85
55-57,56-70
16-39,15-16
25-26,26-87
14-79,33-73
53-64,14-53
96-99,2-97
32-91,33-95
85-92,25-86
4-96,1-3
69-98,51-69
24-76,75-75
60-93,68-85
51-51,52-90
25-30,30-34
10-90,11-89
1-96,1-97
42-61,42-62
30-71,29-31
26-35,17-36
7-84,7-83
18-25,18-24
9-86,21-87
3-27,26-51
56-97,55-56
47-74,48-96
5-35,6-92
35-70,27-37
2-2,2-90
18-64,18-63
1-3,3-78
14-36,13-42
12-53,19-58
55-91,56-62
14-24,23-64
9-32,33-86
40-64,40-63
25-92,25-92
49-51,55-69
13-46,13-45
46-75,45-76
2-77,2-76
21-88,3-96
7-12,12-92
46-91,45-92
7-78,57-79
2-2,1-97
78-87,8-79
28-75,27-74
5-81,80-83
30-63,29-64
69-80,32-70
2-78,1-79
13-15,14-74
79-84,83-84
68-69,11-69
9-43,9-44
92-99,92-92
90-97,35-90
13-68,13-13
3-87,1-3
47-52,48-53
27-94,8-28
46-93,44-52
8-56,8-95
50-57,44-58
4-18,2-2
3-77,76-76
17-17,18-83
2-93,20-23
94-94,5-95
73-82,3-74
31-49,48-81
40-43,9-41
74-74,74-85
10-95,3-95
14-22,21-78
2-96,1-4
26-66,11-66
48-48,6-49
12-86,85-94
81-83,80-83
3-29,30-77
55-90,47-91
5-83,1-6
7-19,6-6
36-39,37-43
11-60,17-45
8-83,3-21
11-11,11-79
25-31,35-97
30-46,46-47
24-24,25-78
6-96,5-7
73-83,13-84
15-99,14-82
84-98,84-99
7-61,42-61
2-37,37-37
9-9,9-34
40-42,41-85
11-33,10-32
2-9,8-64
92-92,86-93
7-38,7-37
16-92,2-17
2-3,3-50
1-95,2-96
38-87,67-87
5-21,21-22
38-47,24-70
4-44,3-81
84-85,1-84
22-99,21-96
70-72,59-72
15-96,16-96
6-76,6-6
83-83,78-83
26-37,25-25
9-43,3-43
81-81,80-80
47-51,49-53
97-97,29-98
23-47,46-46
28-84,29-85
1-94,1-95
14-72,13-15
61-95,4-78
9-89,9-9
10-12,11-90
50-54,19-50
97-98,9-98
15-94,16-28
77-77,25-76
20-74,19-28
1-99,2-41
29-79,79-79
30-88,30-87
24-98,75-91
15-65,14-65
67-77,67-78
5-86,2-4
3-81,4-82
40-90,39-91
19-51,19-19
48-67,42-67
17-60,24-47
27-81,18-82
48-87,66-87
35-96,34-89
16-23,22-50
7-85,85-85
7-43,6-42
26-75,27-27
6-10,9-64
18-38,14-39
45-85,84-89
30-98,98-98
84-93,14-85
8-57,8-56
24-91,23-92
79-93,79-94
37-60,16-37
2-81,5-80
80-92,81-99
5-40,5-40
10-44,44-48
5-15,14-42
8-68,2-6
30-78,53-77
81-88,29-80
98-99,6-98
42-99,98-98
63-63,17-63
41-98,41-97
1-99,2-98
+6
View File
@@ -0,0 +1,6 @@
2-4,6-8
2-3,4-5
5-7,7-9
2-8,3-7
6-6,4-6
2-6,4-8
+272
View File
@@ -0,0 +1,272 @@
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <ctype.h>
struct Node {
char Letter;
struct Node * Next;
};
int CountLines(char *FileName)
{
char *Line = malloc(256);
int LineCount = 0;
FILE *File;
File = fopen(FileName, "r");
while (fgets(Line, 256, File) != NULL)
{
LineCount++;
}
fclose(File);
return LineCount;
}
void GetLine(char *FileName, int LineNumber, char* Line)
{
int CurrentLineNumber = 1;
FILE *File;
File = fopen(FileName, "r");
while (fgets(Line, 256, File) != NULL)
{
if (CurrentLineNumber == LineNumber)
break;
else
CurrentLineNumber++;
}
fclose(File);
}
int main()
{
char FileName[] = "input.text";
int CollumnNumberLine;
int Collumns;
int CurrentLine = 1;
char * Line = malloc(256);
do
{
GetLine(FileName, CurrentLine, Line);
if (isdigit(Line[1]))
{
CollumnNumberLine = CurrentLine;
break;
}
else
CurrentLine++;
}
while (Line != NULL);
Collumns = strlen(Line) / 4;
// Parsing the starting positions
struct Node * Stacks[Collumns];
for (int i = 0; i < Collumns; i++)
{
struct Node * TempNode = malloc(sizeof(char) + sizeof(void *));
TempNode->Letter = '0';
TempNode->Next = NULL;
Stacks[i] = TempNode;
}
int CurrentCollumn = 0; // Actual Collumn Number is this +1
int Place;
// char * CollumnContent;
char ContainerLetter;
while (CurrentCollumn < Collumns)
{
CurrentLine = CollumnNumberLine-1;
Place = (CurrentCollumn * 4) + 1;
while (CurrentLine > 0)
{
GetLine(FileName, CurrentLine, Line);
ContainerLetter = Line[Place];
if (ContainerLetter == ' ')
break;
struct Node * Current = Stacks[CurrentCollumn];
while (Current->Next != NULL)
Current = Current->Next;
if (Current->Letter == '0')
{
Current->Letter = ContainerLetter;
}
else if (Current->Letter != ContainerLetter)
{
struct Node * TempNode = malloc(sizeof(char) + sizeof(void *));
TempNode->Letter = ContainerLetter;
TempNode->Next = NULL;
Current->Next = TempNode;
}
CurrentLine--;
}
CurrentCollumn++;
}
// Parsing the movements
CurrentLine = CollumnNumberLine + 2; // Line where movements start
int Lines = CountLines(FileName);
// Move the crates
while (CurrentLine <= Lines)
{
GetLine(FileName, CurrentLine, Line);
int CurrentToken = 0; // Delimiter Token
// The numbers in the movement line, move x number of crates from a to b
int Number; // Number of containers to move
int Src; // Source
int Dest; // Destination
char * Token = strtok(Line, " ");
while (Token != NULL)
{
if (CurrentToken == 1)
Number = atoi(Token);
else if (CurrentToken == 3)
Src = atoi(Token) - 1;
else if (CurrentToken == 5)
Dest = atoi(Token) - 1;
Token = strtok(NULL, " ");
CurrentToken++;
}
// Containers that are being moved
char TempContainers[Number];
// Take x off of a and put into letters TempContainers
for (int i = 0; i < Number; i++)
{
struct Node * Current = Stacks[Src];
while (Current != NULL)
{
if (Current->Next == NULL)
{
TempContainers[i] = Current->Letter;
Stacks[Src] = NULL;
break;
}
else if (Current->Next->Next == NULL)
{
TempContainers[i] = Current->Next->Letter;
Current->Next = NULL;
break;
}
Current = Current->Next;
}
}
// Take the letters from TempContainers and put them in b
for (int i = 0; i < Number; i++)
{
struct Node * Current = Stacks[Dest];
while (1)
{
if (Current == NULL)
{
struct Node * TempNode = malloc(sizeof(char) + sizeof(void *));
TempNode->Letter = TempContainers[i];
TempNode->Next = NULL;
Stacks[Dest] = TempNode;
break;
}
else if (Current->Next == NULL)
{
struct Node * TempNode = malloc(sizeof(char) + sizeof(void *));
TempNode->Letter = TempContainers[i];
TempNode->Next = NULL;
Current->Next = TempNode;
break;
}
Current = Current->Next;
}
}
CurrentLine++;
}
printf("\nTop containers of each stack: ");
for (int i = 0; i < Collumns; i++)
{
struct Node * Current = Stacks[i];
while (Current->Next != NULL)
{
Current = Current->Next;
}
printf("%c", Current->Letter);
}
printf("\n");
// Should print out the stacks with the top character CMZ
return 0;
}
+512
View File
@@ -0,0 +1,512 @@
[H] [D] [P]
[W] [B] [C] [Z] [D]
[T] [J] [T] [J] [D] [J]
[H] [Z] [H] [H] [W] [S] [M]
[P] [F] [R] [P] [Z] [F] [W] [F]
[J] [V] [T] [N] [F] [G] [Z] [S] [S]
[C] [R] [P] [S] [V] [M] [V] [D] [Z]
[F] [G] [H] [Z] [N] [P] [M] [N] [D]
1 2 3 4 5 6 7 8 9
move 2 from 8 to 2
move 3 from 9 to 2
move 1 from 3 to 8
move 5 from 1 to 7
move 2 from 9 to 2
move 8 from 2 to 4
move 6 from 7 to 2
move 2 from 1 to 7
move 4 from 5 to 9
move 4 from 5 to 6
move 1 from 8 to 3
move 1 from 8 to 5
move 2 from 9 to 8
move 8 from 6 to 4
move 4 from 3 to 6
move 10 from 2 to 3
move 1 from 5 to 1
move 1 from 7 to 4
move 2 from 9 to 8
move 18 from 4 to 8
move 1 from 1 to 6
move 4 from 7 to 3
move 12 from 8 to 4
move 4 from 7 to 9
move 5 from 6 to 9
move 2 from 2 to 7
move 3 from 9 to 5
move 3 from 5 to 9
move 1 from 2 to 8
move 10 from 3 to 1
move 2 from 7 to 8
move 10 from 1 to 9
move 1 from 3 to 5
move 16 from 9 to 8
move 1 from 3 to 2
move 3 from 8 to 3
move 1 from 5 to 9
move 3 from 6 to 7
move 2 from 7 to 2
move 1 from 3 to 8
move 5 from 4 to 1
move 4 from 9 to 5
move 2 from 2 to 5
move 2 from 1 to 9
move 23 from 8 to 4
move 6 from 5 to 2
move 5 from 2 to 6
move 1 from 9 to 6
move 2 from 2 to 4
move 35 from 4 to 9
move 1 from 6 to 1
move 2 from 8 to 7
move 1 from 6 to 8
move 3 from 1 to 7
move 1 from 7 to 1
move 3 from 6 to 2
move 4 from 3 to 7
move 6 from 7 to 9
move 1 from 6 to 9
move 1 from 8 to 1
move 2 from 2 to 9
move 2 from 8 to 2
move 3 from 7 to 3
move 2 from 1 to 9
move 5 from 9 to 3
move 1 from 4 to 2
move 1 from 1 to 4
move 7 from 3 to 9
move 1 from 3 to 4
move 2 from 4 to 7
move 24 from 9 to 4
move 12 from 9 to 3
move 1 from 3 to 1
move 1 from 1 to 2
move 2 from 2 to 6
move 1 from 6 to 5
move 1 from 6 to 8
move 3 from 2 to 4
move 1 from 7 to 4
move 1 from 5 to 3
move 1 from 9 to 8
move 23 from 4 to 8
move 17 from 8 to 5
move 12 from 9 to 8
move 10 from 8 to 7
move 1 from 8 to 6
move 5 from 4 to 3
move 3 from 5 to 1
move 3 from 1 to 6
move 6 from 5 to 4
move 10 from 3 to 1
move 9 from 1 to 7
move 2 from 4 to 9
move 1 from 1 to 6
move 4 from 8 to 1
move 4 from 3 to 7
move 4 from 6 to 5
move 1 from 9 to 6
move 1 from 9 to 2
move 1 from 1 to 7
move 1 from 2 to 7
move 3 from 1 to 7
move 9 from 5 to 9
move 7 from 9 to 7
move 2 from 9 to 1
move 3 from 5 to 9
move 3 from 4 to 8
move 1 from 1 to 2
move 1 from 2 to 6
move 1 from 1 to 6
move 5 from 8 to 7
move 1 from 8 to 1
move 1 from 3 to 9
move 1 from 1 to 6
move 2 from 9 to 5
move 2 from 3 to 9
move 4 from 6 to 3
move 1 from 9 to 4
move 2 from 4 to 8
move 1 from 4 to 8
move 1 from 9 to 5
move 1 from 6 to 8
move 23 from 7 to 8
move 27 from 8 to 2
move 2 from 8 to 1
move 23 from 2 to 6
move 3 from 5 to 3
move 4 from 2 to 5
move 2 from 3 to 1
move 2 from 9 to 3
move 4 from 1 to 4
move 13 from 7 to 9
move 1 from 5 to 6
move 2 from 5 to 9
move 1 from 5 to 3
move 3 from 9 to 3
move 5 from 9 to 5
move 2 from 4 to 2
move 1 from 4 to 9
move 11 from 6 to 9
move 9 from 6 to 1
move 17 from 9 to 5
move 3 from 7 to 4
move 3 from 6 to 3
move 14 from 5 to 2
move 5 from 3 to 1
move 2 from 9 to 4
move 2 from 3 to 8
move 5 from 5 to 9
move 2 from 5 to 4
move 7 from 1 to 8
move 2 from 9 to 5
move 3 from 9 to 8
move 8 from 4 to 2
move 2 from 7 to 8
move 10 from 2 to 9
move 10 from 2 to 6
move 8 from 9 to 7
move 2 from 3 to 9
move 3 from 9 to 8
move 5 from 3 to 9
move 7 from 7 to 9
move 3 from 2 to 9
move 10 from 8 to 5
move 1 from 7 to 6
move 1 from 2 to 3
move 4 from 1 to 6
move 2 from 8 to 4
move 1 from 4 to 6
move 2 from 6 to 3
move 2 from 3 to 1
move 1 from 4 to 9
move 4 from 1 to 5
move 2 from 5 to 2
move 2 from 8 to 4
move 1 from 3 to 5
move 3 from 5 to 7
move 2 from 2 to 9
move 3 from 7 to 6
move 3 from 8 to 5
move 10 from 5 to 7
move 3 from 6 to 4
move 11 from 6 to 1
move 3 from 6 to 2
move 12 from 1 to 3
move 1 from 7 to 5
move 9 from 7 to 3
move 5 from 5 to 1
move 4 from 4 to 6
move 2 from 1 to 7
move 1 from 2 to 6
move 2 from 7 to 8
move 1 from 2 to 4
move 1 from 9 to 5
move 3 from 6 to 7
move 1 from 5 to 2
move 9 from 9 to 5
move 1 from 2 to 8
move 1 from 4 to 8
move 1 from 1 to 8
move 1 from 4 to 2
move 1 from 7 to 2
move 1 from 6 to 2
move 1 from 6 to 8
move 6 from 9 to 6
move 1 from 3 to 4
move 9 from 3 to 5
move 1 from 1 to 3
move 2 from 2 to 6
move 1 from 3 to 5
move 14 from 5 to 1
move 1 from 2 to 6
move 5 from 6 to 4
move 3 from 8 to 2
move 5 from 6 to 1
move 5 from 4 to 6
move 1 from 7 to 1
move 3 from 9 to 3
move 7 from 5 to 7
move 1 from 4 to 6
move 2 from 7 to 5
move 3 from 6 to 1
move 3 from 8 to 1
move 14 from 3 to 4
move 8 from 4 to 2
move 1 from 6 to 1
move 15 from 1 to 6
move 7 from 1 to 6
move 6 from 1 to 3
move 3 from 3 to 1
move 2 from 4 to 5
move 1 from 4 to 2
move 19 from 6 to 8
move 2 from 1 to 8
move 4 from 5 to 4
move 7 from 8 to 2
move 2 from 3 to 1
move 13 from 8 to 6
move 4 from 4 to 9
move 2 from 4 to 8
move 2 from 1 to 6
move 1 from 3 to 5
move 19 from 2 to 3
move 13 from 3 to 1
move 1 from 4 to 9
move 1 from 2 to 8
move 3 from 7 to 1
move 14 from 6 to 9
move 2 from 6 to 4
move 18 from 9 to 4
move 3 from 7 to 2
move 15 from 1 to 4
move 2 from 1 to 8
move 5 from 3 to 1
move 1 from 3 to 6
move 5 from 8 to 9
move 3 from 9 to 5
move 1 from 9 to 5
move 1 from 8 to 9
move 1 from 6 to 2
move 3 from 9 to 4
move 2 from 6 to 7
move 30 from 4 to 6
move 22 from 6 to 9
move 6 from 9 to 4
move 4 from 6 to 7
move 1 from 1 to 6
move 1 from 9 to 8
move 1 from 7 to 6
move 3 from 5 to 3
move 5 from 6 to 5
move 2 from 7 to 9
move 4 from 1 to 5
move 1 from 6 to 4
move 1 from 8 to 7
move 2 from 6 to 4
move 17 from 9 to 8
move 2 from 2 to 7
move 2 from 3 to 1
move 8 from 4 to 8
move 1 from 3 to 8
move 8 from 4 to 2
move 2 from 1 to 2
move 1 from 4 to 6
move 4 from 7 to 1
move 1 from 6 to 8
move 19 from 8 to 3
move 5 from 5 to 1
move 5 from 5 to 9
move 2 from 9 to 3
move 6 from 1 to 9
move 1 from 7 to 5
move 1 from 7 to 4
move 2 from 5 to 7
move 2 from 2 to 4
move 4 from 9 to 8
move 12 from 8 to 7
move 2 from 1 to 9
move 1 from 7 to 4
move 4 from 4 to 5
move 3 from 9 to 3
move 9 from 2 to 6
move 2 from 7 to 5
move 1 from 1 to 9
move 5 from 9 to 7
move 9 from 6 to 2
move 6 from 2 to 8
move 21 from 3 to 2
move 12 from 2 to 9
move 3 from 5 to 9
move 3 from 3 to 8
move 5 from 9 to 6
move 13 from 2 to 3
move 3 from 6 to 2
move 10 from 9 to 8
move 6 from 3 to 1
move 3 from 2 to 9
move 2 from 6 to 7
move 5 from 3 to 9
move 4 from 1 to 9
move 3 from 8 to 5
move 1 from 1 to 7
move 6 from 5 to 7
move 12 from 9 to 7
move 1 from 1 to 8
move 11 from 8 to 5
move 9 from 5 to 7
move 1 from 3 to 1
move 4 from 8 to 7
move 1 from 1 to 7
move 2 from 8 to 3
move 42 from 7 to 4
move 3 from 7 to 9
move 4 from 7 to 5
move 1 from 7 to 8
move 1 from 8 to 5
move 1 from 7 to 5
move 1 from 3 to 4
move 1 from 3 to 9
move 1 from 9 to 6
move 1 from 6 to 4
move 1 from 3 to 5
move 3 from 9 to 2
move 16 from 4 to 8
move 3 from 2 to 4
move 1 from 5 to 4
move 30 from 4 to 6
move 15 from 8 to 3
move 2 from 4 to 5
move 1 from 8 to 7
move 13 from 3 to 6
move 1 from 7 to 8
move 1 from 3 to 8
move 1 from 3 to 8
move 4 from 5 to 2
move 6 from 5 to 2
move 2 from 8 to 6
move 43 from 6 to 2
move 1 from 6 to 1
move 18 from 2 to 4
move 24 from 2 to 6
move 19 from 6 to 3
move 4 from 6 to 3
move 2 from 6 to 3
move 3 from 3 to 2
move 1 from 1 to 3
move 23 from 3 to 6
move 12 from 4 to 3
move 7 from 3 to 9
move 13 from 2 to 9
move 1 from 8 to 4
move 4 from 3 to 8
move 6 from 4 to 2
move 10 from 9 to 3
move 6 from 2 to 9
move 8 from 3 to 5
move 3 from 5 to 3
move 13 from 6 to 5
move 4 from 3 to 9
move 1 from 4 to 2
move 4 from 8 to 3
move 1 from 2 to 5
move 14 from 9 to 5
move 2 from 5 to 4
move 2 from 4 to 3
move 1 from 9 to 5
move 4 from 6 to 1
move 1 from 6 to 2
move 6 from 3 to 2
move 5 from 6 to 8
move 2 from 3 to 7
move 1 from 8 to 1
move 25 from 5 to 7
move 3 from 7 to 9
move 5 from 2 to 9
move 12 from 9 to 8
move 3 from 1 to 6
move 16 from 8 to 2
move 1 from 9 to 2
move 1 from 6 to 2
move 1 from 1 to 3
move 21 from 7 to 3
move 2 from 7 to 1
move 1 from 7 to 8
move 2 from 2 to 1
move 2 from 6 to 3
move 18 from 2 to 9
move 2 from 5 to 1
move 1 from 2 to 1
move 3 from 5 to 2
move 13 from 9 to 1
move 3 from 9 to 2
move 1 from 8 to 7
move 3 from 2 to 6
move 2 from 5 to 1
move 17 from 3 to 8
move 3 from 3 to 8
move 2 from 9 to 1
move 1 from 7 to 5
move 1 from 5 to 3
move 2 from 6 to 4
move 1 from 6 to 1
move 15 from 8 to 2
move 2 from 3 to 6
move 1 from 8 to 5
move 2 from 6 to 8
move 13 from 2 to 9
move 4 from 9 to 8
move 9 from 8 to 9
move 3 from 3 to 4
move 4 from 9 to 7
move 1 from 8 to 6
move 1 from 7 to 5
move 2 from 5 to 1
move 1 from 6 to 3
move 4 from 4 to 5
move 1 from 4 to 6
move 1 from 3 to 7
move 1 from 5 to 6
move 2 from 7 to 2
move 4 from 2 to 3
move 3 from 2 to 7
move 1 from 3 to 6
move 1 from 9 to 6
move 2 from 5 to 2
move 3 from 9 to 5
move 1 from 6 to 1
move 3 from 5 to 4
move 12 from 1 to 2
move 2 from 2 to 4
move 2 from 7 to 8
move 2 from 3 to 9
move 1 from 4 to 7
move 1 from 5 to 2
move 1 from 8 to 3
move 2 from 3 to 6
move 7 from 2 to 8
move 3 from 4 to 1
move 7 from 8 to 5
move 7 from 9 to 2
move 1 from 4 to 5
move 3 from 7 to 6
move 5 from 6 to 9
move 6 from 9 to 5
move 4 from 9 to 6
move 1 from 8 to 5
move 1 from 7 to 4
move 1 from 4 to 2
move 2 from 2 to 9
move 2 from 9 to 2
move 11 from 5 to 3
move 2 from 5 to 2
move 1 from 2 to 9
move 4 from 6 to 9
move 1 from 2 to 9
move 4 from 3 to 7
move 3 from 6 to 4
move 1 from 5 to 7
move 18 from 1 to 3
move 11 from 3 to 2
move 1 from 7 to 9
move 1 from 5 to 9
move 14 from 3 to 6
move 15 from 2 to 4
move 5 from 2 to 5
move 1 from 2 to 5
move 1 from 1 to 9
move 8 from 4 to 1
move 5 from 5 to 9
move 9 from 4 to 9
move 4 from 7 to 4
move 5 from 4 to 8
move 2 from 9 to 6
move 8 from 1 to 8
move 1 from 5 to 3
move 1 from 3 to 4
move 1 from 1 to 8
move 13 from 6 to 3
move 9 from 9 to 5
move 1 from 2 to 8
move 8 from 5 to 1
move 1 from 2 to 7
+9
View File
@@ -0,0 +1,9 @@
[D]
[N] [C]
[Z] [M] [P]
1 2 3
move 1 from 2 to 1
move 3 from 1 to 3
move 2 from 2 to 1
move 1 from 1 to 2
+281
View File
@@ -0,0 +1,281 @@
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <ctype.h>
/*
The second part of day 5's problem is that when moving them the order does not change.
My solution to this is to use the exact same code except I reverse the order of them as I put them into my TempContainers array,
so that they are put into each stack in the correct order.
*/
struct Node {
char Letter;
struct Node * Next;
};
int CountLines(char *FileName)
{
char *Line = malloc(256);
int LineCount = 0;
FILE *File;
File = fopen(FileName, "r");
while (fgets(Line, 256, File) != NULL)
{
LineCount++;
}
fclose(File);
return LineCount;
}
void GetLine(char *FileName, int LineNumber, char* Line)
{
int CurrentLineNumber = 1;
FILE *File;
File = fopen(FileName, "r");
while (fgets(Line, 256, File) != NULL)
{
if (CurrentLineNumber == LineNumber)
break;
else
CurrentLineNumber++;
}
fclose(File);
}
int main()
{
char FileName[] = "input.text";
int CollumnNumberLine;
int Collumns;
int CurrentLine = 1;
char * Line = malloc(256);
do
{
GetLine(FileName, CurrentLine, Line);
printf("%s", Line);
if (isdigit(Line[1]))
{
CollumnNumberLine = CurrentLine;
break;
}
else
CurrentLine++;
}
while (Line != NULL);
printf("Collumn Number Line : %d\n", CollumnNumberLine);
Collumns = strlen(Line) / 4;
printf("Collumns : %d\n\n", Collumns);
// Parsing the starting positions
struct Node * Stacks[Collumns];
for (int i = 0; i < Collumns; i++)
{
struct Node * TempNode = malloc(sizeof(char) + sizeof(void *));
TempNode->Letter = '0';
TempNode->Next = NULL;
Stacks[i] = TempNode;
}
int CurrentCollumn = 0; // Actual Collumn Number is this +1
int Place;
// char * CollumnContent;
char ContainerLetter;
while (CurrentCollumn < Collumns)
{
CurrentLine = CollumnNumberLine-1;
Place = (CurrentCollumn * 4) + 1;
while (CurrentLine > 0)
{
GetLine(FileName, CurrentLine, Line);
ContainerLetter = Line[Place];
if (ContainerLetter == ' ')
break;
struct Node * Current = Stacks[CurrentCollumn];
while (Current->Next != NULL)
Current = Current->Next;
if (Current->Letter == '0')
{
Current->Letter = ContainerLetter;
}
else if (Current->Letter != ContainerLetter)
{
struct Node * TempNode = malloc(sizeof(char) + sizeof(void *));
TempNode->Letter = ContainerLetter;
TempNode->Next = NULL;
Current->Next = TempNode;
}
CurrentLine--;
}
CurrentCollumn++;
}
// Parsing the movements
CurrentLine = CollumnNumberLine + 2; // Line where movements start
int Lines = CountLines(FileName);
// Move the crates
while (CurrentLine <= Lines)
{
GetLine(FileName, CurrentLine, Line);
int CurrentToken = 0; // Delimiter Token
// The numbers in the movement line, move x number of crates from a to b
int Number; // Number of containers to move
int Src; // Source
int Dest; // Destination
char * Token = strtok(Line, " ");
while (Token != NULL)
{
if (CurrentToken == 1)
Number = atoi(Token);
else if (CurrentToken == 3)
Src = atoi(Token) - 1;
else if (CurrentToken == 5)
Dest = atoi(Token) - 1;
Token = strtok(NULL, " ");
CurrentToken++;
}
// Containers that are being moved
char TempContainers[Number];
// Take x off of a and put into letters TempContainers
for (int i = 0; i < Number; i++)
{
struct Node * Current = Stacks[Src];
while (Current != NULL)
{
if (Current->Next == NULL)
{
TempContainers[i] = Current->Letter;
Stacks[Src] = NULL;
break;
}
else if (Current->Next->Next == NULL)
{
TempContainers[i] = Current->Next->Letter;
Current->Next = NULL;
break;
}
Current = Current->Next;
}
}
// Take the letters from TempContainers and put them in b
for (int i = Number-1; i >= 0; i--)
{
struct Node * Current = Stacks[Dest];
while (1)
{
if (Current == NULL)
{
struct Node * TempNode = malloc(sizeof(char) + sizeof(void *));
TempNode->Letter = TempContainers[i];
TempNode->Next = NULL;
Stacks[Dest] = TempNode;
break;
}
else if (Current->Next == NULL)
{
struct Node * TempNode = malloc(sizeof(char) + sizeof(void *));
TempNode->Letter = TempContainers[i];
TempNode->Next = NULL;
Current->Next = TempNode;
break;
}
Current = Current->Next;
}
}
CurrentLine++;
}
printf("\nTop containers of each stack: ");
for (int i = 0; i < Collumns; i++)
{
struct Node * Current = Stacks[i];
while (Current->Next != NULL)
{
Current = Current->Next;
}
printf("%c", Current->Letter);
}
printf("\n");
// Should print out the stacks with the top character CMZ
return 0;
}
+512
View File
@@ -0,0 +1,512 @@
[H] [D] [P]
[W] [B] [C] [Z] [D]
[T] [J] [T] [J] [D] [J]
[H] [Z] [H] [H] [W] [S] [M]
[P] [F] [R] [P] [Z] [F] [W] [F]
[J] [V] [T] [N] [F] [G] [Z] [S] [S]
[C] [R] [P] [S] [V] [M] [V] [D] [Z]
[F] [G] [H] [Z] [N] [P] [M] [N] [D]
1 2 3 4 5 6 7 8 9
move 2 from 8 to 2
move 3 from 9 to 2
move 1 from 3 to 8
move 5 from 1 to 7
move 2 from 9 to 2
move 8 from 2 to 4
move 6 from 7 to 2
move 2 from 1 to 7
move 4 from 5 to 9
move 4 from 5 to 6
move 1 from 8 to 3
move 1 from 8 to 5
move 2 from 9 to 8
move 8 from 6 to 4
move 4 from 3 to 6
move 10 from 2 to 3
move 1 from 5 to 1
move 1 from 7 to 4
move 2 from 9 to 8
move 18 from 4 to 8
move 1 from 1 to 6
move 4 from 7 to 3
move 12 from 8 to 4
move 4 from 7 to 9
move 5 from 6 to 9
move 2 from 2 to 7
move 3 from 9 to 5
move 3 from 5 to 9
move 1 from 2 to 8
move 10 from 3 to 1
move 2 from 7 to 8
move 10 from 1 to 9
move 1 from 3 to 5
move 16 from 9 to 8
move 1 from 3 to 2
move 3 from 8 to 3
move 1 from 5 to 9
move 3 from 6 to 7
move 2 from 7 to 2
move 1 from 3 to 8
move 5 from 4 to 1
move 4 from 9 to 5
move 2 from 2 to 5
move 2 from 1 to 9
move 23 from 8 to 4
move 6 from 5 to 2
move 5 from 2 to 6
move 1 from 9 to 6
move 2 from 2 to 4
move 35 from 4 to 9
move 1 from 6 to 1
move 2 from 8 to 7
move 1 from 6 to 8
move 3 from 1 to 7
move 1 from 7 to 1
move 3 from 6 to 2
move 4 from 3 to 7
move 6 from 7 to 9
move 1 from 6 to 9
move 1 from 8 to 1
move 2 from 2 to 9
move 2 from 8 to 2
move 3 from 7 to 3
move 2 from 1 to 9
move 5 from 9 to 3
move 1 from 4 to 2
move 1 from 1 to 4
move 7 from 3 to 9
move 1 from 3 to 4
move 2 from 4 to 7
move 24 from 9 to 4
move 12 from 9 to 3
move 1 from 3 to 1
move 1 from 1 to 2
move 2 from 2 to 6
move 1 from 6 to 5
move 1 from 6 to 8
move 3 from 2 to 4
move 1 from 7 to 4
move 1 from 5 to 3
move 1 from 9 to 8
move 23 from 4 to 8
move 17 from 8 to 5
move 12 from 9 to 8
move 10 from 8 to 7
move 1 from 8 to 6
move 5 from 4 to 3
move 3 from 5 to 1
move 3 from 1 to 6
move 6 from 5 to 4
move 10 from 3 to 1
move 9 from 1 to 7
move 2 from 4 to 9
move 1 from 1 to 6
move 4 from 8 to 1
move 4 from 3 to 7
move 4 from 6 to 5
move 1 from 9 to 6
move 1 from 9 to 2
move 1 from 1 to 7
move 1 from 2 to 7
move 3 from 1 to 7
move 9 from 5 to 9
move 7 from 9 to 7
move 2 from 9 to 1
move 3 from 5 to 9
move 3 from 4 to 8
move 1 from 1 to 2
move 1 from 2 to 6
move 1 from 1 to 6
move 5 from 8 to 7
move 1 from 8 to 1
move 1 from 3 to 9
move 1 from 1 to 6
move 2 from 9 to 5
move 2 from 3 to 9
move 4 from 6 to 3
move 1 from 9 to 4
move 2 from 4 to 8
move 1 from 4 to 8
move 1 from 9 to 5
move 1 from 6 to 8
move 23 from 7 to 8
move 27 from 8 to 2
move 2 from 8 to 1
move 23 from 2 to 6
move 3 from 5 to 3
move 4 from 2 to 5
move 2 from 3 to 1
move 2 from 9 to 3
move 4 from 1 to 4
move 13 from 7 to 9
move 1 from 5 to 6
move 2 from 5 to 9
move 1 from 5 to 3
move 3 from 9 to 3
move 5 from 9 to 5
move 2 from 4 to 2
move 1 from 4 to 9
move 11 from 6 to 9
move 9 from 6 to 1
move 17 from 9 to 5
move 3 from 7 to 4
move 3 from 6 to 3
move 14 from 5 to 2
move 5 from 3 to 1
move 2 from 9 to 4
move 2 from 3 to 8
move 5 from 5 to 9
move 2 from 5 to 4
move 7 from 1 to 8
move 2 from 9 to 5
move 3 from 9 to 8
move 8 from 4 to 2
move 2 from 7 to 8
move 10 from 2 to 9
move 10 from 2 to 6
move 8 from 9 to 7
move 2 from 3 to 9
move 3 from 9 to 8
move 5 from 3 to 9
move 7 from 7 to 9
move 3 from 2 to 9
move 10 from 8 to 5
move 1 from 7 to 6
move 1 from 2 to 3
move 4 from 1 to 6
move 2 from 8 to 4
move 1 from 4 to 6
move 2 from 6 to 3
move 2 from 3 to 1
move 1 from 4 to 9
move 4 from 1 to 5
move 2 from 5 to 2
move 2 from 8 to 4
move 1 from 3 to 5
move 3 from 5 to 7
move 2 from 2 to 9
move 3 from 7 to 6
move 3 from 8 to 5
move 10 from 5 to 7
move 3 from 6 to 4
move 11 from 6 to 1
move 3 from 6 to 2
move 12 from 1 to 3
move 1 from 7 to 5
move 9 from 7 to 3
move 5 from 5 to 1
move 4 from 4 to 6
move 2 from 1 to 7
move 1 from 2 to 6
move 2 from 7 to 8
move 1 from 2 to 4
move 1 from 9 to 5
move 3 from 6 to 7
move 1 from 5 to 2
move 9 from 9 to 5
move 1 from 2 to 8
move 1 from 4 to 8
move 1 from 1 to 8
move 1 from 4 to 2
move 1 from 7 to 2
move 1 from 6 to 2
move 1 from 6 to 8
move 6 from 9 to 6
move 1 from 3 to 4
move 9 from 3 to 5
move 1 from 1 to 3
move 2 from 2 to 6
move 1 from 3 to 5
move 14 from 5 to 1
move 1 from 2 to 6
move 5 from 6 to 4
move 3 from 8 to 2
move 5 from 6 to 1
move 5 from 4 to 6
move 1 from 7 to 1
move 3 from 9 to 3
move 7 from 5 to 7
move 1 from 4 to 6
move 2 from 7 to 5
move 3 from 6 to 1
move 3 from 8 to 1
move 14 from 3 to 4
move 8 from 4 to 2
move 1 from 6 to 1
move 15 from 1 to 6
move 7 from 1 to 6
move 6 from 1 to 3
move 3 from 3 to 1
move 2 from 4 to 5
move 1 from 4 to 2
move 19 from 6 to 8
move 2 from 1 to 8
move 4 from 5 to 4
move 7 from 8 to 2
move 2 from 3 to 1
move 13 from 8 to 6
move 4 from 4 to 9
move 2 from 4 to 8
move 2 from 1 to 6
move 1 from 3 to 5
move 19 from 2 to 3
move 13 from 3 to 1
move 1 from 4 to 9
move 1 from 2 to 8
move 3 from 7 to 1
move 14 from 6 to 9
move 2 from 6 to 4
move 18 from 9 to 4
move 3 from 7 to 2
move 15 from 1 to 4
move 2 from 1 to 8
move 5 from 3 to 1
move 1 from 3 to 6
move 5 from 8 to 9
move 3 from 9 to 5
move 1 from 9 to 5
move 1 from 8 to 9
move 1 from 6 to 2
move 3 from 9 to 4
move 2 from 6 to 7
move 30 from 4 to 6
move 22 from 6 to 9
move 6 from 9 to 4
move 4 from 6 to 7
move 1 from 1 to 6
move 1 from 9 to 8
move 1 from 7 to 6
move 3 from 5 to 3
move 5 from 6 to 5
move 2 from 7 to 9
move 4 from 1 to 5
move 1 from 6 to 4
move 1 from 8 to 7
move 2 from 6 to 4
move 17 from 9 to 8
move 2 from 2 to 7
move 2 from 3 to 1
move 8 from 4 to 8
move 1 from 3 to 8
move 8 from 4 to 2
move 2 from 1 to 2
move 1 from 4 to 6
move 4 from 7 to 1
move 1 from 6 to 8
move 19 from 8 to 3
move 5 from 5 to 1
move 5 from 5 to 9
move 2 from 9 to 3
move 6 from 1 to 9
move 1 from 7 to 5
move 1 from 7 to 4
move 2 from 5 to 7
move 2 from 2 to 4
move 4 from 9 to 8
move 12 from 8 to 7
move 2 from 1 to 9
move 1 from 7 to 4
move 4 from 4 to 5
move 3 from 9 to 3
move 9 from 2 to 6
move 2 from 7 to 5
move 1 from 1 to 9
move 5 from 9 to 7
move 9 from 6 to 2
move 6 from 2 to 8
move 21 from 3 to 2
move 12 from 2 to 9
move 3 from 5 to 9
move 3 from 3 to 8
move 5 from 9 to 6
move 13 from 2 to 3
move 3 from 6 to 2
move 10 from 9 to 8
move 6 from 3 to 1
move 3 from 2 to 9
move 2 from 6 to 7
move 5 from 3 to 9
move 4 from 1 to 9
move 3 from 8 to 5
move 1 from 1 to 7
move 6 from 5 to 7
move 12 from 9 to 7
move 1 from 1 to 8
move 11 from 8 to 5
move 9 from 5 to 7
move 1 from 3 to 1
move 4 from 8 to 7
move 1 from 1 to 7
move 2 from 8 to 3
move 42 from 7 to 4
move 3 from 7 to 9
move 4 from 7 to 5
move 1 from 7 to 8
move 1 from 8 to 5
move 1 from 7 to 5
move 1 from 3 to 4
move 1 from 3 to 9
move 1 from 9 to 6
move 1 from 6 to 4
move 1 from 3 to 5
move 3 from 9 to 2
move 16 from 4 to 8
move 3 from 2 to 4
move 1 from 5 to 4
move 30 from 4 to 6
move 15 from 8 to 3
move 2 from 4 to 5
move 1 from 8 to 7
move 13 from 3 to 6
move 1 from 7 to 8
move 1 from 3 to 8
move 1 from 3 to 8
move 4 from 5 to 2
move 6 from 5 to 2
move 2 from 8 to 6
move 43 from 6 to 2
move 1 from 6 to 1
move 18 from 2 to 4
move 24 from 2 to 6
move 19 from 6 to 3
move 4 from 6 to 3
move 2 from 6 to 3
move 3 from 3 to 2
move 1 from 1 to 3
move 23 from 3 to 6
move 12 from 4 to 3
move 7 from 3 to 9
move 13 from 2 to 9
move 1 from 8 to 4
move 4 from 3 to 8
move 6 from 4 to 2
move 10 from 9 to 3
move 6 from 2 to 9
move 8 from 3 to 5
move 3 from 5 to 3
move 13 from 6 to 5
move 4 from 3 to 9
move 1 from 4 to 2
move 4 from 8 to 3
move 1 from 2 to 5
move 14 from 9 to 5
move 2 from 5 to 4
move 2 from 4 to 3
move 1 from 9 to 5
move 4 from 6 to 1
move 1 from 6 to 2
move 6 from 3 to 2
move 5 from 6 to 8
move 2 from 3 to 7
move 1 from 8 to 1
move 25 from 5 to 7
move 3 from 7 to 9
move 5 from 2 to 9
move 12 from 9 to 8
move 3 from 1 to 6
move 16 from 8 to 2
move 1 from 9 to 2
move 1 from 6 to 2
move 1 from 1 to 3
move 21 from 7 to 3
move 2 from 7 to 1
move 1 from 7 to 8
move 2 from 2 to 1
move 2 from 6 to 3
move 18 from 2 to 9
move 2 from 5 to 1
move 1 from 2 to 1
move 3 from 5 to 2
move 13 from 9 to 1
move 3 from 9 to 2
move 1 from 8 to 7
move 3 from 2 to 6
move 2 from 5 to 1
move 17 from 3 to 8
move 3 from 3 to 8
move 2 from 9 to 1
move 1 from 7 to 5
move 1 from 5 to 3
move 2 from 6 to 4
move 1 from 6 to 1
move 15 from 8 to 2
move 2 from 3 to 6
move 1 from 8 to 5
move 2 from 6 to 8
move 13 from 2 to 9
move 4 from 9 to 8
move 9 from 8 to 9
move 3 from 3 to 4
move 4 from 9 to 7
move 1 from 8 to 6
move 1 from 7 to 5
move 2 from 5 to 1
move 1 from 6 to 3
move 4 from 4 to 5
move 1 from 4 to 6
move 1 from 3 to 7
move 1 from 5 to 6
move 2 from 7 to 2
move 4 from 2 to 3
move 3 from 2 to 7
move 1 from 3 to 6
move 1 from 9 to 6
move 2 from 5 to 2
move 3 from 9 to 5
move 1 from 6 to 1
move 3 from 5 to 4
move 12 from 1 to 2
move 2 from 2 to 4
move 2 from 7 to 8
move 2 from 3 to 9
move 1 from 4 to 7
move 1 from 5 to 2
move 1 from 8 to 3
move 2 from 3 to 6
move 7 from 2 to 8
move 3 from 4 to 1
move 7 from 8 to 5
move 7 from 9 to 2
move 1 from 4 to 5
move 3 from 7 to 6
move 5 from 6 to 9
move 6 from 9 to 5
move 4 from 9 to 6
move 1 from 8 to 5
move 1 from 7 to 4
move 1 from 4 to 2
move 2 from 2 to 9
move 2 from 9 to 2
move 11 from 5 to 3
move 2 from 5 to 2
move 1 from 2 to 9
move 4 from 6 to 9
move 1 from 2 to 9
move 4 from 3 to 7
move 3 from 6 to 4
move 1 from 5 to 7
move 18 from 1 to 3
move 11 from 3 to 2
move 1 from 7 to 9
move 1 from 5 to 9
move 14 from 3 to 6
move 15 from 2 to 4
move 5 from 2 to 5
move 1 from 2 to 5
move 1 from 1 to 9
move 8 from 4 to 1
move 5 from 5 to 9
move 9 from 4 to 9
move 4 from 7 to 4
move 5 from 4 to 8
move 2 from 9 to 6
move 8 from 1 to 8
move 1 from 5 to 3
move 1 from 3 to 4
move 1 from 1 to 8
move 13 from 6 to 3
move 9 from 9 to 5
move 1 from 2 to 8
move 8 from 5 to 1
move 1 from 2 to 7
+9
View File
@@ -0,0 +1,9 @@
[D]
[N] [C]
[Z] [M] [P]
1 2 3
move 1 from 2 to 1
move 3 from 1 to 3
move 2 from 2 to 1
move 1 from 1 to 2
+121
View File
@@ -0,0 +1,121 @@
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <stdbool.h>
int MARKER_LENGTH = 4;
int MAX_LENGTH = 4095;
int CountLines(char * FileName)
{
char *Line = malloc(MAX_LENGTH);
int LineCount = 0;
FILE *File;
File = fopen(FileName, "r");
while (fgets(Line, MAX_LENGTH, File) != NULL)
{
LineCount++;
}
fclose(File);
return LineCount;
}
void GetLine(char * FileName, int LineNumber, char * Line)
{
int CurrentLineNumber = 1;
FILE * File;
File = fopen(FileName, "r");
while (fgets(Line, MAX_LENGTH, File) != NULL)
{
if (CurrentLineNumber == LineNumber)
break;
else
CurrentLineNumber++;
}
fclose(File);
}
int main()
{
char Marker[MARKER_LENGTH];
char FileName[] = "input.text";
int LineCount = CountLines(FileName);
int CurrentLine = 1;
char * Line = malloc(MAX_LENGTH);
do
{
// Clear Marker for new line
for (int i = 0; i < MARKER_LENGTH; i++)
Marker[i] = '\0';
GetLine(FileName, CurrentLine, Line);
for (int i = 0; i < strlen(Line); i++)
{
if (i < MARKER_LENGTH)
{
if (!Marker[i])
{
Marker[i] = Line[i];
}
}
else
{
bool Repeat = false;
for (int a = 0; a < MARKER_LENGTH; a++)
{
for (int b = 0; b < MARKER_LENGTH; b++)
{
if (Marker[a] == Marker[b] && a != b)
{
Repeat = true;
break;
}
}
}
if (!Repeat)
{
printf("Marker starts at character %d\n", i);
for (int x = 0; x < MARKER_LENGTH; x++)
printf("%c", Marker[x]);
printf("\n");
break;
}
else
{
// Shift everything in Marker to the left by one
Marker[0] = '\0';
for (int x = 1; x < MARKER_LENGTH; x++)
Marker[x-1] = Marker[x];
Marker[3] = Line[i];
}
}
}
CurrentLine++;
}
while (CurrentLine <= LineCount);
return 1;
}
+1
View File
@@ -0,0 +1 @@
bhzhtzzsczszsjjjzddfzdfzfjfzfbbnntnzznwzzvfvrrqmrmmdzzfqfhqhsqqpwpgwpppbtbnnstthmhrrsmmvsmmhjmjfmfsfjfnfnjjvcjjszjszjsszbznzbnzndzzmlldsdgdcddmqmfqqlcllbvllztzctzczdzttlmtlthtmhtmhmmszsllvzvdzzzsqzqbqccvfvcffzsfslfsllcglclwlvwvzzdsslggtzzgzdzmzddjljvvztttsgscsstztjztjztzvzwwthtftppnmpmmcpmmjlmjjjsfjsjppgcgwcggzffzwzbbmbrbprpqqpccfncfnffvcffsqqtzqzqwzwvzwwwbjbfbcbfblltnlnhhcthtvvzzfcfgfddlggbbshsggplglqqbrbggsvvzdvvlfvlvpvhhmggbrrnppjfjhffttfpffbdfbfvfqvvtcvvbvnnhbhhglgjgzzghhwrrtntrtwwfdfdmmcmtctftpptllzqllzflfrrgqgvgdvdfdbddprrrgccqvqnnmtmvmffpzzqggfbfnfwwqdqldqqlnqnttnbttrffnmmzwzjjtrjtrtmmqsmqmffqmfqfhhbthbhdhvdhvdvmvdmdhdshsqslldzztvvmzzdcccmbbhfhshrrrpsrrqqmdmmgdmmwdmdjdqqmcmttpgtgwgpwpprbrprhrsrllhsllprlplhppfzpffbhbccwdwbbrpbpvpqqmsspjssmbbmfmrmnrnwwgbwwbpwpjwwhqqgcqcvqccgffzpfftcffqlqjjznnlflhhlcczhzvhzhmzhmhfhnnqznntstwtggqjgjhggsvslltjlttfjjgffjzjwzzqzrrhlhzhbhphmhlmlzmzsmzmccvllgrrpbrbfbjfjttqjttdrdhhggqgddppqgpqgpgtptjptpllwccmwcmcpmcppdrrtstqqczqzvvlsltlddnvdvggcqqblqqsjqjttzhtzzszllqsqfqddqdbqddwqddfzzlczcscfsfpfdpdrpddsggcqchcfcpcssstwstwtggghvhqhzzqssjddwjwbjjsnjnfnwwglwwfnfhnnscsggzgjzzhzmmqfqsqwqrwqqqdtdcttzvvnbngbbcdbdggddnmddgzghhzgghwwbjbttlwlcctlccwwdhhrqrvrjjlglssgttpllwclwwtptwptwtvthtbhbzhbzhhrsrwwwnrwrfwfnwnhhnqqdjqjpqqwdwttzhttcdttvztzltzlzmzddrsdsfdsfftdfffmwffrjrffqrfqfsfqqqgqjggwzzrnnqfnqffdbfbtbbrpbrpbptpwttjmjjzrrhhqppdzdtdjttqwwtddjdzzmgzzhwwwdsdgssprsrgsgbbphhdpdwppnfppdqqwzzpbzzqwqpqsqhqdhqqtwwjnnmvmwvmmwwgjgzjjvcjcvcjcnjcncmmphmmvmwmwpwbbtbffhnhshgssgvgvrrbwbtbddqmqfqvvfqvqdvvdbvdbdcdfdlflmffrwwgmmttrztrrfrqrpqrrzjrjpjdpjprrnhhbhcbbcwwqlwwcssbddfrfjrfjfrjfjvvdmdtdzzlvzlzhzmhmhphchnnfqnffvccfpfbfpfqpprrmttzrzzjzmjmzjmmfvmmrzrqqdllgjlglcchssgllsbllrbrlrjlrrhhfwwsqwsstpssznzcznzqzssvtvtrrqwqvvtssgfsfhssljjnwjnjddjdggclcrrfsfhsstgtdtctfttvvsbvvbtbttcgcssjlslhlpljpppwzwnwdnngmgjjbzznwwdllrrfppshhvdhhldhdbbdbjbdjjrnjjzhzfhhsqqbqgmsbvnjsptlrsszlqfmgprvscphmqztbgtlrqvcgdzcptcqjncrdtfqnghnbmwwmcjgtjlbvqqzslgbbntrdfnvfjvfgcgngndjcspgwmpnsrqzzvzljbzlzzrwflrqqqmhsvqwbmdftnhwwzgqrlhddbbtwvbphljmstcjzvpjqwcnhlvpqvqdgvntgqzqwrlwbwvngwtqgrhznlzcvbwqmwncccjctrdzrmzjsvrmcfpjjcczhbvdfwhqvczggfmrspvprvvthvtqnsphpcsdmbrtbdqljvssdrhwjsrrlzprstpgqcbpmnpdgzgjttwcfrgjnsghmszlclgvmlsjrqfvflbnhwwphtvrnrbhdvdglcvgpzfsjpwwhtlvvdzthsrldfzhnlrblzsjjnwclqsqzgdbflhvpwcrtfbfbjcjttbjpvfgvfcswnqqwshbmqlscdzzwshfqwsvwnwzltbnrmzzhzvtwpzqcgwshpvzgtcmwrtrwctnpzbznnwqphnrgwljtrcwlqmvlndwrdrctztnmswslqmbjcmtlrmcpjvzccqszrnflqnqzttbhqlrhbmqdpscqvfgtdbnwjdcljwcbgbgjfzgrgpwqzqgbnrtpntfthhdbqmswvhnmwmszpghgjjzrbnbbfjblpstdfslmmmqfdcrhblqjqfphnldrvvfpnfrcvprjnqbzbspfpjtgqhnjbhnrwzcjvdbshhqpgrmzqpmjfmqwqvvdbddbsldwzzsrhnhsjjnvljrbwcnjrnjpmrrvfthftgptgtlpbgqffthflgftwcrqcqwqwrmrcmfrcqgmrnqjbscdcgrqlhjzthvzdgjbvpswflqcgsnlmgmvcsttsgmnqdtvwdvrndvfdcvrcwmqlmlhtrvthsndsrmnsfmdmfnpfmfhzjqmtcjzcrnsjdztztvgdtlrmbdmmstbfgpmmzthcslpvgrpgfljfgqlqhldfwvvvdvbzjtdtppbtrnqwsqztjrsjhtfrgmvsdngvsdzjgpwrldqpzdpvhljzpjvttwltdwcrhcbrgrvdrmpwvdwjchqsjfprbgtjtzggvgrgmlvvwqrjfprbbgjjqrtdfnrdffwbswbvqtqtfsrhsgrjhftqldhmcnmsnfflmdrzqdjmbqqgqsttdmtrrvfsjnccnhcpcvqtrzdjzrpwswmjvvgsgwvnmdgqwlctrlhqnsmczbwsjhmtgvdcgsndzlstcwchcztqqbtdwfvlljdvdlzljslgnzpmqvzfcvqhdzvgchffqgfwrnmwqzwgbzblpmvddlvnhglrhdnwzqwztzgjczjpwcjwmpnrnrhncfjfggrbphrjztwtfqmfjlwfhnqfftfghbnvtwgtmdzzrdrtmfrwhrrbhzmcllsgqzwzzqtgdggvzptvtdcpzmtmsfcfbjtzlbdrwhdbtdhhrgggmddnzsvjwgcdcqfppqwphfvlhmgqsznlhmgpnjvcvrwwppnphchgsrhjwjcpjggsrcwrvnllfgrmjltfzwhmbqwpwwzmrtlqcprrqztcgnghcbvzrbfptjmhtdcfhhffdbrswqpnpppnpqwtflrrmqgjzctmmvvvwzllbsfdvpqjtmvpjcpmjztscsgbdznfgcmtjzdqzwqrsvstnnvddcstzqjtnbsnlptpmbmfqmhppgnjrffqrtchgptbmwlwbwbcqqfngpbwtwdmlmdstmqwcwjtbwbbbhghgptmvhfmvqfvpwqzwnbjdhpwlgjgvprdjbnlzhnllssbpvzfzspwsscfpqtpdvtzvqncfrfrgddsdglqvpblmpcczlqfdmwzmgvrljhqtcglcvfhbdwhbttqqrjbqwhsrhrbjwmtqwqddvdggdwfsmnpbpvvgsqnvvrqntwmbzdnqpmmqtbnlsbmslpfmqjtgvbddhwvlvjtlrhqdpfnjwtbhwjwdrpgctbbrdqvbbnvgqwngrhqfvwzmlqtmhfqphnmczlbdpnbmpvwrsjbcnjnvcfgnsvlhpzdgdzgvfbgwdcrswznrggnghzssdwqvvlwftqhbnwdvghhvjlqqmcnqmvbwhrrnsswlwmwbsmpcpdzzgmcmqnzpvjpzqbwcsgdhqtqhcpbtqftvscmntsbdcbrndvlfhprpblzbjcpqhfljtvnvtgvrcgqbsgl
+4
View File
@@ -0,0 +1,4 @@
bvwbjplbgvbhsrlpgdmjqwftvncz
nppdvjthqldpwncqszvftbrmjlhg
nznrnfrfntjfmvfwmzdfjlvtqnbhcprsg
zcfzfwzzqfrljwzlrfnpqdbhtmscgvjw
+121
View File
@@ -0,0 +1,121 @@
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <stdbool.h>
int MARKER_LENGTH = 14;
int MAX_LENGTH = 4095;
int CountLines(char * FileName)
{
char *Line = malloc(MAX_LENGTH);
int LineCount = 0;
FILE *File;
File = fopen(FileName, "r");
while (fgets(Line, MAX_LENGTH, File) != NULL)
{
LineCount++;
}
fclose(File);
return LineCount;
}
void GetLine(char * FileName, int LineNumber, char * Line)
{
int CurrentLineNumber = 1;
FILE * File;
File = fopen(FileName, "r");
while (fgets(Line, MAX_LENGTH, File) != NULL)
{
if (CurrentLineNumber == LineNumber)
break;
else
CurrentLineNumber++;
}
fclose(File);
}
int main()
{
char Marker[MARKER_LENGTH];
char FileName[] = "input.text";
int LineCount = CountLines(FileName);
int CurrentLine = 1;
char * Line = malloc(MAX_LENGTH);
do
{
// Clear Marker for new line
for (int i = 0; i < MARKER_LENGTH; i++)
Marker[i] = '\0';
GetLine(FileName, CurrentLine, Line);
for (int i = 0; i < strlen(Line); i++)
{
if (i < MARKER_LENGTH)
{
if (!Marker[i])
{
Marker[i] = Line[i];
}
}
else
{
bool Repeat = false;
for (int a = 0; a < MARKER_LENGTH; a++)
{
for (int b = 0; b < MARKER_LENGTH; b++)
{
if (Marker[a] == Marker[b] && a != b)
{
Repeat = true;
break;
}
}
}
if (!Repeat)
{
printf("Marker starts at character %d\n", i);
for (int x = 0; x < MARKER_LENGTH; x++)
printf("%c", Marker[x]);
printf("\n");
break;
}
else
{
// Shift everything in Marker to the left by one
Marker[0] = '\0';
for (int x = 1; x < MARKER_LENGTH; x++)
Marker[x-1] = Marker[x];
Marker[MARKER_LENGTH-1] = Line[i];
}
}
}
CurrentLine++;
}
while (CurrentLine <= LineCount);
return 1;
}
+1
View File
@@ -0,0 +1 @@
bhzhtzzsczszsjjjzddfzdfzfjfzfbbnntnzznwzzvfvrrqmrmmdzzfqfhqhsqqpwpgwpppbtbnnstthmhrrsmmvsmmhjmjfmfsfjfnfnjjvcjjszjszjsszbznzbnzndzzmlldsdgdcddmqmfqqlcllbvllztzctzczdzttlmtlthtmhtmhmmszsllvzvdzzzsqzqbqccvfvcffzsfslfsllcglclwlvwvzzdsslggtzzgzdzmzddjljvvztttsgscsstztjztjztzvzwwthtftppnmpmmcpmmjlmjjjsfjsjppgcgwcggzffzwzbbmbrbprpqqpccfncfnffvcffsqqtzqzqwzwvzwwwbjbfbcbfblltnlnhhcthtvvzzfcfgfddlggbbshsggplglqqbrbggsvvzdvvlfvlvpvhhmggbrrnppjfjhffttfpffbdfbfvfqvvtcvvbvnnhbhhglgjgzzghhwrrtntrtwwfdfdmmcmtctftpptllzqllzflfrrgqgvgdvdfdbddprrrgccqvqnnmtmvmffpzzqggfbfnfwwqdqldqqlnqnttnbttrffnmmzwzjjtrjtrtmmqsmqmffqmfqfhhbthbhdhvdhvdvmvdmdhdshsqslldzztvvmzzdcccmbbhfhshrrrpsrrqqmdmmgdmmwdmdjdqqmcmttpgtgwgpwpprbrprhrsrllhsllprlplhppfzpffbhbccwdwbbrpbpvpqqmsspjssmbbmfmrmnrnwwgbwwbpwpjwwhqqgcqcvqccgffzpfftcffqlqjjznnlflhhlcczhzvhzhmzhmhfhnnqznntstwtggqjgjhggsvslltjlttfjjgffjzjwzzqzrrhlhzhbhphmhlmlzmzsmzmccvllgrrpbrbfbjfjttqjttdrdhhggqgddppqgpqgpgtptjptpllwccmwcmcpmcppdrrtstqqczqzvvlsltlddnvdvggcqqblqqsjqjttzhtzzszllqsqfqddqdbqddwqddfzzlczcscfsfpfdpdrpddsggcqchcfcpcssstwstwtggghvhqhzzqssjddwjwbjjsnjnfnwwglwwfnfhnnscsggzgjzzhzmmqfqsqwqrwqqqdtdcttzvvnbngbbcdbdggddnmddgzghhzgghwwbjbttlwlcctlccwwdhhrqrvrjjlglssgttpllwclwwtptwptwtvthtbhbzhbzhhrsrwwwnrwrfwfnwnhhnqqdjqjpqqwdwttzhttcdttvztzltzlzmzddrsdsfdsfftdfffmwffrjrffqrfqfsfqqqgqjggwzzrnnqfnqffdbfbtbbrpbrpbptpwttjmjjzrrhhqppdzdtdjttqwwtddjdzzmgzzhwwwdsdgssprsrgsgbbphhdpdwppnfppdqqwzzpbzzqwqpqsqhqdhqqtwwjnnmvmwvmmwwgjgzjjvcjcvcjcnjcncmmphmmvmwmwpwbbtbffhnhshgssgvgvrrbwbtbddqmqfqvvfqvqdvvdbvdbdcdfdlflmffrwwgmmttrztrrfrqrpqrrzjrjpjdpjprrnhhbhcbbcwwqlwwcssbddfrfjrfjfrjfjvvdmdtdzzlvzlzhzmhmhphchnnfqnffvccfpfbfpfqpprrmttzrzzjzmjmzjmmfvmmrzrqqdllgjlglcchssgllsbllrbrlrjlrrhhfwwsqwsstpssznzcznzqzssvtvtrrqwqvvtssgfsfhssljjnwjnjddjdggclcrrfsfhsstgtdtctfttvvsbvvbtbttcgcssjlslhlpljpppwzwnwdnngmgjjbzznwwdllrrfppshhvdhhldhdbbdbjbdjjrnjjzhzfhhsqqbqgmsbvnjsptlrsszlqfmgprvscphmqztbgtlrqvcgdzcptcqjncrdtfqnghnbmwwmcjgtjlbvqqzslgbbntrdfnvfjvfgcgngndjcspgwmpnsrqzzvzljbzlzzrwflrqqqmhsvqwbmdftnhwwzgqrlhddbbtwvbphljmstcjzvpjqwcnhlvpqvqdgvntgqzqwrlwbwvngwtqgrhznlzcvbwqmwncccjctrdzrmzjsvrmcfpjjcczhbvdfwhqvczggfmrspvprvvthvtqnsphpcsdmbrtbdqljvssdrhwjsrrlzprstpgqcbpmnpdgzgjttwcfrgjnsghmszlclgvmlsjrqfvflbnhwwphtvrnrbhdvdglcvgpzfsjpwwhtlvvdzthsrldfzhnlrblzsjjnwclqsqzgdbflhvpwcrtfbfbjcjttbjpvfgvfcswnqqwshbmqlscdzzwshfqwsvwnwzltbnrmzzhzvtwpzqcgwshpvzgtcmwrtrwctnpzbznnwqphnrgwljtrcwlqmvlndwrdrctztnmswslqmbjcmtlrmcpjvzccqszrnflqnqzttbhqlrhbmqdpscqvfgtdbnwjdcljwcbgbgjfzgrgpwqzqgbnrtpntfthhdbqmswvhnmwmszpghgjjzrbnbbfjblpstdfslmmmqfdcrhblqjqfphnldrvvfpnfrcvprjnqbzbspfpjtgqhnjbhnrwzcjvdbshhqpgrmzqpmjfmqwqvvdbddbsldwzzsrhnhsjjnvljrbwcnjrnjpmrrvfthftgptgtlpbgqffthflgftwcrqcqwqwrmrcmfrcqgmrnqjbscdcgrqlhjzthvzdgjbvpswflqcgsnlmgmvcsttsgmnqdtvwdvrndvfdcvrcwmqlmlhtrvthsndsrmnsfmdmfnpfmfhzjqmtcjzcrnsjdztztvgdtlrmbdmmstbfgpmmzthcslpvgrpgfljfgqlqhldfwvvvdvbzjtdtppbtrnqwsqztjrsjhtfrgmvsdngvsdzjgpwrldqpzdpvhljzpjvttwltdwcrhcbrgrvdrmpwvdwjchqsjfprbgtjtzggvgrgmlvvwqrjfprbbgjjqrtdfnrdffwbswbvqtqtfsrhsgrjhftqldhmcnmsnfflmdrzqdjmbqqgqsttdmtrrvfsjnccnhcpcvqtrzdjzrpwswmjvvgsgwvnmdgqwlctrlhqnsmczbwsjhmtgvdcgsndzlstcwchcztqqbtdwfvlljdvdlzljslgnzpmqvzfcvqhdzvgchffqgfwrnmwqzwgbzblpmvddlvnhglrhdnwzqwztzgjczjpwcjwmpnrnrhncfjfggrbphrjztwtfqmfjlwfhnqfftfghbnvtwgtmdzzrdrtmfrwhrrbhzmcllsgqzwzzqtgdggvzptvtdcpzmtmsfcfbjtzlbdrwhdbtdhhrgggmddnzsvjwgcdcqfppqwphfvlhmgqsznlhmgpnjvcvrwwppnphchgsrhjwjcpjggsrcwrvnllfgrmjltfzwhmbqwpwwzmrtlqcprrqztcgnghcbvzrbfptjmhtdcfhhffdbrswqpnpppnpqwtflrrmqgjzctmmvvvwzllbsfdvpqjtmvpjcpmjztscsgbdznfgcmtjzdqzwqrsvstnnvddcstzqjtnbsnlptpmbmfqmhppgnjrffqrtchgptbmwlwbwbcqqfngpbwtwdmlmdstmqwcwjtbwbbbhghgptmvhfmvqfvpwqzwnbjdhpwlgjgvprdjbnlzhnllssbpvzfzspwsscfpqtpdvtzvqncfrfrgddsdglqvpblmpcczlqfdmwzmgvrljhqtcglcvfhbdwhbttqqrjbqwhsrhrbjwmtqwqddvdggdwfsmnpbpvvgsqnvvrqntwmbzdnqpmmqtbnlsbmslpfmqjtgvbddhwvlvjtlrhqdpfnjwtbhwjwdrpgctbbrdqvbbnvgqwngrhqfvwzmlqtmhfqphnmczlbdpnbmpvwrsjbcnjnvcfgnsvlhpzdgdzgvfbgwdcrswznrggnghzssdwqvvlwftqhbnwdvghhvjlqqmcnqmvbwhrrnsswlwmwbsmpcpdzzgmcmqnzpvjpzqbwcsgdhqtqhcpbtqftvscmntsbdcbrndvlfhprpblzbjcpqhfljtvnvtgvrcgqbsgl
+5
View File
@@ -0,0 +1,5 @@
mjqjpqmgbljsphdztnvjfqwrcgsmlb
bvwbjplbgvbhsrlpgdmjqwftvncz
nppdvjthqldpwncqszvftbrmjlhg
nznrnfrfntjfmvfwmzdfjlvtqnbhcprsg
zcfzfwzzqfrljwzlrfnpqdbhtmscgvjw
+222
View File
@@ -0,0 +1,222 @@
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <stdbool.h>
#include <ctype.h>
#include <string.h>
struct File {
char * Name;
int size;
};
struct Dir {
char * Name;
int size;
struct Dir * Parent;
int ChildrenAmount;
struct Dir ** Children;
int FileCount;
struct File ** Files;
};
struct Dir * FindDir(struct Dir * CurrentDir, char * target_name)
{
for (int index = 0; index < CurrentDir->ChildrenAmount; index++)
{
char * current_child_name = CurrentDir->Children[index]->Name;
if (strcmp(current_child_name, target_name) == 0)
return CurrentDir->Children[index];
}
return NULL;
}
char * RemoveLastChar(char * Str)
{
size_t length = strlen(Str);
char * NewString = malloc(length * sizeof(char));
for (int index = 0; index < length - 1; index++)
NewString[index] = Str[index];
return NewString;
}
int CountLines(char * FileName)
{
char *Line = malloc(256);
int LineCount = 0;
FILE *File;
File = fopen(FileName, "r");
while (fgets(Line, 256, File) != NULL)
{
LineCount++;
}
fclose(File);
return LineCount;
}
void GetLine(char * FileName, int LineNumber, char * Line)
{
int CurrentLineNumber = 1;
FILE *File;
File = fopen(FileName, "r");
while (fgets(Line, 256, File) != NULL)
{
if (CurrentLineNumber == LineNumber)
break;
else
CurrentLineNumber++;
}
fclose(File);
}
void PrintDir(struct Dir * Current)
{
printf("Name: %s, ", Current->Name);
printf("Children: %d, ", Current->ChildrenAmount);
printf("Size: %d, ", Current->size);
if (Current->Parent)
printf("Parent: %s", Current->Parent->Name);
printf("\n");
for (int i = 0; i < Current->ChildrenAmount; i++)
{
PrintDir(Current->Children[i]);
}
}
int main()
{
struct Dir Root;
Root.Name = "Root";
Root.size = 0;
Root.Parent = NULL;
Root.ChildrenAmount = 0;
Root.FileCount = 0;
struct Dir * CurrentDirectory = &Root;
char FileName[] = "test.text";
int LineCount = CountLines(FileName);
int CurrentLine = 2; // Skipping line one
char * Line = malloc(256);
char * Command = malloc(256);
while (CurrentLine <= LineCount)
{
GetLine(FileName, CurrentLine, Line);
if (Line[0] == '$')
{
Command = strtok(Line, " ");
Command = strtok(NULL, " ");
while (Command != NULL)
{
if (strcmp(Command, "cd") == 0)
{
char * target_dir_name = strtok(NULL, " ");
CurrentDirectory = FindDir(CurrentDirectory, target_dir_name);
Command = strtok(NULL, " ");
}
else if (strcmp(Command, "ls\n") == 0)
{
// Find how many items we need to put into an array
int Directories = 0;
int LineOffset = 1;
do
{
printf("get line %d\n", CurrentLine+LineOffset);
GetLine(FileName, CurrentLine + LineOffset, Line);
if (Line[0] == '$')
break;
char * FirstWord = strtok(Line, " ");
if (strcmp(FirstWord, "dir") == 0)
Directories++;
else if (isdigit(Line[0]))
{
int add = atoi(FirstWord);
printf("Adding size %d to %s\n", add, CurrentDirectory->Name);
CurrentDirectory->size += add;
printf("CurrentDirectory Size is %d\n", CurrentDirectory->size);
}
LineOffset++;
}
while (1);
printf("%d Directories found\n", Directories);
// CurrentLine += LineOffset;
printf("Getting directories...\n");
if (Directories > 0)
{
LineOffset = 1;
struct Dir ** TempChildren = malloc(sizeof(struct Dir) * Directories);
for (int i = 0; i < Directories; i++)
{
while (1)
{
GetLine(FileName, CurrentLine + LineOffset, Line);
printf("get line %d\n", CurrentLine + LineOffset);
char * FirstWord = malloc(256);
FirstWord = strtok(Line, " ");
LineOffset++;
if (strcmp(FirstWord, "dir") == 0)
{
FirstWord = strtok(NULL, " ");
struct Dir * TempDirectory = malloc(sizeof(struct Dir));
TempDirectory->Name = RemoveLastChar(FirstWord);
TempDirectory->Parent = CurrentDirectory;
TempChildren[i] = TempDirectory;
break;
}
}
}
CurrentDirectory->Children = TempChildren;
CurrentDirectory->ChildrenAmount = Directories;
}
}
Command = strtok(NULL, " ");
}
}
if (CurrentLine == 13)
break;
CurrentLine++;
}
PrintDir(&Root);
}
File diff suppressed because it is too large. Load diff
+3
View File
@@ -0,0 +1,3 @@
set -e
gcc day7p1.c -o day7p1.exe
./day7p1.exe
+23
View File
@@ -0,0 +1,23 @@
$ cd /
$ ls
dir a
14848514 b.txt
8504156 c.dat
dir d
$ cd a
$ ls
dir e
29116 f
2557 g
62596 h.lst
$ cd e
$ ls
584 i
$ cd ..
$ cd ..
$ cd d
$ ls
4060174 j
8033020 d.log
5626152 d.ext
7214296 k