Countdown: Difference between revisions
Back to initial Quorum solution without compiler memory allocation bug during recursive calls on lists or array data structures
(Remove of output for Quorum solution + explanation added into the incorrect flag) |
(Back to initial Quorum solution without compiler memory allocation bug during recursive calls on lists or array data structures) |
||
Line 313:
=={{header|Quorum}}==
<syntaxhighlight lang="quorum">
use Libraries.Containers.List
use Libraries.Containers.Iterator
use Libraries.System.DateTime
List<integer>
▲ action Main
▲ DateTime datetime
▲ number start = datetime:GetEpochTime()
if not
▲ numbers:Add(25)
▲ numbers:Add(6)
▲ numbers:Add(3)
▲ output "Best solution found is " + best
number stop = datetime:GetEpochTime() ▼
output stop-start + " ms"▼
end
action Solution(integer target, integer res, List<integer> numbers) returns boolean▼
end
best = res▼
// No remaining operations to be done▼
if numbers:GetSize() = 0▼
return false▼
numbers:Add(res) ▼
// All couple of numbers
Iterator<integer> it0 = numbers:GetIterator()
repeat while it0:HasNext()
integer n0 = it0:Next()
List<integer> numbers1 = cast(List<integer>, numbers:Copy())
numbers1:Remove(n0)
Iterator<integer> it1 = numbers1:GetIterator()
repeat while it1:HasNext()
integer n1 = it1:Next()
List<integer> numbers2 = cast(List<integer>, numbers1:Copy())
numbers2:Remove(n1)
integer res =
List<integer> numbersNew
if res = target or Solution(target, res, cast(List<integer>, numbers2:Copy()))▼
numbersNew = cast(List<integer>, numbers2:Copy())
return true
end
return true
end
if n0 not= n1▼
▲ res = n0 - n1
▲ if res = target or Solution(target, res, cast(List<integer>, numbers2:Copy()))
▲ output res + " = " + n0 + " - " + n1
return true
end
end
output res + " = " + n1 + " / " + n0
return true
end
end
end // it1
end // it0
end // if numbers:GetSize()
end
</syntaxhighlight>
{{out}}
<pre>
952 = 23800 / 25
23800 = 23850 - 50
23850 = 225 * 106
225 = 3 * 75
106 = 6 + 100
311.0 ms
</pre>
=={{header|Wren}}==
{{trans|Quorum}}
|