Skip to content

Instantly share code, notes, and snippets.

@waynejo
Last active January 21, 2022 11:35
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save waynejo/ed620c06a788909a6d4b4357bd5f18be to your computer and use it in GitHub Desktop.
Save waynejo/ed620c06a788909a6d4b4357bd5f18be to your computer and use it in GitHub Desktop.
import java.io.FileInputStream
import scala.annotation.tailrec
import scala.io.StdIn
import scala.math.abs
def minFuel(crabs: Vector[Int], fuels: (Vector[Int], Int) => Int): Int =
(crabs.min to crabs.max).map(position => fuels(crabs, position)).min
def solve7_1(inputs: Vector[Int]): Int =
def fuels(crabs: Vector[Int], target: Int): Int =
crabs.map(crab => abs(crab - target)).sum
minFuel(inputs, fuels)
def solve7_2(inputs: Vector[Int]): Int =
def fuels(crabs: Vector[Int], target: Int): Int =
crabs.map(crab => {
val diff = abs(crab - target)
diff * (1 + diff) / 2
}).sum
minFuel(inputs, fuels)
@main def solve7(): Unit =
val in = new FileInputStream("example7-2.in")
System.setIn(in)
val inputs = StdIn.readLine().split(",").map(_.toInt).toVector
println(solve7_1(inputs))
println(solve7_2(inputs))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment