-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy path16-2.cfm
More file actions
35 lines (30 loc) · 967 Bytes
/
Copy path16-2.cfm
File metadata and controls
35 lines (30 loc) · 967 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
<cffunction name="solve" output="false">
<cfargument name="input" required="true" />
<cfset var adventOfCode = CreateObject('component', 'AdventOfCode') />
<cfset var seen = {} />
<cfset var programs = 'abcdefghijklmnop' />
<cfset var dances = 0 />
<cfset seen[programs] = dances />
<cfset var cycle = '' />
<cfloop condition="true">
<cfset programs = adventOfCode.dance(programs, arguments.input) />
<cfset dances++ />
<cfif StructKeyExists(seen, programs)>
<cfset cycle = dances - seen[programs] />
<cfbreak />
</cfif>
<cfset seen[programs] = dances />
</cfloop>
<cfset var i = '' />
<cfloop from="1" to="#(1000000000 - dances) % cycle#" index="i">
<cfset programs = adventOfCode.dance(programs, arguments.input) />
</cfloop>
<cfreturn programs />
</cffunction>
<cfset testCases = [
{
input = Trim(FileRead(ExpandPath('16.txt'))),
expectedOutput = 'agndefjhibklmocp'
}
] />
<cfinclude template="test_runner_include.cfm" />