슬리더링크(Slitherlink)는 스도쿠를 유행시킨 일본의 퍼즐 출판사 니콜리(Nikoli)가 소개한 고리 만들기 퍼즐이다. 규칙은 간단하지만 푸는 것은 만만치 않다.
퍼즐은 점들이 격자 모양으로 놓여 만들어지는 직사각형 칸들의 모음이다. 각 칸은 비어 있거나 $0$부터 $3$까지의 정수 하나를 담는다. 이웃한 점들을 가로 또는 세로 선분으로 이어, 그려진 선분들이 하나의 닫힌 고리(모든 점에서 선분이 정확히 $2$개 또는 $0$개만 만나는 연결된 순환)를 이루도록 해야 한다. 숫자가 적힌 칸은 그 숫자와 정확히 같은 개수의 변이 고리에 포함되어야 하고, 비어 있는 칸은 몇 개의 변이 포함되든 상관없다. 올바른 퍼즐은 고리가 유일하게 정해지도록 충분한 숫자를 담고 있다.
일반적인 슬리더링크를 푸는 문제는 (도쿄대학의 Takayuki Yato에 의해) NP-완전임이 알려져 있는데, 이는 일반적인 경우를 푸는 효율적인 알고리즘이 알려져 있지 않다는 뜻이다. 그러나 제약을 하나 두면 실용적으로 풀 수 있게 된다. 이 문제에서 다루는 슬링크(Slink)는 빈 칸이 없는 슬리더링크이다. 즉 모든 칸에는 네 변 중 몇 개가 고리에 속하는지를 나타내는 숫자가 반드시 적혀 있다. 슬링크 퍼즐의 정답 고리는 대응되는 슬리더링크와 완전히 같으며, 주어지는 정보의 양만 다르다.
슬링크 퍼즐은 국소적인 추론 규칙들을 반복 적용하여 풀 수 있다. 예를 들어 $0$이 적힌 칸의 네 변은 모두 고리에 포함되지 않는다. 또한 $0$에 이웃한 $3$은 $0$과 맞닿은 변이 제거되므로 남는 세 변을 모두 사용해야 한다.
아래는 추론 규칙들이다. 각 규칙은 어떤 변을 고리에 반드시 포함시키거나, 고리에서 반드시 제외한다. 모든 입력 퍼즐은, 적용 가능한 규칙을 항상 적용하기만 하면 도달할 수 있는 유일한 정답을 가짐이 보장된다.
입력은 여러 개의 슬링크 퍼즐로 이루어진다.
각 퍼즐은 두 정수 $r$과 $c$(칸의 행 수와 열 수)가 공백으로 구분되어 적힌 줄로 시작한다. 이어지는 $r$개의 줄에는 각각 $0$부터 $3$까지의 정수 $c$개가 공백으로 구분되어 주어지며, 이는 각 칸의 숫자를 나타낸다.
퍼즐의 크기는 최소 $2 \times 2$에서 최대 $20 \times 20$ 칸이다. 모든 퍼즐은 적용 가능한 추론 규칙을 항상 적용하기만 하면 찾을 수 있는 유일한 정답을 가짐이 보장된다.
0 0이 적힌 줄은 입력의 끝을 나타내며 퍼즐이 아니다.
각 퍼즐에 대해, 먼저 퍼즐 번호를 한 줄에 출력한다(첫 번째 퍼즐은 $1$, 두 번째는 $2$, …). 그다음 그 퍼즐의 유일한 정답을 그림으로 출력한다.
정답은 다음 문자로 그린다. 고리의 세로 변은 세로줄 |, 가로 변은 붙임표 -, 고리가 방향을 바꾸는 점은 더하기표 +로 나타낸다. 각 칸의 숫자는 좌우에 각각 공백 한 칸씩을 두고 출력한다. 고리가 방향을 바꾸지 않고 곧게 지나가는 점은 그 점이 놓인 선의 일부로 그려진다.
그림 전체를 우물정자 #로 만든 테두리로 둘러싼다. 이때 왼쪽 위 칸의 숫자는 테두리에서 오른쪽으로 네 번째 칸, 아래로 세 번째 칸에 오도록 하고, 오른쪽 아래 칸의 숫자는 테두리에서 왼쪽으로 네 번째 칸, 위로 세 번째 칸에 오도록 한다. 정확한 형식은 예제를 그대로 따른다.