{"format":"murdoku-puzzle/1","id":"icecream","version":1,"difficulty":"very-easy","level":1,"size":{"rows":5,"cols":5},"languages":["en","hu","de","fr","es","it","nl","pl","pt","ro","ca","cs","fi","vi","tr","el","ru","uk","ar","ko","ja","zh-Hans","zh-Hant"],"defaultLanguage":"en","title":"아이스크림 가게","tagline":"리미니 해안 산책로의 젤라테리아 · 1962년 8월의 어느 저녁 · 피스타치오가 동났다","author":"mathace","concept":"Murdoku – Manuel Garand (murdoku.com); unofficial fan-made case","created":"2026-09-29","story":"리미니, 1962년 8월의 무더운 저녁. 해안 산책로의 작은 젤라테리아는 여섯 시에 이미 피스타치오가 동났고, 햇볕에 그을린 마지막 관광객들이 테라스를 떠나고 있었으며, 아이스크림 장인은 하루 매상을 세고 있었다. 여름 내내 이 가게를 사들여 허물고 호텔을 지으려 애써 온 부동산 개발업자 Vitale은 테라스의 줄무늬 파라솔 옆에 앉아 결코 마시지 않을 에스프레소를 주문했다. 해가 질 무렵 그는 그곳에서 죽은 채 발견되었다. 그의 가까이에 있던 사람은 네 명뿐이었고, 각자 한 문장짜리 진술을 남겼다 – 누가 그와 단둘이 있었는지 밝혀내라.","rules":{"standard":["모든 <b>행</b>과 모든 <b>열</b>에는 정확히 <b>한 사람</b>이 있다. 누군가를 배치하는 즉시 그 사람의 행과 열 전체를 지워라.","<b>“옆”</b> = 바로 왼쪽, 오른쪽, 위, 아래이며 <b>같은 구역 안</b>이어야 한다. 물건이 있는 칸(싱크대, 아이스크림 카운터, 테이블, 파라솔, 자전거, 화단)에는 있을 수 없다. 다만 의자와 벤치는 예외다.","범인은 <b>피해자와 단둘이</b> 있었다: 그 구역에는 다른 누구도 없었다."],"special":[]},"roleNames":{"guest":"손님","staff":"직원","victim":"피해자"},"personGroups":[{"id":"guests","name":"손님","persons":["A","B","V"]},{"id":"staff","name":"직원","persons":["C","D"]}],"map":{"groups":[],"gaps":[],"areas":[{"id":"Kitchen","cells":[[1,1],[1,2],[2,1]],"fill":"#e3e9ec","pattern":"tiles","labelAt":[1,2],"name":"주방"},{"id":"Parlour","cells":[[1,3],[1,4],[2,2],[2,3],[3,1],[3,2],[4,1]],"fill":"#f6dde6","pattern":"marble","labelAt":[3,2],"name":"홀"},{"id":"Terrace","cells":[[1,5],[2,4],[2,5],[3,3],[3,4],[3,5],[4,2],[4,3],[5,1],[5,2]],"fill":"#f0e4cc","pattern":"tiles","labelAt":[4,3],"name":"테라스"},{"id":"Garden","cells":[[4,4],[4,5],[5,3],[5,4],[5,5]],"fill":"#dcebcd","pattern":"marble","labelAt":[5,4],"name":"정원"}],"objectTypes":{"bench":{"occupiable":true,"name":"벤치","icon":"<rect x=\"7\" y=\"8\" width=\"3.2\" height=\"31\" fill=\"#5e4127\"/><rect x=\"35.8\" y=\"8\" width=\"3.2\" height=\"31\" fill=\"#5e4127\"/><rect x=\"4\" y=\"8\" width=\"38\" height=\"6\" rx=\"1.5\" fill=\"#a5733f\" stroke=\"#4e3a1e\" stroke-width=\"1.3\"/><rect x=\"4\" y=\"17.5\" width=\"38\" height=\"6\" rx=\"1.5\" fill=\"#c08a50\" stroke=\"#6b4a26\" stroke-width=\"1.2\"/><rect x=\"4\" y=\"25\" width=\"38\" height=\"6\" rx=\"1.5\" fill=\"#c08a50\" stroke=\"#6b4a26\" stroke-width=\"1.2\"/><rect x=\"4\" y=\"32.5\" width=\"38\" height=\"6\" rx=\"1.5\" fill=\"#c08a50\" stroke=\"#6b4a26\" stroke-width=\"1.2\"/>"},"chair":{"occupiable":true,"name":"의자","icon":"<rect x=\"9\" y=\"7\" width=\"28\" height=\"32\" rx=\"6\" fill=\"#fbfaf6\" stroke=\"#8c8a82\" stroke-width=\"1.5\"/><rect x=\"9\" y=\"7\" width=\"28\" height=\"9\" rx=\"4\" fill=\"#d9d5cc\" stroke=\"#8c8a82\" stroke-width=\"1.5\"/>"},"bicycle":{"occupiable":false,"name":"자전거","icon":"<circle cx=\"13\" cy=\"30\" r=\"8\" fill=\"none\" stroke=\"#2b2b2b\" stroke-width=\"2\"/><circle cx=\"33\" cy=\"30\" r=\"8\" fill=\"none\" stroke=\"#2b2b2b\" stroke-width=\"2\"/><path d=\"M13 30 L20 16 h10 l3 14 M20 16 l6 14 h-13 M30 16 l-4 -4\" fill=\"none\" stroke=\"#c0392b\" stroke-width=\"2.2\" stroke-linejoin=\"round\"/>"},"counter":{"occupiable":false,"name":"아이스크림 카운터","icon":"<rect x=\"0\" y=\"10\" width=\"46\" height=\"26\" fill=\"#a97c50\" stroke=\"#5e4127\" stroke-width=\"1.5\"/><rect x=\"0\" y=\"10\" width=\"46\" height=\"7\" fill=\"#c9a06f\"/>"},"flowers":{"occupiable":false,"name":"화단","icon":"<path d=\"M17 28 h12 l-2 12 h-8 z\" fill=\"#c9c3b8\" stroke=\"#6b6660\" stroke-width=\"1.2\"/><circle cx=\"16\" cy=\"19\" r=\"5\" fill=\"#e0526a\"/><circle cx=\"30\" cy=\"19\" r=\"5\" fill=\"#f2a53a\"/><circle cx=\"23\" cy=\"12\" r=\"5\" fill=\"#f2d24a\"/><circle cx=\"23\" cy=\"22\" r=\"4.5\" fill=\"#d94a8a\"/><path d=\"M12 25 q6 -8 11 -6\" fill=\"none\" stroke=\"#3f8a4a\" stroke-width=\"2\"/><path d=\"M34 25 q-6 -8 -11 -6\" fill=\"none\" stroke=\"#3f8a4a\" stroke-width=\"2\"/>"},"sink":{"occupiable":false,"name":"싱크대","icon":"<rect x=\"7\" y=\"9\" width=\"32\" height=\"28\" rx=\"4\" fill=\"#dfe6ea\" stroke=\"#6b7680\" stroke-width=\"1.5\"/><ellipse cx=\"23\" cy=\"24\" rx=\"11\" ry=\"7\" fill=\"#ffffff\" stroke=\"#8a949c\"/><circle cx=\"23\" cy=\"24\" r=\"2\" fill=\"#8a949c\"/><rect x=\"21\" y=\"10\" width=\"4\" height=\"6\" fill=\"#8a949c\"/>"},"table":{"occupiable":false,"name":"테이블","icon":"<rect x=\"7\" y=\"7\" width=\"32\" height=\"32\" rx=\"5\" fill=\"#b98a5a\" stroke=\"#6e4d2c\" stroke-width=\"1.5\"/><rect x=\"12\" y=\"12\" width=\"22\" height=\"22\" rx=\"3\" fill=\"#d1a675\"/>"},"umbrella":{"occupiable":false,"name":"파라솔","icon":"<path d=\"M5 24 q18 -22 36 0 z\" fill=\"#e26d5a\" stroke=\"#8a3a2a\" stroke-width=\"1.2\"/><path d=\"M5 24 q4 -6 9 0 q4 -6 9 0 q4 -6 9 0 q4 -6 9 0\" fill=\"none\" stroke=\"#f9d7cf\" stroke-width=\"1.5\"/><line x1=\"23\" y1=\"24\" x2=\"23\" y2=\"42\" stroke=\"#5a4a3a\" stroke-width=\"2\"/>"}},"wallTypes":{},"objects":[{"cell":[1,1],"type":"sink"},{"cell":[1,4],"type":"counter"},{"cell":[2,2],"type":"chair"},{"cell":[2,3],"type":"table"},{"cell":[2,4],"type":"chair"},{"cell":[3,3],"type":"chair"},{"cell":[3,4],"type":"umbrella"},{"cell":[3,5],"type":"chair"},{"cell":[4,1],"type":"chair"},{"cell":[4,5],"type":"bicycle"},{"cell":[5,2],"type":"chair"},{"cell":[5,3],"type":"bench"},{"cell":[5,5],"type":"flowers"}],"wallFeatures":[],"extras":[],"cellSize":46},"persons":[{"id":"A","name":"Arturo","gender":"M","role":"guest","color":"#c62828","avatar":{"bg":"#1565c0","skin":"#e4b998","hair":"#1c1a1a","style":"slick","shirt":"#f4efe6","mustache":true,"mustacheColor":"#1c1a1a"},"clue":"그는 <b>마지막 행</b>에 있었다.","job":"옆 호텔의 주인","avatarSvg":"<svg viewBox=\"0 0 80 80\" xmlns=\"http://www.w3.org/2000/svg\" role=\"img\" aria-label=\"Arturo\"><rect width=\"80\" height=\"80\" fill=\"#1565c0\"/><path d=\"M10 80 Q12 56 40 54 Q68 56 70 80 Z\" fill=\"#f4efe6\"/><rect x=\"34\" y=\"44\" width=\"12\" height=\"13\" fill=\"#e4b998\"/><ellipse cx=\"40\" cy=\"34\" rx=\"14\" ry=\"16\" fill=\"#e4b998\"/><path d=\"M26 30 Q27 16 44 15 Q56 15 55 26 Q48 22 40 23 Q30 24 26 30 Z\" fill=\"#1c1a1a\"/><circle cx=\"34\" cy=\"35\" r=\"1.6\" fill=\"#2b2b2b\"/><circle cx=\"46\" cy=\"35\" r=\"1.6\" fill=\"#2b2b2b\"/><path d=\"M36 43 Q40 46 44 43\" fill=\"none\" stroke=\"#a5735a\" stroke-width=\"1.4\"/><path d=\"M33 41 Q40 37 47 41 Q40 43 33 41 Z\" fill=\"#1c1a1a\"/></svg>","solverRole":"guest","constraints":[{"type":"row","rows":[5]}]},{"id":"B","name":"Brigida","gender":"F","role":"guest","color":"#2e7d32","avatar":{"bg":"#e65100","skin":"#f6d8c0","hair":"#7a4a2a","style":"bob","shirt":"#7fc4d8","glasses":true},"clue":"그녀는 <b>테이블</b> 옆에 있었다.","job":"휴가 중인 볼로냐 출신 교사","avatarSvg":"<svg viewBox=\"0 0 80 80\" xmlns=\"http://www.w3.org/2000/svg\" role=\"img\" aria-label=\"Brigida\"><rect width=\"80\" height=\"80\" fill=\"#e65100\"/><path d=\"M22 40 Q22 14 40 14 Q58 14 58 40 L58 58 L22 58 Z\" fill=\"#7a4a2a\"/><path d=\"M10 80 Q12 56 40 54 Q68 56 70 80 Z\" fill=\"#7fc4d8\"/><rect x=\"34\" y=\"44\" width=\"12\" height=\"13\" fill=\"#f6d8c0\"/><ellipse cx=\"40\" cy=\"34\" rx=\"14\" ry=\"16\" fill=\"#f6d8c0\"/><path d=\"M26 36 Q26 16 40 16 Q54 16 54 36 Q52 24 40 24 Q28 24 26 36 Z\" fill=\"#7a4a2a\"/><circle cx=\"34\" cy=\"35\" r=\"1.6\" fill=\"#2b2b2b\"/><circle cx=\"46\" cy=\"35\" r=\"1.6\" fill=\"#2b2b2b\"/><path d=\"M36 43 Q40 46 44 43\" fill=\"none\" stroke=\"#a5735a\" stroke-width=\"1.4\"/><circle cx=\"34\" cy=\"35\" r=\"5\" fill=\"none\" stroke=\"#2b2b2b\" stroke-width=\"1.4\"/><circle cx=\"46\" cy=\"35\" r=\"5\" fill=\"none\" stroke=\"#2b2b2b\" stroke-width=\"1.4\"/><line x1=\"39\" y1=\"35\" x2=\"41\" y2=\"35\" stroke=\"#2b2b2b\" stroke-width=\"1.4\"/></svg>","solverRole":"guest","constraints":[{"type":"beside","obj":"table"}]},{"id":"C","name":"Corrado","gender":"M","role":"staff","color":"#1565c0","avatar":{"bg":"#2e7d32","skin":"#e7b98f","hair":"#3a2a1c","style":"short","shirt":"#f4efe6","apron":true,"beard":true},"clue":"그는 <b>홀</b>에 있었다. 그는 <b>의자</b>에 앉아 있었다.","job":"아이스크림 장인","avatarSvg":"<svg viewBox=\"0 0 80 80\" xmlns=\"http://www.w3.org/2000/svg\" role=\"img\" aria-label=\"Corrado\"><rect width=\"80\" height=\"80\" fill=\"#2e7d32\"/><path d=\"M10 80 Q12 56 40 54 Q68 56 70 80 Z\" fill=\"#f4efe6\"/><path d=\"M28 80 L30 62 Q40 58 50 62 L52 80 Z\" fill=\"#f4efe6\"/><rect x=\"34\" y=\"44\" width=\"12\" height=\"13\" fill=\"#e7b98f\"/><ellipse cx=\"40\" cy=\"34\" rx=\"14\" ry=\"16\" fill=\"#e7b98f\"/><path d=\"M26 32 Q26 15 40 15 Q54 15 54 32 Q50 24 40 24 Q30 24 26 32 Z\" fill=\"#3a2a1c\"/><circle cx=\"34\" cy=\"35\" r=\"1.6\" fill=\"#2b2b2b\"/><circle cx=\"46\" cy=\"35\" r=\"1.6\" fill=\"#2b2b2b\"/><path d=\"M36 43 Q40 46 44 43\" fill=\"none\" stroke=\"#a5735a\" stroke-width=\"1.4\"/><path d=\"M27 38 Q30 52 40 53 Q50 52 53 38 Q50 47 40 48 Q30 47 27 38 Z\" fill=\"#3a2a1c\"/></svg>","solverRole":"staff","constraints":[{"type":"area","areas":["Parlour"]},{"type":"on","obj":"chair"}]},{"id":"D","name":"Dafne","gender":"F","role":"staff","color":"#6a1b9a","avatar":{"bg":"#ad1457","skin":"#f3d3b5","hair":"#b7482c","style":"ponytail","shirt":"#1b1b1b","apron":true},"clue":"그녀는 <b>자전거</b> 옆에 있었다.","job":"종업원","avatarSvg":"<svg viewBox=\"0 0 80 80\" xmlns=\"http://www.w3.org/2000/svg\" role=\"img\" aria-label=\"Dafne\"><rect width=\"80\" height=\"80\" fill=\"#ad1457\"/><path d=\"M50 30 Q64 34 60 62 L54 62 Q56 40 48 36 Z\" fill=\"#b7482c\"/><path d=\"M10 80 Q12 56 40 54 Q68 56 70 80 Z\" fill=\"#1b1b1b\"/><path d=\"M28 80 L30 62 Q40 58 50 62 L52 80 Z\" fill=\"#f4efe6\"/><rect x=\"34\" y=\"44\" width=\"12\" height=\"13\" fill=\"#f3d3b5\"/><ellipse cx=\"40\" cy=\"34\" rx=\"14\" ry=\"16\" fill=\"#f3d3b5\"/><path d=\"M26 33 Q26 16 40 16 Q54 16 54 33 Q50 24 40 24 Q30 24 26 33 Z\" fill=\"#b7482c\"/><circle cx=\"34\" cy=\"35\" r=\"1.6\" fill=\"#2b2b2b\"/><circle cx=\"46\" cy=\"35\" r=\"1.6\" fill=\"#2b2b2b\"/><path d=\"M36 43 Q40 46 44 43\" fill=\"none\" stroke=\"#a5735a\" stroke-width=\"1.4\"/></svg>","solverRole":"staff","constraints":[{"type":"beside","obj":"bicycle"}]},{"id":"V","name":"Vitale","gender":"M","role":"victim","color":"#1b1b1b","avatar":{"bg":"#5a2a2a","skin":"#f1c8a5","hair":"#8a8278","style":"bald","shirt":"#2f3b4c","mustache":true,"mustacheColor":"#8a8278","glasses":true},"clue":"<b>피해자.</b> 그는 <b>테라스</b>에서, <b>파라솔</b> 옆에서 발견되었다 – 범인과 단둘이.","job":"이 가게를 노리던 부동산 개발업자","avatarSvg":"<svg viewBox=\"0 0 80 80\" xmlns=\"http://www.w3.org/2000/svg\" role=\"img\" aria-label=\"Vitale\"><rect width=\"80\" height=\"80\" fill=\"#5a2a2a\"/><path d=\"M10 80 Q12 56 40 54 Q68 56 70 80 Z\" fill=\"#2f3b4c\"/><rect x=\"34\" y=\"44\" width=\"12\" height=\"13\" fill=\"#f1c8a5\"/><ellipse cx=\"40\" cy=\"34\" rx=\"14\" ry=\"16\" fill=\"#f1c8a5\"/><path d=\"M26 30 Q26 22 30 20 L30 34 Q26 34 26 30 Z\" fill=\"#8a8278\"/><path d=\"M54 30 Q54 22 50 20 L50 34 Q54 34 54 30 Z\" fill=\"#8a8278\"/><circle cx=\"34\" cy=\"35\" r=\"1.6\" fill=\"#2b2b2b\"/><circle cx=\"46\" cy=\"35\" r=\"1.6\" fill=\"#2b2b2b\"/><path d=\"M36 43 Q40 46 44 43\" fill=\"none\" stroke=\"#a5735a\" stroke-width=\"1.4\"/><circle cx=\"34\" cy=\"35\" r=\"5\" fill=\"none\" stroke=\"#2b2b2b\" stroke-width=\"1.4\"/><circle cx=\"46\" cy=\"35\" r=\"5\" fill=\"none\" stroke=\"#2b2b2b\" stroke-width=\"1.4\"/><line x1=\"39\" y1=\"35\" x2=\"41\" y2=\"35\" stroke=\"#2b2b2b\" stroke-width=\"1.4\"/><path d=\"M33 41 Q40 37 47 41 Q40 43 33 41 Z\" fill=\"#8a8278\"/><path d=\"M12 12 L68 68 M68 12 L12 68\" stroke=\"#e0362e\" stroke-width=\"5\" stroke-linecap=\"round\" opacity=\".9\"/></svg>","solverRole":"guest","constraints":[{"type":"area","areas":["Terrace"]},{"type":"beside","obj":"umbrella"}]}],"victim":"V","murderer":"A","solution":{"B":[1,3],"C":[2,2],"V":[3,5],"D":[4,4],"A":[5,1]},"walkthrough":[{"place":["D"],"cand":{"A":[[5,1],[5,2],[5,3]],"B":[[1,3],[2,2]],"C":[[2,2]]},"text":"가장 적은 칸을 남기는 진술부터 시작하자. Dafne는 자전거(R4C5, 정원) 옆에 있었다. “옆”은 같은 구역 안의 이웃한 칸을 뜻한다. 위의 R3C5는 테라스에 속하고 아래의 R5C5는 화단이므로, 남는 칸은 R4C4뿐이다. <b>Dafne는 R4C4</b>에 있다. 4행과 4열을 지운다."},{"place":["C","B"],"cand":{"A":[[5,1]]},"text":"Corrado는 홀에서 의자에 앉아 있었다. 홀에는 의자가 두 개, R2C2와 R4C1이 있는데 4행은 Dafne의 것이므로 <b>Corrado는 R2C2</b>에 있다. Brigida는 테이블(R2C3) 옆에 있었다. 테이블의 홀 안 이웃 칸은 R1C3과 R2C2이고(R2C4와 R3C3은 테라스에 속함), R2C2는 Corrado의 것이므로 <b>Brigida는 R1C3</b>에 있다."},{"place":["A"],"cand":{},"text":"Arturo는 마지막 행에 있었다. R5C5는 화단이고 2열, 3열, 4열은 이미 찼으므로 <b>Arturo는 R5C1</b>에 있다."},{"final":true,"text":"사건 종결: 마지막 남은 칸 R3C5는 피해자의 것이다. 카드에 적힌 그대로 테라스의 파라솔 옆이었지만, 우리는 그 카드가 전혀 필요하지 않았다. Vitale은 그곳에서 옆 호텔의 주인과 단둘이 있었다. <b>Arturo가 범인이다!</b>"}],"solver":{"rules":[],"occupiable":["bench","chair"]},"verification":{"tool":"tools/murdoku_solver.py","unique":true,"guessFree":true,"checked":"2026-09-29"}}