{"format":"murdoku-puzzle/1","id":"wedding-suit","iconSet":"catalogue","version":1,"difficulty":"easy","level":3,"size":{"rows":6,"cols":6},"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":"Bộ vest cưới","tagline":"Porto, tối thứ Sáu · một tiệm may trên phố Rua de Cedofeita · một bộ vest cho ngày mai và một hóa đơn tiền vải","author":"mathace","concept":"Murdoku – Manuel Garand (murdoku.com); unofficial fan-made case","created":"2026-10-19","story":"Tiệm may trên phố Rua de Cedofeita ở Porto đã may vest cưới suốt ba thế hệ. Tối thứ Sáu, thợ may bậc thầy, thợ may nữ và người học việc làm việc, còn chú rể cùng mẹ cô dâu đến chỉnh sửa lần cuối. Violeta, thương nhân vải, mang hóa đơn đến, và lúc tám giờ đã biến mất. Có sáu người trong xưởng. Violeta được tìm thấy đã chết. Hóa đơn không ai trả.","rules":{"standard":["Mỗi <b>hàng</b> và mỗi <b>cột</b> có đúng <b>một người</b>. Ngay khi đặt ai đó, hãy gạch bỏ toàn bộ hàng và cột của người ấy.","<b>“Cạnh”</b> = ngay bên trái, bên phải, bên trên hoặc bên dưới, và <b>trong cùng một khu vực</b>. Các ô có đồ vật (quầy, ma-nơ-canh, gương, các bàn, kệ, thùng gỗ, các máy may và giá treo áo) không thể ở; các ghế đẩu và ghế tựa thì được.","Phương hướng chỉ hàng và cột, không cần cùng một đường thẳng: <i>“đúng một hàng về phía bắc của anh ấy có một người phụ nữ”</i> = người ở hàng ngay phía trên là một người phụ nữ, ở bất kỳ cột nào; <i>“người ở phía bắc nhất trong khu vực của mình”</i> = không có ai khác trong khu vực của cô ấy ở hàng cao hơn.","Hung thủ <b>ở một mình với nạn nhân</b>: không có ai khác trong khu vực đó. Nạn nhân không đưa ra lời khai – ô của cô ấy cũng suy ra từ những người còn lại."],"special":[],"notes":[],"example":{}},"roleNames":{"workshop":"thành viên xưởng","customer":"khách hàng","merchant":"thương nhân","victim":"nạn nhân"},"personGroups":[{"id":"workshop","name":"Xưởng","persons":["A","B","C"]},{"id":"visitors","name":"Khách tham quan","persons":["D","E","V"]}],"map":{"groups":[],"gaps":[],"areas":[{"id":"Shop","cells":[[1,1],[1,2],[1,3],[2,1],[2,2],[2,3],[3,2],[3,3],[4,3]],"fill":"#dfe9ee","pattern":"tiles","labelAt":[1,1.5],"name":"Cửa hàng"},{"id":"Fitting Room","cells":[[1,4],[1,5],[2,4]],"fill":"#e6dcc8","pattern":"boards","labelAt":[1,4],"name":"Phòng thử đồ"},{"id":"Cutting Room","cells":[[1,6],[2,5],[2,6],[3,4],[3,5],[3,6],[4,6]],"fill":"#efd9c9","pattern":"marble","labelAt":[1,6],"name":"Phòng cắt"},{"id":"Stockroom","cells":[[3,1],[4,1],[4,2],[5,1],[6,1],[6,2]],"fill":"#f2e6c8","pattern":"planks","labelAt":[3,1],"name":"Kho"},{"id":"Sewing Room","cells":[[4,4],[4,5],[5,2],[5,3],[5,4],[5,5],[6,3]],"fill":"#d5e6d8","pattern":"tiles","labelAt":[4,4.5],"name":"Phòng may"},{"id":"Pressing Room","cells":[[5,6],[6,4],[6,5],[6,6]],"fill":"#d9d6e0","pattern":"tiles","labelAt":[5,6],"name":"Phòng ủi"}],"objectTypes":{"counter":{"occupiable":false,"name":"quầy","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\"/>"},"mannequin":{"occupiable":false,"name":"ma-nơ-canh","icon":"<circle cx=\"23\" cy=\"8\" r=\"4\" fill=\"#d9d5cc\" stroke=\"#8c8a82\"/><path d=\"M15 14 h16 l3 16 h-22 z\" fill=\"#c8536a\" stroke=\"#7a2a3c\" stroke-width=\"1.2\"/><line x1=\"23\" y1=\"30\" x2=\"23\" y2=\"40\" stroke=\"#5b5852\" stroke-width=\"2.5\"/><line x1=\"15\" y1=\"41\" x2=\"31\" y2=\"41\" stroke=\"#5b5852\" stroke-width=\"2.5\"/>"},"mirror":{"occupiable":false,"name":"gương","icon":"<rect x=\"12\" y=\"4\" width=\"22\" height=\"38\" rx=\"9\" fill=\"#c9a03a\" stroke=\"#7a5a12\" stroke-width=\"1.5\"/><rect x=\"15\" y=\"7\" width=\"16\" height=\"32\" rx=\"7\" fill=\"#dfe9ee\"/><path d=\"M19 11 q-3 8 0 20\" fill=\"none\" stroke=\"#ffffff\" stroke-width=\"2.5\" opacity=\".8\"/>"},"stool":{"occupiable":true,"name":"ghế đẩu","icon":"<circle cx=\"23\" cy=\"23\" r=\"11\" fill=\"#fbfaf6\" stroke=\"#8c8a82\" stroke-width=\"1.5\"/><circle cx=\"23\" cy=\"23\" r=\"5\" fill=\"#d9d5cc\"/>"},"table":{"occupiable":false,"name":"bàn","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\"/>","iconTall":"<rect x=\"7\" y=\"7\" width=\"32\" height=\"78\" rx=\"5\" fill=\"#b98a5a\" stroke=\"#6e4d2c\" stroke-width=\"1.5\"/><rect x=\"12\" y=\"12\" width=\"22\" height=\"68\" rx=\"3\" fill=\"#d1a675\"/>"},"shelf":{"occupiable":false,"name":"kệ","icon":"<rect x=\"8\" y=\"5\" width=\"30\" height=\"36\" fill=\"#8f6a44\" stroke=\"#5e4127\" stroke-width=\"1.5\"/><rect x=\"11\" y=\"9\" width=\"24\" height=\"8\" fill=\"#e6cfa8\"/><rect x=\"11\" y=\"20\" width=\"24\" height=\"8\" fill=\"#d4b98f\"/><rect x=\"11\" y=\"31\" width=\"24\" height=\"8\" fill=\"#e6cfa8\"/>"},"crate":{"occupiable":false,"name":"thùng gỗ","icon":"<rect x=\"6\" y=\"10\" width=\"34\" height=\"30\" fill=\"#b98a5a\" stroke=\"#6e4d2c\" stroke-width=\"1.5\"/><line x1=\"6\" y1=\"20\" x2=\"40\" y2=\"20\" stroke=\"#6e4d2c\" stroke-width=\"1.5\"/><line x1=\"6\" y1=\"30\" x2=\"40\" y2=\"30\" stroke=\"#6e4d2c\" stroke-width=\"1.5\"/><line x1=\"17\" y1=\"10\" x2=\"17\" y2=\"40\" stroke=\"#6e4d2c\" stroke-width=\"1.5\"/><line x1=\"29\" y1=\"10\" x2=\"29\" y2=\"40\" stroke=\"#6e4d2c\" stroke-width=\"1.5\"/>"},"sewing":{"occupiable":false,"name":"máy may","icon":"<rect x=\"6\" y=\"30\" width=\"34\" height=\"10\" rx=\"2\" fill=\"#b98a5a\" stroke=\"#6e4d2c\" stroke-width=\"1.5\"/><path d=\"M11 30 v-16 h8 v8 h12 v-10 h6 v18 z\" fill=\"#3d444b\" stroke=\"#161c25\" stroke-width=\"1.2\"/><circle cx=\"34\" cy=\"17\" r=\"3\" fill=\"#9aa1a8\"/>"},"chair":{"occupiable":true,"name":"ghế tựa","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\"/>"},"rack":{"occupiable":false,"name":"giá treo áo","icon":"<line x1=\"6\" y1=\"10\" x2=\"40\" y2=\"10\" stroke=\"#5b5852\" stroke-width=\"3\"/><line x1=\"9\" y1=\"10\" x2=\"9\" y2=\"40\" stroke=\"#5b5852\" stroke-width=\"2.5\"/><line x1=\"37\" y1=\"10\" x2=\"37\" y2=\"40\" stroke=\"#5b5852\" stroke-width=\"2.5\"/><path d=\"M15 14 v2 h8 v14 h-8 z\" fill=\"#c8536a\"/><path d=\"M25 14 v2 h7 v12 h-7 z\" fill=\"#3a6fb0\"/><line x1=\"19\" y1=\"10\" x2=\"19\" y2=\"14\" stroke=\"#333\"/><line x1=\"28\" y1=\"10\" x2=\"28\" y2=\"14\" stroke=\"#333\"/>"}},"wallTypes":{},"objects":[{"cell":[1,1],"type":"counter"},{"cell":[1,5],"type":"mirror"},{"cell":[2,2],"type":"mannequin"},{"cell":[2,3],"type":"stool"},{"cell":[2,6],"type":"table"},{"cell":[3,5],"type":"stool"},{"cell":[3,6],"type":"table"},{"cell":[4,5],"type":"sewing"},{"cell":[5,1],"type":"shelf"},{"cell":[5,3],"type":"sewing"},{"cell":[5,4],"type":"chair"},{"cell":[6,2],"type":"crate"},{"cell":[6,6],"type":"rack"}],"wallFeatures":[],"extras":[],"cellSize":46},"persons":[{"id":"A","name":"Albano","gender":"M","role":"workshop","color":"#c62828","avatar":{"bg":"#2f4858","skin":"#c98d62","hair":"#1c1a1a","style":"short","beard":true,"shirt":"#c62828"},"clue":"<b>Gương</b> ở đâu đó trong <b>hàng</b> của anh ấy. <b>Giá treo áo</b> ở đâu đó trong <b>cột</b> của anh ấy.","job":"thợ may bậc thầy","avatarSvg":"<svg viewBox=\"0 0 80 80\" xmlns=\"http://www.w3.org/2000/svg\" role=\"img\" aria-label=\"Albano\"><rect width=\"80\" height=\"80\" fill=\"#2f4858\"/><path d=\"M10 80 Q12 56 40 54 Q68 56 70 80 Z\" fill=\"#c62828\"/><rect x=\"34\" y=\"44\" width=\"12\" height=\"13\" fill=\"#c98d62\"/><ellipse cx=\"40\" cy=\"34\" rx=\"14\" ry=\"16\" fill=\"#c98d62\"/><path d=\"M26 32 Q26 15 40 15 Q54 15 54 32 Q50 24 40 24 Q30 24 26 32 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=\"M27 38 Q30 52 40 53 Q50 52 53 38 Q50 47 40 48 Q30 47 27 38 Z\" fill=\"#1c1a1a\"/></svg>","solverRole":"workshop","constraints":[{"type":"row_has","obj":"mirror"},{"type":"col_has","obj":"rack"}]},{"id":"B","name":"Benedita","gender":"F","role":"workshop","color":"#1565c0","avatar":{"bg":"#5b2c6f","skin":"#f0cdb0","hair":"#2a1c14","style":"ponytail","headband":"#ffffff","shirt":"#1565c0"},"clue":"<b>Ma-nơ-canh</b> ở đâu đó trong khu vực của cô ấy.","job":"thợ may nữ","avatarSvg":"<svg viewBox=\"0 0 80 80\" xmlns=\"http://www.w3.org/2000/svg\" role=\"img\" aria-label=\"Benedita\"><rect width=\"80\" height=\"80\" fill=\"#5b2c6f\"/><path d=\"M50 30 Q64 34 60 62 L54 62 Q56 40 48 36 Z\" fill=\"#2a1c14\"/><path d=\"M10 80 Q12 56 40 54 Q68 56 70 80 Z\" fill=\"#1565c0\"/><rect x=\"34\" y=\"44\" width=\"12\" height=\"13\" fill=\"#f0cdb0\"/><ellipse cx=\"40\" cy=\"34\" rx=\"14\" ry=\"16\" fill=\"#f0cdb0\"/><path d=\"M26 33 Q26 16 40 16 Q54 16 54 33 Q50 24 40 24 Q30 24 26 33 Z\" fill=\"#2a1c14\"/><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\"/><rect x=\"26\" y=\"23\" width=\"28\" height=\"5\" rx=\"2\" fill=\"#ffffff\"/></svg>","solverRole":"workshop","constraints":[{"type":"area_has","obj":"mannequin"}]},{"id":"C","name":"Cândido","gender":"M","role":"workshop","color":"#2e7d32","avatar":{"bg":"#1b2a33","skin":"#f1c8a5","hair":"#5a5a5a","style":"slick","mustache":true,"mustacheColor":"#5a5a5a","shirt":"#2e7d32"},"clue":"Anh ấy là <b>người đàn ông duy nhất</b> ở cạnh <b>ghế tựa</b>.","job":"người học việc","avatarSvg":"<svg viewBox=\"0 0 80 80\" xmlns=\"http://www.w3.org/2000/svg\" role=\"img\" aria-label=\"Cândido\"><rect width=\"80\" height=\"80\" fill=\"#1b2a33\"/><path d=\"M10 80 Q12 56 40 54 Q68 56 70 80 Z\" fill=\"#2e7d32\"/><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 Q27 16 44 15 Q56 15 55 26 Q48 22 40 23 Q30 24 26 30 Z\" fill=\"#5a5a5a\"/><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=\"#5a5a5a\"/></svg>","solverRole":"workshop","constraints":[{"type":"only_beside","obj":"chair","gender":"M"}]},{"id":"D","name":"Delfina","gender":"F","role":"customer","color":"#6a1b9a","avatar":{"bg":"#6e2c4b","skin":"#e7b98f","hair":"#1c1a1a","style":"bun","earrings":true,"shirt":"#6a1b9a"},"clue":"Cô ấy ở trong <b>Phòng thử đồ</b>.","job":"mẹ cô dâu","avatarSvg":"<svg viewBox=\"0 0 80 80\" xmlns=\"http://www.w3.org/2000/svg\" role=\"img\" aria-label=\"Delfina\"><rect width=\"80\" height=\"80\" fill=\"#6e2c4b\"/><path d=\"M10 80 Q12 56 40 54 Q68 56 70 80 Z\" fill=\"#6a1b9a\"/><rect x=\"34\" y=\"44\" width=\"12\" height=\"13\" fill=\"#e7b98f\"/><ellipse cx=\"40\" cy=\"34\" rx=\"14\" ry=\"16\" fill=\"#e7b98f\"/><circle cx=\"40\" cy=\"15\" r=\"7\" fill=\"#1c1a1a\"/><path d=\"M26 32 Q26 16 40 16 Q54 16 54 32 Q50 24 40 24 Q30 24 26 32 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\"/><circle cx=\"26\" cy=\"41\" r=\"1.8\" fill=\"#f0c95a\"/><circle cx=\"54\" cy=\"41\" r=\"1.8\" fill=\"#f0c95a\"/></svg>","solverRole":"customer","constraints":[{"type":"area","areas":["Fitting Room"]}]},{"id":"E","name":"Ernesto","gender":"M","role":"customer","color":"#e65100","avatar":{"bg":"#3d5a6e","skin":"#e9bf9b","hair":"#2a1c14","style":"short","cap":true,"beard":true,"shirt":"#e65100"},"clue":"Anh ấy <b>không</b> ở cạnh <b>kệ</b>. Anh ấy ở <b>đúng một hàng về phía nam của Benedita</b>.","job":"chú rể","avatarSvg":"<svg viewBox=\"0 0 80 80\" xmlns=\"http://www.w3.org/2000/svg\" role=\"img\" aria-label=\"Ernesto\"><rect width=\"80\" height=\"80\" fill=\"#3d5a6e\"/><path d=\"M10 80 Q12 56 40 54 Q68 56 70 80 Z\" fill=\"#e65100\"/><rect x=\"34\" y=\"44\" width=\"12\" height=\"13\" fill=\"#e9bf9b\"/><ellipse cx=\"40\" cy=\"34\" rx=\"14\" ry=\"16\" fill=\"#e9bf9b\"/><path d=\"M26 32 Q26 15 40 15 Q54 15 54 32 Q50 24 40 24 Q30 24 26 32 Z\" fill=\"#2a1c14\"/><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=\"#2a1c14\"/><path d=\"M24 24 Q24 11 40 11 Q56 11 56 24 Z\" fill=\"#22406f\"/><rect x=\"22\" y=\"22\" width=\"36\" height=\"5\" rx=\"2\" fill=\"#12213a\"/><circle cx=\"40\" cy=\"18\" r=\"2.6\" fill=\"#f0b429\"/></svg>","solverRole":"customer","constraints":[{"type":"not_beside","obj":"shelf"},{"type":"rel","q":"B","dir":"S","exact":1}]},{"id":"V","name":"Violeta","gender":"F","role":"victim","color":"#1b1b1b","avatar":{"bg":"#35607a","skin":"#f3d3b5","hair":"#d9b464","style":"long","necklace":true,"shirt":"#1b1b1b"},"clue":"<b>Nạn nhân.</b> Cô ấy ở một mình với hung thủ.","job":"thương nhân vải","avatarSvg":"<svg viewBox=\"0 0 80 80\" xmlns=\"http://www.w3.org/2000/svg\" role=\"img\" aria-label=\"Violeta\"><rect width=\"80\" height=\"80\" fill=\"#35607a\"/><path d=\"M22 42 Q20 14 40 14 Q60 14 58 42 L62 72 L18 72 Z\" fill=\"#d9b464\"/><path d=\"M10 80 Q12 56 40 54 Q68 56 70 80 Z\" fill=\"#1b1b1b\"/><path d=\"M31 58 Q40 66 49 58\" fill=\"none\" stroke=\"#f3e2b3\" stroke-width=\"2\" stroke-dasharray=\"2 2\"/><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 36 Q26 16 40 16 Q54 16 54 36 Q52 24 40 24 Q28 24 26 36 Z\" fill=\"#d9b464\"/><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=\"M12 12 L68 68 M68 12 L12 68\" stroke=\"#e0362e\" stroke-width=\"5\" stroke-linecap=\"round\" opacity=\".9\"/></svg>","solverRole":"merchant","constraints":[]}],"victim":"V","solver":{"rules":[],"occupiable":["stool","chair"]},"score":1.0115,"seal":{"board":"2a69ea83cb373bb0e7a3ffcb13899bdb39b57a338b55877f7e67fb1e23ab84b4","murderer":"606b06a7c7bb691c9f6675a14df3e4693d36b3eac4c80bafc175c97a9fd0e101"}}