Ich habe ausprobiert, wie man eine typische Knobelaufgabe mit logischer Programmierung lösen kann: https://sebstein.hpfsc.de/2025/12/31/logische-programmierung/
Ich habe ausprobiert, wie man eine typische Knobelaufgabe mit logischer Programmierung lösen kann: https://sebstein.hpfsc.de/2025/12/31/logische-programmierung/
[Перевод] Решение головоломки NYTimes Pips с помощью решателя ограничений
Кажется, что головоломка NYT Pips — это просто игра с домино и цветными клетками. Но если взглянуть на неё как на задачу удовлетворения ограничений, она превращается в удобный полигон для современных решателей вроде MiniZinc. В статье автор показывает, как описать Pips не в виде алгоритма перебора, а в виде системы ограничений: сетка, домино, суммы по областям, симметрии и «мусорные» решения. По ходу дела выясняется, что войти в мир constraint solving можно буквально за пару часов, а заодно на практике понять, почему эти инструменты умеют разруливать экспоненциальный хаос вариантов за миллисекунды — но иногда внезапно «залипают» на одной и той же головоломке. Читать разбор
https://habr.com/ru/companies/otus/articles/975004/
#решатели_ограничений #MiniZinc #моделирование_ограничений #поиск_решений #бэктрекинг #оптимизация_перебора #головоломки #алгоритмическое_моделирование
[Перевод] Многие сложные задачи на LeetCode — это простые задачи на ограничения
Иногда впечатление от алгоритмических задач такое, будто вас просят не решать проблему, а угадать «правильный» трюк из головы автора. В этой статье мы посмотрим на те же самые leetcode-подобные задачи глазами человека, который устал изобретать стеки и динамику на собеседовании и попробовал формулировать их как задачу оптимизации для солвера ограничений. Разбираем, как привычные «найди максимум при таких-то условиях» превращаются в компактные декларативные модели, зачем вообще нужны такие упражнения, что они говорят о собеседованиях и о нашем отношении к алгоритмам — и где у подхода с MiniZinc/constraint solving проходят естественные границы. Смотреть подход
https://habr.com/ru/companies/otus/articles/970468/
#задачи #leetcode #алгоритмы #задачи_на_ограничения #временная_сложность #MiniZinc #солвер_ограничений #оптимизация_задач #собеседование_разработчика #алгоритмические_задачи
Took me way too long to figure out but I successfully used #MiniZinc to re-solve a CTF challenge today, just to learn it.
It's a constraint solver with a powerful high-level language. I used it to find a 20-character key fitting a set of requirements I reversed out of the challenge. Once I understood how to model the requirements in MiniZinc's language (and figured out the bugs in my reversing script 😅) solving for the key took 0.5s 😁
Might be of interest for others: https://minizinc.org
Hai tất cả! Một bài đăng mới trên Reddit giới thiệu cách ứng dụng quy hoạch lịch làm việc theo bờ tròn trong MiniZinc. Nó giúp tối ưu hóa phân bổ nhân lực với cách phối hợp thời gian làm việc dài hạn. Tham gia язык vào cuộc thảo luận về nghiệm pháp coast this cam kết mã nguồn mở! #MiniZinc #QuyHóaLịchLàmViệc #MãNguồnMở #LậpTrình #Technology #TechTalk #Programming #OpenSource
https://www.reddit.com/r/programming/comments/1ol30lv/rotating_workforce_scheduling_in_minizinc/
Rotating Workforce Scheduling in MiniZinc
https://zayenz.se/blog/post/rotating-workforce-scheduling/
#HackerNews #RotatingWorkforce #Scheduling #MiniZinc #Optimization #Algorithms #WorkforceManagement
```
include "alldifferent.mzn";
% решает ребус
% KOTKA + KOTKA + KOTKA = SOBAKA
var 1..9: K;
var 1..9: S;
var 0..9: O;
var 0..9: T;
var 0..9: A;
var 0..9: B;
constraint 3*(10000*K + 1000*O + 100*T + 10*K + 1*A) = 100000*S + 10000*O + 1000*B + 100*A + 10*K + 1*A;
constraint alldifferent([K, O, T, A, S, B]);
solve satisfy;
output [" \(K)\(O)\(T)\(K)\(A)*3 =\n",
"= \(S)\(O)\(B)\(A)\(K)\(A)\n"];
```