Jump to content

Hourglass puzzle: Difference between revisions

Line 8:
;Notes
Implemented as a 1-player game.
 
=={{header|Julia}}==
Implemented as a game solver rather than as a game with user input.
<lang julia>function findsumfromend(target, series)
for startpoint in length(series):-1:1
if sum(series[startpoint:end]) == target
return startpoint
end
end
return nothing
end
 
function euclidean_hourglassflipper(hourglasses, target)
gcd(hourglasses) in hourglasses && throw("Hourglasses fail sanity test (not relatively prime enough")
flippers, series = deepcopy(hourglasses), Int[]
for i in 1:typemax(Int32)
n = minimum(flippers)
push!(series, n)
flippers .-= n
for (i, n) in enumerate(flippers)
if n == 0
flippers[i] = hourglasses[i]
end
end
for startpoint in length(series):-1:1
if sum(series[startpoint:end]) == target
println("Series: $series")
return startpoint, length(series)
end
end
end
end
 
i, j = euclidean_hourglassflipper([4, 7], 9)
println("Use hourglasses from step $i to step $j (inclusive) to sum 9")
</lang>{{out}}
Series: [4, 3, 1, 4, 2, 2]
<pre>
Use hourglasses from step 3 to step 6 (inclusive) to sum 9
</pre>
 
=={{header|Logo}}==
tested with FMSlogo
4,107

edits

Cookies help us deliver our services. By using our services, you agree to our use of cookies.