Skip to content

Commit 12af587

Browse files
committed
2016.21.1
1 parent fbd69d6 commit 12af587

File tree

1 file changed

+9
-10
lines changed

1 file changed

+9
-10
lines changed

src/main/scala/y2016/Day21.scala

Lines changed: 9 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -3,20 +3,17 @@ package y2016
33
import scala.util.parsing.combinator.RegexParsers
44

55
trait Day21 {
6+
def swap(arr: Array[Char], i: Int, j: Int): Unit =
7+
val tmp = arr(i); arr(i) = arr(j); arr(j) = tmp
8+
9+
def reverse(arr: Array[Char], start: Int, end: Int): Unit =
10+
for i <- start to start + end / 2 if i < (end - i + start) do swap(arr, i, end - i + start)
611

712
def rotate(arr: Array[Char], k: Int): Unit =
813
reverse(arr, 0, k - 1)
914
reverse(arr, k, arr.length - 1)
1015
reverse(arr, 0, arr.length - 1)
1116

12-
def reverse(arr: Array[Char], start: Int, end: Int): Unit =
13-
for i <- start to start + end / 2 if i < (end - i + start) do swap(arr, i, end - i + start)
14-
15-
def swap(arr: Array[Char], i: Int, j: Int): Unit =
16-
val tmp = arr(i)
17-
arr(i) = arr(j)
18-
arr(j) = tmp
19-
2017
object Parser extends RegexParsers {
2118
def swapPos: Parser[Array[Char] => Unit] = ("swap position" ~> "\\d+".r) ~ ("with position" ~> "\\d+".r) ^^ {
2219
case left ~ right => arr => swap(arr, left.toInt, right.toInt)
@@ -62,9 +59,11 @@ trait Day21 {
6259

6360
def solve1(input: Seq[String], letters: String): String =
6461
val array = letters.toCharArray
65-
input.foreach { line => Parser.parseAll(Parser.allParsers, line).get.apply(array) }
62+
input.foreach { line => Parser.parseAll(Parser.allParsers, line).get(array) }
6663
array.mkString
6764

6865
def solve2(input: Seq[String], letters: String): String =
69-
"abcdefgh".permutations.withFilter(perm => solve1(input, perm) == letters).next()
66+
// not really *much* faster but a little
67+
import collection.parallel.CollectionConverters.ImmutableSeqIsParallelizable
68+
"abcdefgh".permutations.toSeq.par.find(perm => solve1(input, perm) == letters).get
7069
}

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy