|
381 | 381 | "id": "16", |
382 | 382 | "metadata": {}, |
383 | 383 | "source": [ |
384 | | - "# Extract Questions" |
| 384 | + "# Transform into markdown" |
385 | 385 | ] |
386 | 386 | }, |
387 | 387 | { |
|
390 | 390 | "id": "17", |
391 | 391 | "metadata": {}, |
392 | 392 | "outputs": [], |
| 393 | + "source": [ |
| 394 | + "# intermediate representation of the markdown\n", |
| 395 | + "class Markdown():\n", |
| 396 | + " def __init__(self, content):\n", |
| 397 | + " self.content = content\n", |
| 398 | + "\n", |
| 399 | + "class DisplayMath(Markdown):\n", |
| 400 | + " content = \"\"\n", |
| 401 | + " \n", |
| 402 | + " def __init__(self, content):\n", |
| 403 | + " super().__init__(content)\n", |
| 404 | + "\n", |
| 405 | + " def __str__(self):\n", |
| 406 | + " return f\"$$\\n{self.content}\\n$$\"\n", |
| 407 | + " \n", |
| 408 | + " def __repr__(self):\n", |
| 409 | + " return f\"DisplayMath({self.content!r})\"\n", |
| 410 | + "\n", |
| 411 | + "class RegularText(Markdown):\n", |
| 412 | + " def __init__(self, content):\n", |
| 413 | + " super().__init__(content)\n", |
| 414 | + "\n", |
| 415 | + " def __str__(self):\n", |
| 416 | + " return self.content\n", |
| 417 | + "\n", |
| 418 | + " def __repr__(self):\n", |
| 419 | + " return f\"RegularText({self.content!r})\"\n", |
| 420 | + "\n", |
| 421 | + "\n", |
| 422 | + "def markdown_to_classes(markdown: str) -> list[Markdown]:\n", |
| 423 | + " lines = markdown.split(\"\\n\")\n", |
| 424 | + " ret = []\n", |
| 425 | + " math_buffer = []\n", |
| 426 | + " displayMath = False\n", |
| 427 | + " for line in lines:\n", |
| 428 | + " if line == \"$$\":\n", |
| 429 | + " displayMath = not displayMath\n", |
| 430 | + " if not displayMath:\n", |
| 431 | + " ret.append(DisplayMath(\"\\n\".join(math_buffer)))\n", |
| 432 | + " math_buffer = []\n", |
| 433 | + " else:\n", |
| 434 | + " if displayMath:\n", |
| 435 | + " math_buffer.append(line)\n", |
| 436 | + " else:\n", |
| 437 | + " ret.append(RegularText(line))\n", |
| 438 | + " return ret\n", |
| 439 | + "\n", |
| 440 | + "def classes_to_markdown(classes: list[Markdown]) -> str:\n", |
| 441 | + " lines = []\n", |
| 442 | + " for c in classes:\n", |
| 443 | + " lines.append(str(c))\n", |
| 444 | + " return \"\\n\".join(lines)" |
| 445 | + ] |
| 446 | + }, |
| 447 | + { |
| 448 | + "cell_type": "markdown", |
| 449 | + "id": "18", |
| 450 | + "metadata": {}, |
| 451 | + "source": [ |
| 452 | + "# Extract Questions" |
| 453 | + ] |
| 454 | + }, |
| 455 | + { |
| 456 | + "cell_type": "code", |
| 457 | + "execution_count": null, |
| 458 | + "id": "19", |
| 459 | + "metadata": {}, |
| 460 | + "outputs": [], |
393 | 461 | "source": [ |
394 | 462 | "#define initial question model\n", |
395 | 463 | "class QuestionModelLines(BaseModel):\n", |
|
506 | 574 | }, |
507 | 575 | { |
508 | 576 | "cell_type": "markdown", |
509 | | - "id": "18", |
| 577 | + "id": "20", |
510 | 578 | "metadata": {}, |
511 | 579 | "source": [ |
512 | 580 | "# extracting images from content" |
|
515 | 583 | { |
516 | 584 | "cell_type": "code", |
517 | 585 | "execution_count": null, |
518 | | - "id": "19", |
| 586 | + "id": "21", |
519 | 587 | "metadata": {}, |
520 | 588 | "outputs": [], |
521 | 589 | "source": [ |
|
531 | 599 | }, |
532 | 600 | { |
533 | 601 | "cell_type": "markdown", |
534 | | - "id": "20", |
| 602 | + "id": "22", |
535 | 603 | "metadata": {}, |
536 | 604 | "source": [ |
537 | 605 | "# extracting questions form the problem sheet" |
|
540 | 608 | { |
541 | 609 | "cell_type": "code", |
542 | 610 | "execution_count": null, |
543 | | - "id": "21", |
| 611 | + "id": "23", |
544 | 612 | "metadata": {}, |
545 | 613 | "outputs": [], |
546 | 614 | "source": [ |
|
593 | 661 | { |
594 | 662 | "cell_type": "code", |
595 | 663 | "execution_count": null, |
596 | | - "id": "22", |
| 664 | + "id": "24", |
597 | 665 | "metadata": {}, |
598 | 666 | "outputs": [], |
599 | 667 | "source": [ |
|
702 | 770 | { |
703 | 771 | "cell_type": "code", |
704 | 772 | "execution_count": null, |
705 | | - "id": "23", |
| 773 | + "id": "25", |
706 | 774 | "metadata": {}, |
707 | 775 | "outputs": [], |
708 | 776 | "source": [ |
|
739 | 807 | }, |
740 | 808 | { |
741 | 809 | "cell_type": "markdown", |
742 | | - "id": "24", |
| 810 | + "id": "26", |
743 | 811 | "metadata": {}, |
744 | 812 | "source": [ |
745 | 813 | "# Extract question parts and solutions" |
|
748 | 816 | { |
749 | 817 | "cell_type": "code", |
750 | 818 | "execution_count": null, |
751 | | - "id": "25", |
| 819 | + "id": "27", |
752 | 820 | "metadata": {}, |
753 | 821 | "outputs": [], |
754 | 822 | "source": [ |
|
807 | 875 | { |
808 | 876 | "cell_type": "code", |
809 | 877 | "execution_count": null, |
810 | | - "id": "26", |
| 878 | + "id": "28", |
811 | 879 | "metadata": {}, |
812 | 880 | "outputs": [], |
813 | 881 | "source": [ |
|
837 | 905 | { |
838 | 906 | "cell_type": "code", |
839 | 907 | "execution_count": null, |
840 | | - "id": "27", |
| 908 | + "id": "29", |
841 | 909 | "metadata": {}, |
842 | 910 | "outputs": [], |
843 | 911 | "source": [ |
|
1034 | 1102 | }, |
1035 | 1103 | { |
1036 | 1104 | "cell_type": "markdown", |
1037 | | - "id": "28", |
| 1105 | + "id": "30", |
1038 | 1106 | "metadata": {}, |
1039 | 1107 | "source": [ |
1040 | 1108 | "# remove the duplicated text for single part questions" |
|
1043 | 1111 | { |
1044 | 1112 | "cell_type": "code", |
1045 | 1113 | "execution_count": null, |
1046 | | - "id": "29", |
| 1114 | + "id": "31", |
1047 | 1115 | "metadata": {}, |
1048 | 1116 | "outputs": [], |
1049 | 1117 | "source": [ |
|
1082 | 1150 | { |
1083 | 1151 | "cell_type": "code", |
1084 | 1152 | "execution_count": null, |
1085 | | - "id": "30", |
| 1153 | + "id": "32", |
1086 | 1154 | "metadata": {}, |
1087 | 1155 | "outputs": [], |
1088 | 1156 | "source": [ |
|
1115 | 1183 | { |
1116 | 1184 | "cell_type": "code", |
1117 | 1185 | "execution_count": null, |
1118 | | - "id": "31", |
| 1186 | + "id": "33", |
1119 | 1187 | "metadata": {}, |
1120 | 1188 | "outputs": [], |
1121 | 1189 | "source": [ |
|
1124 | 1192 | }, |
1125 | 1193 | { |
1126 | 1194 | "cell_type": "markdown", |
1127 | | - "id": "32", |
| 1195 | + "id": "34", |
1128 | 1196 | "metadata": {}, |
1129 | 1197 | "source": [ |
1130 | 1198 | "# Displaying questions" |
|
1133 | 1201 | { |
1134 | 1202 | "cell_type": "code", |
1135 | 1203 | "execution_count": null, |
1136 | | - "id": "33", |
| 1204 | + "id": "35", |
1137 | 1205 | "metadata": {}, |
1138 | 1206 | "outputs": [], |
1139 | 1207 | "source": [ |
|
1160 | 1228 | }, |
1161 | 1229 | { |
1162 | 1230 | "cell_type": "markdown", |
1163 | | - "id": "34", |
| 1231 | + "id": "36", |
1164 | 1232 | "metadata": {}, |
1165 | 1233 | "source": [ |
1166 | 1234 | "# in2lambda to JSON" |
|
1169 | 1237 | { |
1170 | 1238 | "cell_type": "code", |
1171 | 1239 | "execution_count": null, |
1172 | | - "id": "35", |
| 1240 | + "id": "37", |
1173 | 1241 | "metadata": {}, |
1174 | 1242 | "outputs": [], |
1175 | 1243 | "source": [ |
|
0 commit comments