{
  "schema": "ml-prep/item@1",
  "item": {
    "id": "original-py-alias-copy",
    "area": "programming",
    "topic": "python",
    "origin": "original",
    "title": "Aliasing and shallow copy",
    "skills": [
      "lists-tuples",
      "mutability",
      "aliasing",
      "shallow-copy"
    ],
    "priority": "core",
    "difficulty": "medium",
    "estimated_minutes": 7,
    "prerequisites": [
      "lists"
    ],
    "prompt": "Implement `alias_copy_state()`. Construct `a = [[1], [2]]`, let `b = a`, and let `c = a.copy()`. Append `3` to `a[0]`, then append `[4]` to `a`. Return `(a, b, c)`. Predict the result before running it.\n",
    "starter_code": "def alias_copy_state():\n    pass\n",
    "reference_solution": "def alias_copy_state():\n    a = [[1], [2]]\n    b = a\n    c = a.copy()\n    a[0].append(3)\n    a.append([4])\n    return a, b, c\n",
    "tests": [
      {
        "call": "alias_copy_state()",
        "expected": "([[1, 3], [2], [4]], [[1, 3], [2], [4]], [[1, 3], [2]])"
      }
    ]
  }
}