How to resolve the algorithm Twelve statements step by step in the Nim programming language
Published on 12 May 2024 09:40 PM
How to resolve the algorithm Twelve statements step by step in the Nim programming language
Table of Contents
Problem Statement
This puzzle is borrowed from math-frolic.blogspot.
Given the following twelve statements, which of them are true?
When you get tired of trying to figure it out in your head, write a program to solve it, and print the correct answer or answers.
Print out a table of near misses, that is, solutions that are contradicted by only a single statement.
Let's start with the solution:
Step by Step solution about How to resolve the algorithm Twelve statements step by step in the Nim programming language
Source code in the nim programming language
import bitops, sequtils, strformat, strutils, sugar
type Bools = array[1..12, bool]
const Predicates = [1: (b: Bools) => b.len == 12,
2: (b: Bools) => b[7..12].count(true) == 3,
3: (b: Bools) => toSeq(countup(2, 12, 2)).mapIt(b[it]).count(true) == 2,
4: (b: Bools) => not b[5] or b[6] and b[7],
5: (b: Bools) => not b[2] and not b[3] and not b[4],
6: (b: Bools) => toSeq(countup(1, 12, 2)).mapIt(b[it]).count(true) == 4,
7: (b: Bools) => b[2] xor b[3],
8: (b: Bools) => not b[7] or b[5] and b[6],
9: (b: Bools) => b[1..6].count(true) == 3,
10: (b: Bools) => b[11] and b[12],
11: (b: Bools) => b[7..9].count(true) == 1,
12: (b: Bools) => b[1..11].count(true) == 4]
proc `$`(b: Bools): string =
toSeq(1..12).filterIt(b[it]).join(" ")
echo "Exacts hits:"
var bools: Bools
for n in 0..4095:
block check:
for i in 1..12: bools[i] = n.testBit(12 - i)
for i, predicate in Predicates:
if predicate(bools) != bools[i]:
break check
echo " ", bools
echo "\nNear misses:"
for n in 0..4095:
for i in 1..12: bools[i] = n.testBit(12 - i)
var count = 0
for i, predicate in Predicates:
if predicate(bools) == bools[i]: inc count
if count == 11:
for i, predicate in Predicates:
if predicate(bools) != bools[i]:
echo &" (Fails at statement {i:2}) {bools}"
break
You may also check:How to resolve the algorithm Nth root step by step in the CoffeeScript programming language
You may also check:How to resolve the algorithm Munchausen numbers step by step in the Swift programming language
You may also check:How to resolve the algorithm Simple database step by step in the Common Lisp programming language
You may also check:How to resolve the algorithm 4-rings or 4-squares puzzle step by step in the AWK programming language
You may also check:How to resolve the algorithm Horizontal sundial calculations step by step in the C programming language