Skip to content

Instantly share code, notes, and snippets.

@andy128k
Last active August 29, 2015 13:57
Show Gist options
  • Save andy128k/9396885 to your computer and use it in GitHub Desktop.
Save andy128k/9396885 to your computer and use it in GitHub Desktop.
Делали с ребёнком домашку... Вот такой вот первый класс.
(let ((points '("a" "b" "v" "g" "d" "e" "i" "j" "z"))
(edges '("ab" "ae" "av" "ag" "ad"
"ba" "be" "bi" "bv" "bg" "bd"
"vb" "vg" "vi" "vj" "va" "vd"
"gv" "gd" "gj" "gz" "gb" "ga"
"dg" "dz" "dv" "db" "da"
"ea" "eb" "ei" "ej" "ez"
"ie" "ib" "iv" "ij" "iz"
"ji" "jv" "jg" "jz" "je"
"zj" "zg" "zd" "zi" "ze"))
(count 0)
(q nil))
(loop
for p1 in points
do (loop
for p2 in points
do (loop
for p3 in points
do (loop
for p4 in points
do (when (and (string/= p1 p2)
(string/= p1 p3)
(string/= p1 p4)
(string/= p2 p3)
(string/= p2 p4)
(string/= p3 p4)
(member (concatenate 'string p1 p2) edges :test #'string=)
(member (concatenate 'string p2 p3) edges :test #'string=)
(member (concatenate 'string p3 p4) edges :test #'string=)
(member (concatenate 'string p4 p1) edges :test #'string=)
(not (member (concatenate 'string p1 p2 p3 p4) q :test #'string=))
(= 2 (length (intersection (list p1 p2 p3 p4) '("a" "b" "v" "g" "d") :test #'string=)))
(= 2 (length (intersection (list p1 p2 p3 p4) '("e" "i" "j" "z") :test #'string=))))
(push (concatenate 'string p1 p2 p3 p4) q)
(push (concatenate 'string p2 p3 p4 p1) q)
(push (concatenate 'string p3 p4 p1 p2) q)
(push (concatenate 'string p4 p1 p2 p3) q)
(push (concatenate 'string p4 p3 p2 p1) q)
(push (concatenate 'string p3 p2 p1 p4) q)
(push (concatenate 'string p2 p1 p4 p3) q)
(push (concatenate 'string p1 p4 p3 p2) q)
(format t "~A ~A ~A ~A~%" p1 p2 p3 p4)
(incf count))))))
(format t "count = ~A~%" count))
@andy128k
Copy link
Author

andy128k commented Mar 6, 2014

Посчитать количество четырёхугольников

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment