Add solution to day 1 part 1 and part 2
This commit is contained in:
parent
d7552fdf02
commit
40991c4e3a
67
AoC/2015/day_1.adb
Normal file
67
AoC/2015/day_1.adb
Normal file
|
|
@ -0,0 +1,67 @@
|
|||
with Ada.Text_IO; use Ada.Text_IO;
|
||||
|
||||
procedure Day_1 is
|
||||
|
||||
function Get_Floor( File_Name : String ) return Integer is
|
||||
File : File_Type;
|
||||
Sum : Integer := 0;
|
||||
begin
|
||||
Open(File, In_File, File_Name);
|
||||
|
||||
while not End_Of_File(File) loop
|
||||
declare
|
||||
Line : String := Get_Line(File);
|
||||
begin
|
||||
for I in Line'Range loop
|
||||
case Line(I) is
|
||||
when '(' => Sum := @ + 1;
|
||||
when ')' => Sum := @ - 1;
|
||||
when others => null;
|
||||
end case;
|
||||
end loop;
|
||||
end;
|
||||
end loop;
|
||||
|
||||
Close(File);
|
||||
|
||||
return Sum;
|
||||
end Get_Floor;
|
||||
|
||||
function Get_Basement_Position( File_Name : String ) return Integer is
|
||||
File : File_Type;
|
||||
Position : Natural := 1;
|
||||
Sum : Integer := 0;
|
||||
begin
|
||||
Open(File, In_File, File_Name);
|
||||
|
||||
outer_loop:
|
||||
while not End_Of_File(File) loop
|
||||
declare
|
||||
Line : String := Get_Line(File);
|
||||
begin
|
||||
for I in Line'Range loop
|
||||
case Line(I) is
|
||||
when '(' => Sum := @ + 1;
|
||||
when ')' =>
|
||||
Sum := @ - 1;
|
||||
if Sum = -1 then
|
||||
exit outer_loop;
|
||||
end if;
|
||||
when others => null;
|
||||
end case;
|
||||
Position := @ + 1;
|
||||
end loop;
|
||||
end;
|
||||
end loop outer_loop;
|
||||
|
||||
Close(File);
|
||||
|
||||
return Position;
|
||||
end Get_Basement_Position;
|
||||
|
||||
begin
|
||||
|
||||
Put_Line(Get_Floor("input_day_1.txt")'Image);
|
||||
Put_Line(Get_Basement_Position("input_day_1.txt")'Image);
|
||||
|
||||
end Day_1;
|
||||
Loading…
Reference in New Issue
Block a user