diff --git a/everybody-codes/2025/EveryBodyCodes2025/EveryBodyCodes2025/EveryBodyCodes2025.fsproj b/everybody-codes/2025/EveryBodyCodes2025/EveryBodyCodes2025/EveryBodyCodes2025.fsproj
index c8e8612..a6de288 100644
--- a/everybody-codes/2025/EveryBodyCodes2025/EveryBodyCodes2025/EveryBodyCodes2025.fsproj
+++ b/everybody-codes/2025/EveryBodyCodes2025/EveryBodyCodes2025/EveryBodyCodes2025.fsproj
@@ -19,9 +19,26 @@
PreserveNewest
+
+ PreserveNewest
+
+
+
+ PreserveNewest
+
+
+
+ PreserveNewest
+
+
+
+
+
+
+
diff --git a/everybody-codes/2025/EveryBodyCodes2025/EveryBodyCodes2025/Inputs/Quest02/Q02_P01.txt b/everybody-codes/2025/EveryBodyCodes2025/EveryBodyCodes2025/Inputs/Quest02/Q02_P01.txt
new file mode 100644
index 0000000..c717701
--- /dev/null
+++ b/everybody-codes/2025/EveryBodyCodes2025/EveryBodyCodes2025/Inputs/Quest02/Q02_P01.txt
@@ -0,0 +1 @@
+A=[154,53]
\ No newline at end of file
diff --git a/everybody-codes/2025/EveryBodyCodes2025/EveryBodyCodes2025/Inputs/Quest02/Q02_P02.txt b/everybody-codes/2025/EveryBodyCodes2025/EveryBodyCodes2025/Inputs/Quest02/Q02_P02.txt
new file mode 100644
index 0000000..c3f4c58
--- /dev/null
+++ b/everybody-codes/2025/EveryBodyCodes2025/EveryBodyCodes2025/Inputs/Quest02/Q02_P02.txt
@@ -0,0 +1 @@
+A=[-3284,68783]
\ No newline at end of file
diff --git a/everybody-codes/2025/EveryBodyCodes2025/EveryBodyCodes2025/Inputs/Quest02/Q02_P03.txt b/everybody-codes/2025/EveryBodyCodes2025/EveryBodyCodes2025/Inputs/Quest02/Q02_P03.txt
new file mode 100644
index 0000000..c3f4c58
--- /dev/null
+++ b/everybody-codes/2025/EveryBodyCodes2025/EveryBodyCodes2025/Inputs/Quest02/Q02_P03.txt
@@ -0,0 +1 @@
+A=[-3284,68783]
\ No newline at end of file
diff --git a/everybody-codes/2025/EveryBodyCodes2025/EveryBodyCodes2025/Program.fs b/everybody-codes/2025/EveryBodyCodes2025/EveryBodyCodes2025/Program.fs
index 8e426a8..de705f6 100644
--- a/everybody-codes/2025/EveryBodyCodes2025/EveryBodyCodes2025/Program.fs
+++ b/everybody-codes/2025/EveryBodyCodes2025/EveryBodyCodes2025/Program.fs
@@ -5,9 +5,10 @@ open EveryBodyCodes2025
let main argv =
try
- printfn $"{Quest01.part1()}"
- printfn $"{Quest01.part2()}"
- printfn $"{Quest01.part3()}"
+ printfn $"{Quest02.part1()}"
+ //Quest02.test1
+ printfn $"{Quest02.part2()}"
+ printfn $"{Quest02.part3()}"
with exn ->
printfn $"{exn}"
0
\ No newline at end of file
diff --git a/everybody-codes/2025/EveryBodyCodes2025/EveryBodyCodes2025/Quest02.fs b/everybody-codes/2025/EveryBodyCodes2025/EveryBodyCodes2025/Quest02.fs
new file mode 100644
index 0000000..cb180b5
--- /dev/null
+++ b/everybody-codes/2025/EveryBodyCodes2025/EveryBodyCodes2025/Quest02.fs
@@ -0,0 +1,66 @@
+module EveryBodyCodes2025.Quest02
+
+open System.IO
+open System.Text.RegularExpressions
+open FSharp.Collections.ParallelSeq
+open Checked
+
+[]
+type ComplexNumber =
+ {X: int64; Y: int64}
+ static member (+) (a: ComplexNumber, b: ComplexNumber) = {X = a.X + b.X; Y = a.Y + b.Y }
+ static member (*) (a: ComplexNumber, b: ComplexNumber) = { X = ( a.X * b.X ) - (a.Y * b.Y); Y = (a.X * b.Y) + (a.Y * b.X) }
+ static member (/) (a: ComplexNumber, b: ComplexNumber) = { X = a.X / b.X; Y = a.Y / b.Y }
+ override this.ToString() = $"[{this.X},{this.Y}]"
+
+let parseInput file =
+ File.ReadAllLines file
+ |> fun lines ->
+ let reg = Regex(@"A=\[(-?\d+),(-?\d+)\]")
+ let res = reg.Match(lines[0])
+ match res.Success with
+ | true ->
+ let x = int64 res.Groups[1].Value
+ let y = int64 res.Groups[2].Value
+ {X = x; Y = y}
+ | false -> failwith "failed to parse"
+
+
+let part1 () =
+ parseInput "Inputs/Quest02/Q02_P01.txt"
+ |> fun a ->
+ [1..3]
+ |> List.fold (fun acc _ -> (acc * acc) / { X = 10; Y = 10 } + a ) {X = 0; Y = 0}
+
+let cycle p =
+ let rec iterate current iteration =
+ if iteration = 100 then Some current
+ else
+ let next = (current * current) / {X = 100_000; Y = 100_000 } + p
+ if abs(next.X) > 1_000_000 || abs(next.Y) > 1_000_000 then
+ None
+ else iterate next (iteration + 1)
+ iterate { X = 0; Y = 0 } 0
+
+let part2 () =
+ parseInput "Inputs/Quest02/Q02_P02.txt"
+ |> fun a ->
+ seq {
+ for y in 0..100 do
+ for x in 0..100 do
+ yield {X = a.X + (int64 x * 10L); Y = a.Y + (int64 y * 10L)}
+ }
+ |> PSeq.choose cycle
+ |> PSeq.distinct
+ |> PSeq.length
+
+let part3 () =
+ parseInput "Inputs/Quest02/Q02_P03.txt"
+ |> fun a ->
+ seq {
+ for y in 0..1000 do
+ for x in 0..1000 do
+ yield {X = a.X + (int64 x); Y = a.Y + (int64 y)}
+ }
+ |> PSeq.choose cycle
+ |> PSeq.length
\ No newline at end of file