Department numbers: Difference between revisions

→‎{{header|Python}}: Add python-constraint solution
(→‎{{header|Minimal BASIC}}: Corrected. Minimal BASIC does not have the operators OR, AND, NOT.)
(→‎{{header|Python}}: Add python-constraint solution)
Line 3,816:
Police: 6 Sanitation: 4 Fire: 2
</pre>
 
 
===Using a constraint solver===
A problem this trivial is amenable to brute-force solutions such as the above, but it is a good example of the type of problem for which a constraint solver can be useful. This is how one could solve it using the `python-constraint` library:
 
{{libheader|python-constraint}}
<syntaxhighlight lang="python">import constraint
 
depts = [ 'police', 'sanitation', 'fire' ]
 
p = constraint.Problem()
 
for var in depts:
p.addVariable(var, range(1,8))
 
p.addConstraint(constraint.AllDifferentConstraint())
p.addConstraint(lambda *vars: sum(vars)==12, depts)
p.addConstraint(lambda p: p%2==0, ['police'])
 
for s in p.getSolutions():
print(s)</syntaxhighlight>
 
{{Out}}
<pre>{'police': 6, 'fire': 5, 'sanitation': 1}
{'police': 6, 'fire': 4, 'sanitation': 2}
{'police': 6, 'fire': 2, 'sanitation': 4}
{'police': 6, 'fire': 1, 'sanitation': 5}
{'police': 4, 'fire': 6, 'sanitation': 2}
{'police': 4, 'fire': 7, 'sanitation': 1}
{'police': 4, 'fire': 5, 'sanitation': 3}
{'police': 4, 'fire': 3, 'sanitation': 5}
{'police': 4, 'fire': 2, 'sanitation': 6}
{'police': 4, 'fire': 1, 'sanitation': 7}
{'police': 2, 'fire': 4, 'sanitation': 6}
{'police': 2, 'fire': 6, 'sanitation': 4}
{'police': 2, 'fire': 7, 'sanitation': 3}
{'police': 2, 'fire': 3, 'sanitation': 7}</pre>
 
=={{header|Quackery}}==
1,480

edits