More Scala benching tests
This commit is contained in:
parent
47bfab928a
commit
90c359f7cb
|
@ -1,24 +1,26 @@
|
|||
import java.nio.file.Files
|
||||
import java.nio.file.Paths
|
||||
import scala.util.control.NonLocalReturns.*
|
||||
|
||||
def first_unique_run_for(line: String, num: Int, skip: Int = 0): Int =
|
||||
def first_unique_run_for(line: String, num: Int, skip: Int = 0): Int = returning {
|
||||
for i <- num.max(skip) until line.length do
|
||||
if line.substring(i-num, i).toCharArray.toSet.size == num then
|
||||
return i
|
||||
return -1
|
||||
if line.substring(i-num, i).toCharArray.distinct.size == num then
|
||||
throwReturn(i)
|
||||
throwReturn(-1)
|
||||
}
|
||||
|
||||
def first_unique_run_while(line: String, num: Int, skip: Int = 0): Int =
|
||||
var i = num.max(skip)
|
||||
while i < line.length do
|
||||
if line.substring(i-num, i).toCharArray.toSet.size == num then
|
||||
if line.substring(i-num, i).toCharArray.distinct.size == num then
|
||||
return i
|
||||
i += 1
|
||||
return -1
|
||||
|
||||
@main def main() =
|
||||
val line = Files.readString(Paths.get("input/6")).strip
|
||||
do_once(line)
|
||||
// perf_test(line, 50000)
|
||||
// do_once(line)
|
||||
perf_test(line, 100000)
|
||||
|
||||
def do_once(line: String) =
|
||||
val four = first_unique_run_for(line, 4)
|
||||
|
@ -26,11 +28,11 @@ def do_once(line: String) =
|
|||
println(four)
|
||||
println(fourteen)
|
||||
|
||||
def perf_test(line: String, n: int) =
|
||||
def perf_test(line: String, n: Int) =
|
||||
var four = -1
|
||||
var fourteen = -1
|
||||
for i <- 1 to n do
|
||||
four = first_unique_run_while(line, 4)
|
||||
fourteen = first_unique_run_while(line, 14, four)
|
||||
four = first_unique_run_for(line, 4)
|
||||
fourteen = first_unique_run_for(line, 14, four)
|
||||
println(four)
|
||||
println(fourteen)
|
||||
|
|
Loading…
Reference in New Issue