{"format":"murdoku-puzzle/1","id":"tacotruck","version":1,"difficulty":"very-easy","level":2,"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":"Xe bán tacos","tagline":"Quảng trường ở Oaxaca · tối thứ Sáu tháng Năm · chiếc taco cuối cùng của đêm","author":"mathace","concept":"Murdoku – Manuel Garand (murdoku.com); unofficial fan-made case","created":"2026-10-24","story":"Oaxaca, một tối thứ Sáu ấm áp tháng Năm. Chiếc xe bán tacos nhỏ trên quảng trường vừa bán xong những chiếc tacos al pastor cuối cùng, bếp nướng đang nguội dần, và những vị khách cuối cùng đang uống nốt cốc horchata dưới những dải cờ giấy. Bỗng một tiếng thét vang lên: Virgilio, người bán mezcal nợ tiền tất cả mọi người, được phát hiện đã chết. Ban nhạc chưa bao giờ chơi bài cuối cùng của mình.","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 (bếp nướng, quầy, xe elote, thùng giữ lạnh, bàn, đài phun nước và cây) không thể ở; ghế đẩu và băng ghế thì được.","Hung thủ <b>ở một mình với nạn nhân</b>: không có ai khác trong khu vực đó."],"special":[],"notes":["<i>“ngồi”</i> = ở trên ghế đẩu hoặc băng ghế."],"example":{}},"roleNames":{"crew":"nhân viên","customer":"khách hàng","victim":"nạn nhân"},"personGroups":[{"id":"crew","name":"Nhân viên","persons":["A","B"]},{"id":"customers","name":"Khách hàng","persons":["C","D","E","V"]}],"map":{"groups":[],"gaps":[],"areas":[{"id":"Kitchen","cells":[[1,1],[1,2],[1,3],[2,1],[2,2]],"fill":"#e3dfd6","pattern":"tiles","name":"Nhà bếp"},{"id":"Queue","cells":[[1,4],[2,3],[2,4],[3,1],[3,2],[3,3]],"fill":"#efe0c2","pattern":"boards","name":"Cửa nhận món"},{"id":"Picnic Area","cells":[[3,4],[3,5],[4,1],[4,2],[4,3],[4,4],[5,1],[5,2],[6,1]],"fill":"#dcebcd","pattern":"planks","name":"Khu picnic"},{"id":"Plaza","cells":[[1,5],[1,6],[2,5],[2,6],[3,6],[4,5],[4,6],[5,3],[5,4],[5,5],[5,6],[6,2],[6,3],[6,4],[6,5],[6,6]],"fill":"#ecdcc8","pattern":"marble","name":"Quảng trường"}],"objectTypes":{"bench":{"occupiable":true,"name":"băng ghế","icon":"<rect x=\"2\" y=\"13\" width=\"42\" height=\"21\" rx=\"3.5\" fill=\"#fbfaf6\" stroke=\"#8c8a82\" stroke-width=\"1.5\"/><rect x=\"2\" y=\"13\" width=\"42\" height=\"7\" rx=\"3\" fill=\"#d9d5cc\" stroke=\"#8c8a82\" stroke-width=\"1.5\"/><line x1=\"16\" y1=\"20\" x2=\"16\" y2=\"34\" stroke=\"#a9a49a\" stroke-width=\"1.3\"/><line x1=\"30\" y1=\"20\" x2=\"30\" y2=\"34\" stroke=\"#a9a49a\" stroke-width=\"1.3\"/>"},"cart":{"occupiable":false,"name":"xe elote","icon":"<rect x=\"8\" y=\"12\" width=\"30\" height=\"16\" rx=\"2\" fill=\"#8a5a34\" stroke=\"#3f2d1d\" stroke-width=\"1.3\"/><circle cx=\"15\" cy=\"34\" r=\"5\" fill=\"#2b2b2b\"/><circle cx=\"31\" cy=\"34\" r=\"5\" fill=\"#2b2b2b\"/><path d=\"M38 20 h6\" stroke=\"#3f2d1d\" stroke-width=\"2.5\"/>"},"cooler":{"occupiable":false,"name":"thùng giữ lạnh","icon":"<rect x=\"7\" y=\"14\" width=\"32\" height=\"26\" rx=\"4\" fill=\"#3d7dc8\" stroke=\"#1f4a80\" stroke-width=\"1.5\"/><rect x=\"5\" y=\"9\" width=\"36\" height=\"9\" rx=\"3\" fill=\"#e9f0f7\" stroke=\"#1f4a80\" stroke-width=\"1.5\"/><rect x=\"18\" y=\"5\" width=\"10\" height=\"5\" rx=\"2\" fill=\"#1f4a80\"/><rect x=\"12\" y=\"24\" width=\"22\" height=\"4\" rx=\"2\" fill=\"#e9f0f7\" opacity=\".8\"/>"},"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\"/>"},"fountain":{"occupiable":false,"name":"đài phun nước","icon":"<ellipse cx=\"23\" cy=\"33\" rx=\"18\" ry=\"8\" fill=\"#9fd3ea\" stroke=\"#4a7c95\" stroke-width=\"1.5\"/><rect x=\"19\" y=\"14\" width=\"8\" height=\"18\" fill=\"#b9b6ae\" stroke=\"#5b5852\"/><ellipse cx=\"23\" cy=\"14\" rx=\"10\" ry=\"4\" fill=\"#9fd3ea\" stroke=\"#4a7c95\"/><path d=\"M23 4 q-6 6 -4 10 M23 4 q6 6 4 10\" fill=\"none\" stroke=\"#7fb8d0\" stroke-width=\"2\"/>"},"grill":{"occupiable":false,"name":"bếp nướng","icon":"<rect x=\"5\" y=\"14\" width=\"36\" height=\"20\" rx=\"2\" fill=\"#4a4a4a\" stroke=\"#222\" stroke-width=\"1.5\"/><rect x=\"8\" y=\"17\" width=\"30\" height=\"10\" fill=\"#2a1c16\"/><circle cx=\"13\" cy=\"23\" r=\"2.2\" fill=\"#ff7a2e\"/><circle cx=\"21\" cy=\"21\" r=\"2\" fill=\"#ffb03c\"/><circle cx=\"29\" cy=\"24\" r=\"2.3\" fill=\"#ff7a2e\"/><circle cx=\"34\" cy=\"20\" r=\"1.6\" fill=\"#ffb03c\"/><path d=\"M8 16 h30 M8 19.5 h30 M8 23 h30 M8 26.5 h30\" stroke=\"#b9b9b9\" stroke-width=\"1.1\"/><rect x=\"7\" y=\"34\" width=\"3\" height=\"8\" fill=\"#333\"/><rect x=\"36\" y=\"34\" width=\"3\" height=\"8\" fill=\"#333\"/><path d=\"M15 12 q2 -4 0 -8 M23 12 q2 -4 0 -8 M31 12 q2 -4 0 -8\" fill=\"none\" stroke=\"#9aa0a6\" stroke-width=\"1.5\" stroke-linecap=\"round\"/>"},"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\"/>"},"tree":{"occupiable":false,"name":"cây","icon":"<rect x=\"20\" y=\"28\" width=\"6\" height=\"14\" rx=\"1\" fill=\"#6e4a2a\"/><circle cx=\"23\" cy=\"19\" r=\"13\" fill=\"#3f8a4a\" stroke=\"#2c5e33\" stroke-width=\"1.5\"/><circle cx=\"16\" cy=\"23\" r=\"7\" fill=\"#57a35e\"/><circle cx=\"30\" cy=\"14\" r=\"7\" fill=\"#57a35e\"/>"}},"wallTypes":{},"objects":[{"cell":[1,1],"type":"grill"},{"cell":[1,6],"type":"tree"},{"cell":[2,2],"type":"counter"},{"cell":[2,3],"type":"stool"},{"cell":[2,4],"type":"stool"},{"cell":[2,5],"type":"cart"},{"cell":[3,1],"type":"cooler"},{"cell":[4,2],"type":"table"},{"cell":[4,3],"type":"bench"},{"cell":[4,4],"type":"table"},{"cell":[5,2],"type":"bench"},{"cell":[5,5],"type":"fountain"},{"cell":[6,3],"type":"tree"}],"wallFeatures":[],"extras":[],"cellSize":46},"persons":[{"id":"A","name":"Alejandra","gender":"F","role":"crew","color":"#c62828","avatar":{"bg":"#c62828","skin":"#c99067","hair":"#1c1a1a","style":"ponytail","shirt":"#8e2a2a","apron":true,"earrings":true},"clue":"Cô ấy ở cạnh <b>thùng giữ lạnh</b>.","job":"taquera, chủ chiếc xe","avatarSvg":"<svg viewBox=\"0 0 80 80\" xmlns=\"http://www.w3.org/2000/svg\" role=\"img\" aria-label=\"Alejandra\"><rect width=\"80\" height=\"80\" fill=\"#c62828\"/><path d=\"M50 30 Q64 34 60 62 L54 62 Q56 40 48 36 Z\" fill=\"#1c1a1a\"/><path d=\"M10 80 Q12 56 40 54 Q68 56 70 80 Z\" fill=\"#8e2a2a\"/><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=\"#c99067\"/><ellipse cx=\"40\" cy=\"34\" rx=\"14\" ry=\"16\" fill=\"#c99067\"/><path d=\"M26 33 Q26 16 40 16 Q54 16 54 33 Q50 24 40 24 Q30 24 26 33 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":"crew","constraints":[{"type":"beside","obj":"cooler"}]},{"id":"B","name":"Bartolo","gender":"M","role":"crew","color":"#2e7d32","avatar":{"bg":"#2e7d32","skin":"#c48a5c","hair":"#2a1c14","style":"short","shirt":"#3a7d44","apron":true},"clue":"Anh ấy ở trong <b>Khu picnic</b>.","job":"cháu trai của cô, người ghi đơn gọi món","avatarSvg":"<svg viewBox=\"0 0 80 80\" xmlns=\"http://www.w3.org/2000/svg\" role=\"img\" aria-label=\"Bartolo\"><rect width=\"80\" height=\"80\" fill=\"#2e7d32\"/><path d=\"M10 80 Q12 56 40 54 Q68 56 70 80 Z\" fill=\"#3a7d44\"/><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=\"#c48a5c\"/><ellipse cx=\"40\" cy=\"34\" rx=\"14\" ry=\"16\" fill=\"#c48a5c\"/><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\"/></svg>","solverRole":"crew","constraints":[{"type":"area","areas":["Picnic Area"]}]},{"id":"C","name":"Citlali","gender":"F","role":"customer","color":"#00897b","avatar":{"bg":"#00897b","skin":"#d9a57a","hair":"#3a2a1c","style":"bob","shirt":"#26a69a","glasses":true},"clue":"Cô ấy <b>không</b> ở cạnh <b>xe elote</b>. Cô ấy <b>không</b> ở cạnh <b>đài phun nước</b>.","job":"một giáo viên tiểu học","avatarSvg":"<svg viewBox=\"0 0 80 80\" xmlns=\"http://www.w3.org/2000/svg\" role=\"img\" aria-label=\"Citlali\"><rect width=\"80\" height=\"80\" fill=\"#00897b\"/><path d=\"M22 40 Q22 14 40 14 Q58 14 58 40 L58 58 L22 58 Z\" fill=\"#3a2a1c\"/><path d=\"M10 80 Q12 56 40 54 Q68 56 70 80 Z\" fill=\"#26a69a\"/><rect x=\"34\" y=\"44\" width=\"12\" height=\"13\" fill=\"#d9a57a\"/><ellipse cx=\"40\" cy=\"34\" rx=\"14\" ry=\"16\" fill=\"#d9a57a\"/><path d=\"M26 36 Q26 16 40 16 Q54 16 54 36 Q52 24 40 24 Q28 24 26 36 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\"/><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":"customer","constraints":[{"type":"not_beside","obj":"cart"},{"type":"not_beside","obj":"fountain"}]},{"id":"D","name":"Dorotea","gender":"F","role":"customer","color":"#6a1b9a","avatar":{"bg":"#6a1b9a","skin":"#c99067","hair":"#b8b2aa","style":"bun","shirt":"#7b3f9e","scarf":"#9c4dcc"},"clue":"Cô ấy ở <b>cột đầu tiên</b>.","job":"nghệ sĩ kèn trumpet của ban nhạc kèn đồng ở quảng trường","avatarSvg":"<svg viewBox=\"0 0 80 80\" xmlns=\"http://www.w3.org/2000/svg\" role=\"img\" aria-label=\"Dorotea\"><rect width=\"80\" height=\"80\" fill=\"#6a1b9a\"/><path d=\"M10 80 Q12 56 40 54 Q68 56 70 80 Z\" fill=\"#7b3f9e\"/><rect x=\"34\" y=\"44\" width=\"12\" height=\"13\" fill=\"#c99067\"/><ellipse cx=\"40\" cy=\"34\" rx=\"14\" ry=\"16\" fill=\"#c99067\"/><circle cx=\"40\" cy=\"15\" r=\"7\" fill=\"#b8b2aa\"/><path d=\"M26 32 Q26 16 40 16 Q54 16 54 32 Q50 24 40 24 Q30 24 26 32 Z\" fill=\"#b8b2aa\"/><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=\"M30 58 Q40 70 50 58 L48 66 Q40 76 32 66 Z\" fill=\"#9c4dcc\"/></svg>","solverRole":"customer","constraints":[{"type":"col","cols":[1]}]},{"id":"E","name":"Efraín","gender":"M","role":"customer","color":"#e65100","avatar":{"bg":"#e65100","skin":"#c48a5c","hair":"#1c1a1a","style":"slick","shirt":"#f2a65a","mustache":true,"mustacheColor":"#1c1a1a"},"clue":"Anh ấy ngồi trên một <b>ghế đẩu</b>.","job":"một tài xế taxi","avatarSvg":"<svg viewBox=\"0 0 80 80\" xmlns=\"http://www.w3.org/2000/svg\" role=\"img\" aria-label=\"Efraín\"><rect width=\"80\" height=\"80\" fill=\"#e65100\"/><path d=\"M10 80 Q12 56 40 54 Q68 56 70 80 Z\" fill=\"#f2a65a\"/><rect x=\"34\" y=\"44\" width=\"12\" height=\"13\" fill=\"#c48a5c\"/><ellipse cx=\"40\" cy=\"34\" rx=\"14\" ry=\"16\" fill=\"#c48a5c\"/><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":"customer","constraints":[{"type":"on","obj":"stool"}]},{"id":"V","name":"Virgilio","gender":"M","role":"victim","color":"#1b1b1b","avatar":{"bg":"#4a3a30","skin":"#c99067","hair":"#5a5a5a","style":"bald","shirt":"#4e342e","beard":true},"clue":"<b>Nạn nhân.</b> Anh ấy được tìm thấy trên <b>Quảng trường</b>, cạnh một <b>cây</b> – một mình với hung thủ.","job":"một người bán mezcal","avatarSvg":"<svg viewBox=\"0 0 80 80\" xmlns=\"http://www.w3.org/2000/svg\" role=\"img\" aria-label=\"Virgilio\"><rect width=\"80\" height=\"80\" fill=\"#4a3a30\"/><path d=\"M10 80 Q12 56 40 54 Q68 56 70 80 Z\" fill=\"#4e342e\"/><rect x=\"34\" y=\"44\" width=\"12\" height=\"13\" fill=\"#c99067\"/><ellipse cx=\"40\" cy=\"34\" rx=\"14\" ry=\"16\" fill=\"#c99067\"/><path d=\"M26 30 Q26 22 30 20 L30 34 Q26 34 26 30 Z\" fill=\"#5a5a5a\"/><path d=\"M54 30 Q54 22 50 20 L50 34 Q54 34 54 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=\"M27 38 Q30 52 40 53 Q50 52 53 38 Q50 47 40 48 Q30 47 27 38 Z\" fill=\"#5a5a5a\"/><path d=\"M12 12 L68 68 M68 12 L12 68\" stroke=\"#e0362e\" stroke-width=\"5\" stroke-linecap=\"round\" opacity=\".9\"/></svg>","solverRole":"customer","constraints":[{"type":"area","areas":["Plaza"]},{"type":"beside","obj":"tree"}]}],"victim":"V","murderer":"C","solution":{"V":[1,5],"E":[2,4],"A":[3,2],"B":[4,3],"D":[5,1],"C":[6,6]},"walkthrough":[{"place":["A"],"cand":{"B":[[4,1],[4,3],[5,1],[6,1]],"C":[[1,3],[1,4],[2,1],[2,3],[2,4],[4,1],[4,3],[4,6],[5,1],[5,3],[6,1],[6,4],[6,6]],"D":[[2,1],[4,1],[5,1],[6,1]],"E":[[2,3],[2,4]]},"text":"Alejandra was beside the cooler (R3C1, in the Queue). Of its neighbours, R2C1 belongs to the Kitchen and R4C1 to the Picnic Area – only R3C2 is in the Queue. So <b>Alejandra is at R3C2</b>: cross out row 3 and column 2."},{"place":["B"],"cand":{"C":[[1,4],[6,4],[6,6]],"D":[[5,1],[6,1]],"E":[[2,4]]},"text":"Dorotea was in the first column, so column 1 is hers – nobody else can be there. Efraín was sitting on a stool, and both of them (R2C3, R2C4) are in row 2, so row 2 is his. Bartolo was in the Picnic Area: R3C4 and R3C5 are in Alejandra's row, R5C2 in her column, R4C1, R5C1 and R6C1 in Dorotea's column (R4C2 and R4C4 are tables). Only the bench is left: <b>Bartolo is at R4C3</b>."},{"place":["E","C"],"cand":{"D":[[5,1]]},"text":"Column 3 is Bartolo's now, so Efraín cannot use the stool at R2C3: <b>Efraín is at R2C4</b>. Citlali was not beside the elote cart and not beside the fountain. Rows 1, 5, 6 and columns 5, 6 are left for her (column 1 is Dorotea's): R1C5 is beside the elote cart, R5C6 and R6C5 are beside the fountain, R1C6 is a tree and R5C5 the fountain itself. <b>Citlali is at R6C6</b>."},{"place":["D"],"cand":{},"text":"Only rows 1 and 5 are free. In Dorotea's column 1, R1C1 is the grill: <b>Dorotea is at R5C1</b>."},{"final":true,"text":"Case closed: the last free square, R1C5, is the victim's – on the Plaza, beside a tree, just as his card says, although we never needed it. The only other person on the Plaza is Citlali, at R6C6. <b>Citlali is the murderer!</b>"}],"solver":{"rules":[],"occupiable":["bench","stool"]},"verification":{"tool":"tools/murdoku_solver.py","unique":true,"guessFree":true,"checked":"2026-10-24"},"score":0.001}