Created
November 10, 2023 06:59
-
-
Save dra1n/88cb5ee9304cf01a99dab9a96ed32cd2 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
(ns number-puzzles.imbaru | |
(:refer-clojure :exclude [==]) ;; Prevent ns conflict | |
(:require [clojure.core.logic :refer :all])) | |
(def answers (run* [q] | |
(fresh [r1 r2 r3 r4 | |
r5 r6 r7 r8 | |
r9 r10 r11 r12 | |
r13 r14 r15 r16] | |
;; Last room | |
(conde [(== [r4 r10 r13] [1 0 0])] | |
[(== [r4 r10 r13] [0 1 0])] | |
[(== [r4 r10 r13] [0 0 1])]) | |
(conde [(== [r2 r5 r7] [1 0 1])] | |
[(== [r2 r5 r7] [0 1 1])] | |
[(== [r2 r5 r7] [0 0 0])]) | |
(conde [(== [r5 r8 r15] [0 1 0])] | |
[(== [r5 r8 r15] [1 0 0])] | |
[(== [r5 r8 r15] [1 1 1])]) | |
(conde [(== [r1 r4 r16] [1 0 1])] | |
[(== [r1 r4 r16] [0 1 1])] | |
[(== [r1 r4 r16] [0 0 0])]) | |
;; Mirrors room | |
(conde [(== [r6 r9 r11] [0 0 1])] | |
[(== [r6 r9 r11] [1 1 1])] | |
[(== [r6 r9 r11] [1 0 0])]) | |
(conde [(== [r1 r3 r16] [0 1 1])] | |
[(== [r1 r3 r16] [1 0 1])] | |
[(== [r1 r3 r16] [1 1 0])]) | |
(conde [(== [r6 r8 r12] [1 1 0])] | |
[(== [r6 r8 r12] [0 0 0])] | |
[(== [r6 r8 r12] [0 1 1])]) | |
(conde [(== [r5 r7 r15] [1 1 0])] | |
[(== [r5 r7 r15] [0 0 0])] | |
[(== [r5 r7 r15] [0 1 1])]) | |
;; Warpath room | |
(conde [(== [r6 r9 r12] [1 1 1])] | |
[(== [r6 r9 r12] [0 0 1])] | |
[(== [r6 r9 r12] [0 1 0])]) | |
(conde [(== [r2 r7 r13] [1 0 1])] | |
[(== [r2 r7 r13] [0 1 1])] | |
[(== [r2 r7 r13] [0 0 0])]) | |
(conde [(== [r1 r4 r16] [1 0 1])] | |
[(== [r1 r4 r16] [0 1 1])] | |
[(== [r1 r4 r16] [0 0 0])]) | |
(conde [(== [r3 r11 r14] [1 1 1])] | |
[(== [r3 r11 r14] [0 0 1])] | |
[(== [r3 r11 r14] [0 1 0])]) | |
;; Chests room | |
(conde [(== [r2 r10 r13] [0 0 0])] | |
[(== [r2 r10 r13] [1 1 0])] | |
[(== [r2 r10 r13] [1 0 1])]) | |
(conde [(== [r9 r11 r14] [1 0 1])] | |
[(== [r9 r11 r14] [0 1 1])] | |
[(== [r9 r11 r14] [0 0 0])]) | |
(conde [(== [r8 r12 r15] [0 1 1])] | |
[(== [r8 r12 r15] [1 0 1])] | |
[(== [r8 r12 r15] [1 1 0])]) | |
(conde [(== [r4 r10 r16] [1 0 1])] | |
[(== [r4 r10 r16] [0 1 1])] | |
[(== [r4 r10 r16] [0 0 0])]) | |
(== q [[r1 r2 r3 r4] | |
[r5 r6 r7 r8] | |
[r9 r10 r11 r12] | |
[r13 r14 r15 r16]])))) | |
(first answers) |
Author
dra1n
commented
Nov 10, 2023
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment