qsharp-lang 0.1.0-dev.1 → 1.0.5-dev

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -11,8 +11,8 @@ export default {
11
11
  "items": [
12
12
  {
13
13
  "type": "text-content",
14
- "asHtml": "<p>kaˑ ta | kah-tuh\n<em>The japanese word for &quot;form&quot;, a pattern of learning and practicing new skills.</em></p>\n<style>\n.transparent {\n background: rgba(0, 0, 0, 0.0) !important;\n}\n</style>\n<table>\n <tbody>\n <tr class=\"transparent\" style=\"border:none;\">\n <td rowspan=\"2\" style=\"border:none;\">\n<svg width=\"60\" height=\"60\" viewBox=\"0 0 60 60\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n<path d=\"M9.8217 47.3824L24.8211 56.6477C28.0044 58.614 31.9943 58.614 35.1776 56.6477L50.1776 47.3823C53.1025 45.5756 54.9447 42.2482 54.9988 38.8089L54.9998 38.7205L55 38.6532V21.4635C55 17.892 53.1703 14.5804 50.1756 12.7319L35.1756 3.47308C32.0922 1.56982 28.2527 1.51086 25.1224 3.29619C21.6795 5.40493 18.2269 7.53883 14.7882 9.66472C13.1339 10.6874 11.4796 11.7102 9.82439 12.7312C6.82974 14.5797 5 17.8913 5 21.4628V38.6525C5 42.2229 6.82857 45.5336 9.8217 47.3824ZM26.6114 39.2349L17.9869 44.7687C16.3555 45.8154 14.288 45.8453 12.6282 44.8461L11.6711 44.2646C9.74699 43.0761 8.57144 40.9477 8.57144 38.6525V21.4628C8.57144 19.1672 9.74734 17.0386 11.672 15.8502C13.3329 14.8257 14.9905 13.8008 16.6456 12.7776L16.6473 12.7766C17.8068 12.0597 18.9658 11.3432 20.1244 10.6277C20.0405 11.1621 19.9973 11.7071 19.9973 12.2581V25.4847H20.0007V29.4C20.0007 32.9703 21.8293 36.281 24.8225 38.1299L26.6114 39.2349ZM51.4286 21.4635V31.1833C51.0515 30.8728 50.6487 30.5893 50.2222 30.3364L38.5843 23.4349L35.1764 21.3313C31.9944 19.3672 28.0071 19.3672 24.8251 21.3313L23.5687 22.1068V12.2581C23.5687 9.98662 24.7051 7.8762 26.5751 6.65704L26.9077 6.45332C28.9117 5.33069 31.3592 5.37674 33.3272 6.59151L48.3272 15.8503C50.2523 17.0386 51.4286 19.1675 51.4286 21.4635ZM36.4287 29.3966C36.4287 31.6919 35.2532 33.8202 33.329 35.0087L29.9944 37.0644L26.6718 35.012C24.7477 33.8235 23.5722 31.6952 23.5722 29.4V26.3641L26.6736 24.4497C28.7191 23.1871 31.2824 23.1871 33.3279 24.4497L36.4287 26.3637V29.3966ZM48.3282 44.2645L33.3282 53.5299C31.2818 54.7939 28.7169 54.7939 26.6705 53.5299L18.591 48.5391C19.0369 48.35 19.4708 48.1216 19.888 47.854L31.6969 40.2771L35.1784 38.1265C38.1715 36.2777 40.0001 32.967 40.0001 29.3966V28.4897L48.4278 33.4875C50.2616 34.575 51.3991 36.5642 51.4282 38.7242C51.4028 40.9278 50.201 43.1077 48.3282 44.2645Z\" fill=\"url(#paint0_linear_21_1848)\"/>\n<defs>\n<linearGradient id=\"paint0_linear_21_1848\" x1=\"15.7843\" y1=\"7.90763\" x2=\"43.8968\" y2=\"52.1059\" gradientUnits=\"userSpaceOnUse\">\n<stop stop-color=\"#8661C5\"/>\n<stop offset=\"0.538864\" stop-color=\"#8661C5\"/>\n<stop offset=\"1\" stop-color=\"#1864F0\"/>\n</linearGradient>\n</defs>\n</svg>\n\n</td>\n <td style=\"border:none;\">\n <b>Self-paced AI-assisted learning</b>\n </td>\n </tr>\n <tr class=\"transparent\" style=\"border:none;\">\n <td style=\"border:none;\">\n Quantum katas are self-paced learning tutorials assisted by Copilot in Azure Quantum.\n </td>\n </tr>\n <tr class=\"transparent\" style=\"border:none;\">\n <td rowspan=\"2\" style=\"border:none;\">\n<svg width=\"60\" height=\"60\" viewBox=\"0 0 60 60\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n<path d=\"M39.2767 30.3697C39.2767 31.3851 38.5022 32.5816 36.635 33.597C34.8158 34.5863 32.2172 35.2368 29.2785 35.2368C26.3397 35.2368 23.7411 34.5863 21.922 33.597C20.0547 32.5816 19.2803 31.3851 19.2803 30.3697C19.2803 29.3543 20.0547 28.1579 21.922 27.1424C23.7411 26.1532 26.3397 25.5027 29.2785 25.5027C32.2172 25.5027 34.8158 26.1532 36.635 27.1424C38.5022 28.1579 39.2767 29.3543 39.2767 30.3697Z\" stroke=\"url(#paint0_linear_21_1849)\" stroke-width=\"2.5\"/>\n<path d=\"M29.4818 40.2027C28.4664 40.2027 27.27 39.4282 26.2545 37.561C25.2653 35.7418 24.6148 33.1432 24.6148 30.2045C24.6148 27.2657 25.2653 24.6671 26.2545 22.848C27.27 20.9808 28.4665 20.2063 29.4818 20.2063C30.4972 20.2063 31.6937 20.9808 32.7091 22.848C33.6984 24.6671 34.3489 27.2657 34.3489 30.2045C34.3489 33.1432 33.6984 35.7418 32.7091 37.561C31.6937 39.4282 30.4972 40.2027 29.4818 40.2027Z\" stroke=\"url(#paint1_linear_21_1849)\" stroke-width=\"2.5\"/>\n<circle cx=\"29.5133\" cy=\"30.514\" r=\"1.70516\" stroke=\"url(#paint2_linear_21_1849)\" stroke-width=\"2\"/>\n<rect x=\"14.4272\" y=\"15.4275\" width=\"29.9456\" height=\"29.9456\" rx=\"2.25\" stroke=\"url(#paint3_linear_21_1849)\" stroke-width=\"3.5\"/>\n<path d=\"M33.7385 56.9989C33.7385 57.9654 34.522 58.7489 35.4885 58.7489C36.455 58.7489 37.2385 57.9654 37.2385 56.9989L33.7385 56.9989ZM33.7385 49.6212L33.7385 56.9989L37.2385 56.9989L37.2385 49.6212L33.7385 49.6212Z\" fill=\"url(#paint4_linear_21_1849)\"/>\n<path d=\"M27.5173 56.9989C27.5173 57.9654 28.3008 58.7489 29.2673 58.7489C30.2338 58.7489 31.0173 57.9654 31.0173 56.9989L27.5173 56.9989ZM27.5173 49.6212L27.5173 56.9989L31.0173 56.9989L31.0173 49.6212L27.5173 49.6212Z\" fill=\"url(#paint5_linear_21_1849)\"/>\n<path d=\"M21.2961 56.9989C21.2961 57.9654 22.0796 58.7489 23.0461 58.7489C24.0126 58.7489 24.7961 57.9654 24.7961 56.9989L21.2961 56.9989ZM21.2961 49.6212L21.2961 56.9989L24.7961 56.9989L24.7961 49.6212L21.2961 49.6212Z\" fill=\"url(#paint6_linear_21_1849)\"/>\n<path d=\"M56 37.548C56.9665 37.548 57.75 36.7645 57.75 35.798C57.75 34.8315 56.9665 34.048 56 34.048V37.548ZM48.6223 37.548H56V34.048H48.6223V37.548Z\" fill=\"url(#paint7_linear_21_1849)\"/>\n<path d=\"M56 31.3267C56.9665 31.3267 57.75 30.5432 57.75 29.5767C57.75 28.6102 56.9665 27.8267 56 27.8267V31.3267ZM48.6223 31.3267H56V27.8267H48.6223V31.3267Z\" fill=\"url(#paint8_linear_21_1849)\"/>\n<path d=\"M56 25.1053C56.9665 25.1053 57.75 24.3218 57.75 23.3553C57.75 22.3888 56.9665 21.6053 56 21.6053V25.1053ZM48.6223 25.1053H56V21.6053H48.6223V25.1053Z\" fill=\"url(#paint9_linear_21_1849)\"/>\n<path d=\"M2.99998 21.6051C2.03348 21.6051 1.24998 22.3886 1.24998 23.3551C1.24998 24.3216 2.03348 25.1051 2.99998 25.1051V21.6051ZM10.3777 21.6051H2.99998V25.1051H10.3777V21.6051Z\" fill=\"url(#paint10_linear_21_1849)\"/>\n<path d=\"M2.99998 27.8263C2.03348 27.8263 1.24998 28.6098 1.24998 29.5763C1.24998 30.5428 2.03348 31.3263 2.99998 31.3263V27.8263ZM10.3777 27.8263H2.99998V31.3263H10.3777V27.8263Z\" fill=\"url(#paint11_linear_21_1849)\"/>\n<path d=\"M2.99998 34.0472C2.03348 34.0472 1.24998 34.8307 1.24998 35.7972C1.24998 36.7637 2.03348 37.5472 2.99998 37.5472V34.0472ZM10.3777 34.0472H2.99998V37.5472H10.3777V34.0472Z\" fill=\"url(#paint12_linear_21_1849)\"/>\n<path d=\"M37.2385 3.99998C37.2385 3.03348 36.455 2.24998 35.4885 2.24998C34.522 2.24998 33.7385 3.03348 33.7385 3.99998L37.2385 3.99998ZM37.2385 11.3777L37.2385 3.99998L33.7385 3.99998L33.7385 11.3777L37.2385 11.3777Z\" fill=\"url(#paint13_linear_21_1849)\"/>\n<path d=\"M31.0173 3.99998C31.0173 3.03348 30.2338 2.24998 29.2673 2.24998C28.3008 2.24998 27.5173 3.03348 27.5173 3.99998L31.0173 3.99998ZM31.0173 11.3777L31.0173 3.99998L27.5173 3.99998L27.5173 11.3777L31.0173 11.3777Z\" fill=\"url(#paint14_linear_21_1849)\"/>\n<path d=\"M24.7961 3.99998C24.7961 3.03348 24.0126 2.24998 23.0461 2.24998C22.0796 2.24998 21.2961 3.03348 21.2961 3.99998L24.7961 3.99998ZM24.7961 11.3777L24.7961 3.99998L21.2961 3.99998L21.2961 11.3777L24.7961 11.3777Z\" fill=\"url(#paint15_linear_21_1849)\"/>\n<defs>\n<linearGradient id=\"paint0_linear_21_1849\" x1=\"29.2785\" y1=\"24.2527\" x2=\"29.2785\" y2=\"36.4868\" gradientUnits=\"userSpaceOnUse\">\n<stop stop-color=\"#A06ADF\"/>\n<stop offset=\"1\" stop-color=\"#3E72F8\"/>\n</linearGradient>\n<linearGradient id=\"paint1_linear_21_1849\" x1=\"35.5989\" y1=\"30.2045\" x2=\"23.3648\" y2=\"30.2045\" gradientUnits=\"userSpaceOnUse\">\n<stop stop-color=\"#A06ADF\"/>\n<stop offset=\"1\" stop-color=\"#3E72F8\"/>\n</linearGradient>\n<linearGradient id=\"paint2_linear_21_1849\" x1=\"29.5133\" y1=\"27.8088\" x2=\"29.5133\" y2=\"33.2192\" gradientUnits=\"userSpaceOnUse\">\n<stop stop-color=\"#A06ADF\"/>\n<stop offset=\"1\" stop-color=\"#3E72F8\"/>\n</linearGradient>\n<linearGradient id=\"paint3_linear_21_1849\" x1=\"13.3685\" y1=\"14.7144\" x2=\"43.7833\" y2=\"46.8572\" gradientUnits=\"userSpaceOnUse\">\n<stop stop-color=\"#A06ADF\"/>\n<stop offset=\"1\" stop-color=\"#3E72F8\"/>\n</linearGradient>\n<linearGradient id=\"paint4_linear_21_1849\" x1=\"38.0652\" y1=\"55.2713\" x2=\"35.5501\" y2=\"52.385\" gradientUnits=\"userSpaceOnUse\">\n<stop stop-color=\"#A06ADF\"/>\n<stop offset=\"1\" stop-color=\"#3E72F8\"/>\n</linearGradient>\n<linearGradient id=\"paint5_linear_21_1849\" x1=\"31.844\" y1=\"55.2713\" x2=\"29.3289\" y2=\"52.385\" gradientUnits=\"userSpaceOnUse\">\n<stop stop-color=\"#A06ADF\"/>\n<stop offset=\"1\" stop-color=\"#3E72F8\"/>\n</linearGradient>\n<linearGradient id=\"paint6_linear_21_1849\" x1=\"25.6228\" y1=\"55.2713\" x2=\"23.1077\" y2=\"52.385\" gradientUnits=\"userSpaceOnUse\">\n<stop stop-color=\"#A06ADF\"/>\n<stop offset=\"1\" stop-color=\"#3E72F8\"/>\n</linearGradient>\n<linearGradient id=\"paint7_linear_21_1849\" x1=\"54.2724\" y1=\"33.2213\" x2=\"51.3861\" y2=\"35.7364\" gradientUnits=\"userSpaceOnUse\">\n<stop stop-color=\"#A06ADF\"/>\n<stop offset=\"1\" stop-color=\"#3E72F8\"/>\n</linearGradient>\n<linearGradient id=\"paint8_linear_21_1849\" x1=\"54.2724\" y1=\"27\" x2=\"51.3861\" y2=\"29.5151\" gradientUnits=\"userSpaceOnUse\">\n<stop stop-color=\"#A06ADF\"/>\n<stop offset=\"1\" stop-color=\"#3E72F8\"/>\n</linearGradient>\n<linearGradient id=\"paint9_linear_21_1849\" x1=\"54.2724\" y1=\"20.7787\" x2=\"51.3861\" y2=\"23.2937\" gradientUnits=\"userSpaceOnUse\">\n<stop stop-color=\"#A06ADF\"/>\n<stop offset=\"1\" stop-color=\"#3E72F8\"/>\n</linearGradient>\n<linearGradient id=\"paint10_linear_21_1849\" x1=\"4.72757\" y1=\"25.9318\" x2=\"7.61388\" y2=\"23.4167\" gradientUnits=\"userSpaceOnUse\">\n<stop stop-color=\"#A06ADF\"/>\n<stop offset=\"1\" stop-color=\"#3E72F8\"/>\n</linearGradient>\n<linearGradient id=\"paint11_linear_21_1849\" x1=\"4.72757\" y1=\"32.153\" x2=\"7.61388\" y2=\"29.6379\" gradientUnits=\"userSpaceOnUse\">\n<stop stop-color=\"#A06ADF\"/>\n<stop offset=\"1\" stop-color=\"#3E72F8\"/>\n</linearGradient>\n<linearGradient id=\"paint12_linear_21_1849\" x1=\"4.72757\" y1=\"38.3739\" x2=\"7.61388\" y2=\"35.8588\" gradientUnits=\"userSpaceOnUse\">\n<stop stop-color=\"#A06ADF\"/>\n<stop offset=\"1\" stop-color=\"#3E72F8\"/>\n</linearGradient>\n<linearGradient id=\"paint13_linear_21_1849\" x1=\"32.9119\" y1=\"5.72757\" x2=\"35.4269\" y2=\"8.61388\" gradientUnits=\"userSpaceOnUse\">\n<stop stop-color=\"#A06ADF\"/>\n<stop offset=\"1\" stop-color=\"#3E72F8\"/>\n</linearGradient>\n<linearGradient id=\"paint14_linear_21_1849\" x1=\"26.6907\" y1=\"5.72757\" x2=\"29.2057\" y2=\"8.61388\" gradientUnits=\"userSpaceOnUse\">\n<stop stop-color=\"#A06ADF\"/>\n<stop offset=\"1\" stop-color=\"#3E72F8\"/>\n</linearGradient>\n<linearGradient id=\"paint15_linear_21_1849\" x1=\"20.4695\" y1=\"5.72757\" x2=\"22.9845\" y2=\"8.61388\" gradientUnits=\"userSpaceOnUse\">\n<stop stop-color=\"#A06ADF\"/>\n<stop offset=\"1\" stop-color=\"#3E72F8\"/>\n</linearGradient>\n</defs>\n</svg>\n\n</td>\n <td style=\"border:none;\">\n <b>Focused on quantum computing and programming</b>\n </td>\n </tr>\n <tr class=\"transparent\" style=\"border:none;\">\n <td style=\"border:none;\">\n The Quantum katas focus on teaching quantum computing concepts and quantum programming using the Q# language.\n </td>\n </tr>\n <tr class=\"transparent\" style=\"border:none;\">\n <td rowspan=\"2\" style=\"border:none;\">\n<svg width=\"60\" height=\"60\" viewBox=\"0 0 60 60\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n<rect x=\"6.5\" y=\"4.5\" width=\"46.4629\" height=\"51.0428\" rx=\"1.5\" stroke=\"url(#paint0_linear_21_1847)\" stroke-width=\"3\"/>\n<line x1=\"6.83203\" y1=\"11.5767\" x2=\"53.547\" y2=\"11.5767\" stroke=\"url(#paint1_linear_21_1847)\" stroke-width=\"3\"/>\n<circle cx=\"10.0383\" cy=\"8.03779\" r=\"1.37397\" fill=\"url(#paint2_linear_21_1847)\"/>\n<circle cx=\"14.6179\" cy=\"8.03779\" r=\"1.37397\" fill=\"url(#paint3_linear_21_1847)\"/>\n<circle cx=\"19.1977\" cy=\"8.03779\" r=\"1.37397\" fill=\"url(#paint4_linear_21_1847)\"/>\n<path d=\"M21 18L16 21.1818L21 25\" stroke=\"url(#paint5_linear_21_1847)\" stroke-width=\"2\" stroke-linecap=\"round\"/>\n<path d=\"M32 25L36 21.8182L32 18\" stroke=\"url(#paint6_linear_21_1847)\" stroke-width=\"2\" stroke-linecap=\"round\"/>\n<path d=\"M24.5718 16.5952L27.7067 26\" stroke=\"url(#paint7_linear_21_1847)\" stroke-width=\"2\" stroke-linecap=\"round\"/>\n<path d=\"M15.0837 33.8157L20.2104 33.8552\" stroke=\"url(#paint8_linear_21_1847)\" stroke-width=\"2\" stroke-linecap=\"round\"/>\n<path d=\"M15.0078 39L20.1344 39.0395\" stroke=\"url(#paint9_linear_21_1847)\" stroke-width=\"2\" stroke-linecap=\"round\"/>\n<path d=\"M15.0078 44L20.1344 44.0395\" stroke=\"url(#paint10_linear_21_1847)\" stroke-width=\"2\" stroke-linecap=\"round\"/>\n<path d=\"M23 33.8684L39.0133 34.0001\" stroke=\"url(#paint11_linear_21_1847)\" stroke-width=\"2\" stroke-linecap=\"round\"/>\n<path d=\"M23.0833 39L39.0966 39.1317\" stroke=\"url(#paint12_linear_21_1847)\" stroke-width=\"2\" stroke-linecap=\"round\"/>\n<path d=\"M23.0833 44L39.0966 44.1317\" stroke=\"url(#paint13_linear_21_1847)\" stroke-width=\"2\" stroke-linecap=\"round\"/>\n<defs>\n<linearGradient id=\"paint0_linear_21_1847\" x1=\"29.7315\" y1=\"3\" x2=\"29.7315\" y2=\"57.0428\" gradientUnits=\"userSpaceOnUse\">\n<stop stop-color=\"#8661C5\"/>\n<stop offset=\"1\" stop-color=\"#1864F0\"/>\n</linearGradient>\n<linearGradient id=\"paint1_linear_21_1847\" x1=\"30.1895\" y1=\"13.0767\" x2=\"30.1895\" y2=\"14.0767\" gradientUnits=\"userSpaceOnUse\">\n<stop stop-color=\"#8661C5\"/>\n<stop offset=\"1\" stop-color=\"#1864F0\"/>\n</linearGradient>\n<linearGradient id=\"paint2_linear_21_1847\" x1=\"10.0383\" y1=\"6.66382\" x2=\"10.0383\" y2=\"9.41176\" gradientUnits=\"userSpaceOnUse\">\n<stop stop-color=\"#7F4CD7\"/>\n<stop offset=\"1\" stop-color=\"#1864F0\"/>\n</linearGradient>\n<linearGradient id=\"paint3_linear_21_1847\" x1=\"14.6179\" y1=\"6.66382\" x2=\"14.6179\" y2=\"9.41176\" gradientUnits=\"userSpaceOnUse\">\n<stop stop-color=\"#7F4CD7\"/>\n<stop offset=\"1\" stop-color=\"#1864F0\"/>\n</linearGradient>\n<linearGradient id=\"paint4_linear_21_1847\" x1=\"19.1977\" y1=\"6.66382\" x2=\"19.1977\" y2=\"9.41176\" gradientUnits=\"userSpaceOnUse\">\n<stop stop-color=\"#7F4CD7\"/>\n<stop offset=\"1\" stop-color=\"#1864F0\"/>\n</linearGradient>\n<linearGradient id=\"paint5_linear_21_1847\" x1=\"18.5\" y1=\"18\" x2=\"18.5\" y2=\"25\" gradientUnits=\"userSpaceOnUse\">\n<stop stop-color=\"#8661C5\"/>\n<stop offset=\"1\" stop-color=\"#1864F0\"/>\n</linearGradient>\n<linearGradient id=\"paint6_linear_21_1847\" x1=\"34\" y1=\"25\" x2=\"34\" y2=\"18\" gradientUnits=\"userSpaceOnUse\">\n<stop stop-color=\"#8661C5\"/>\n<stop offset=\"1\" stop-color=\"#1864F0\"/>\n</linearGradient>\n<linearGradient id=\"paint7_linear_21_1847\" x1=\"26.1392\" y1=\"21.2976\" x2=\"25.1906\" y2=\"21.6138\" gradientUnits=\"userSpaceOnUse\">\n<stop stop-color=\"#8661C5\"/>\n<stop offset=\"1\" stop-color=\"#1864F0\"/>\n</linearGradient>\n<linearGradient id=\"paint8_linear_21_1847\" x1=\"17.6394\" y1=\"34.8354\" x2=\"17.6317\" y2=\"35.8354\" gradientUnits=\"userSpaceOnUse\">\n<stop stop-color=\"#8661C5\"/>\n<stop offset=\"1\" stop-color=\"#1864F0\"/>\n</linearGradient>\n<linearGradient id=\"paint9_linear_21_1847\" x1=\"17.5634\" y1=\"40.0197\" x2=\"17.5557\" y2=\"41.0197\" gradientUnits=\"userSpaceOnUse\">\n<stop stop-color=\"#8661C5\"/>\n<stop offset=\"1\" stop-color=\"#1864F0\"/>\n</linearGradient>\n<linearGradient id=\"paint10_linear_21_1847\" x1=\"17.5634\" y1=\"45.0197\" x2=\"17.5557\" y2=\"46.0197\" gradientUnits=\"userSpaceOnUse\">\n<stop stop-color=\"#8661C5\"/>\n<stop offset=\"1\" stop-color=\"#1864F0\"/>\n</linearGradient>\n<linearGradient id=\"paint11_linear_21_1847\" x1=\"30.9994\" y1=\"34.9342\" x2=\"30.9912\" y2=\"35.9342\" gradientUnits=\"userSpaceOnUse\">\n<stop stop-color=\"#8661C5\"/>\n<stop offset=\"1\" stop-color=\"#1864F0\"/>\n</linearGradient>\n<linearGradient id=\"paint12_linear_21_1847\" x1=\"31.0827\" y1=\"40.0658\" x2=\"31.0745\" y2=\"41.0658\" gradientUnits=\"userSpaceOnUse\">\n<stop stop-color=\"#8661C5\"/>\n<stop offset=\"1\" stop-color=\"#1864F0\"/>\n</linearGradient>\n<linearGradient id=\"paint13_linear_21_1847\" x1=\"31.0827\" y1=\"45.0658\" x2=\"31.0745\" y2=\"46.0658\" gradientUnits=\"userSpaceOnUse\">\n<stop stop-color=\"#8661C5\"/>\n<stop offset=\"1\" stop-color=\"#1864F0\"/>\n</linearGradient>\n</defs>\n</svg>\n\n</td>\n <td style=\"border:none;\">\n <b>Tutorials with theory and interactive hands on exercises</b>\n </td>\n </tr>\n <tr class=\"transparent\" style=\"border:none;\">\n <td style=\"border:none;\">\n Each tutorial includes relevant theory and supporting interactive exercises designed to test knowledge.\n </td>\n </tr>\n </tbody>\n</table>",
15
- "asMarkdown": "\nkaˑ ta | kah-tuh\n_The japanese word for \"form\", a pattern of learning and practicing new skills._\n\n<style>\n.transparent {\n background: rgba(0, 0, 0, 0.0) !important;\n}\n</style>\n<table>\n <tbody>\n <tr class=\"transparent\" style=\"border:none;\">\n <td rowspan=\"2\" style=\"border:none;\">\n<svg width=\"60\" height=\"60\" viewBox=\"0 0 60 60\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n<path d=\"M9.8217 47.3824L24.8211 56.6477C28.0044 58.614 31.9943 58.614 35.1776 56.6477L50.1776 47.3823C53.1025 45.5756 54.9447 42.2482 54.9988 38.8089L54.9998 38.7205L55 38.6532V21.4635C55 17.892 53.1703 14.5804 50.1756 12.7319L35.1756 3.47308C32.0922 1.56982 28.2527 1.51086 25.1224 3.29619C21.6795 5.40493 18.2269 7.53883 14.7882 9.66472C13.1339 10.6874 11.4796 11.7102 9.82439 12.7312C6.82974 14.5797 5 17.8913 5 21.4628V38.6525C5 42.2229 6.82857 45.5336 9.8217 47.3824ZM26.6114 39.2349L17.9869 44.7687C16.3555 45.8154 14.288 45.8453 12.6282 44.8461L11.6711 44.2646C9.74699 43.0761 8.57144 40.9477 8.57144 38.6525V21.4628C8.57144 19.1672 9.74734 17.0386 11.672 15.8502C13.3329 14.8257 14.9905 13.8008 16.6456 12.7776L16.6473 12.7766C17.8068 12.0597 18.9658 11.3432 20.1244 10.6277C20.0405 11.1621 19.9973 11.7071 19.9973 12.2581V25.4847H20.0007V29.4C20.0007 32.9703 21.8293 36.281 24.8225 38.1299L26.6114 39.2349ZM51.4286 21.4635V31.1833C51.0515 30.8728 50.6487 30.5893 50.2222 30.3364L38.5843 23.4349L35.1764 21.3313C31.9944 19.3672 28.0071 19.3672 24.8251 21.3313L23.5687 22.1068V12.2581C23.5687 9.98662 24.7051 7.8762 26.5751 6.65704L26.9077 6.45332C28.9117 5.33069 31.3592 5.37674 33.3272 6.59151L48.3272 15.8503C50.2523 17.0386 51.4286 19.1675 51.4286 21.4635ZM36.4287 29.3966C36.4287 31.6919 35.2532 33.8202 33.329 35.0087L29.9944 37.0644L26.6718 35.012C24.7477 33.8235 23.5722 31.6952 23.5722 29.4V26.3641L26.6736 24.4497C28.7191 23.1871 31.2824 23.1871 33.3279 24.4497L36.4287 26.3637V29.3966ZM48.3282 44.2645L33.3282 53.5299C31.2818 54.7939 28.7169 54.7939 26.6705 53.5299L18.591 48.5391C19.0369 48.35 19.4708 48.1216 19.888 47.854L31.6969 40.2771L35.1784 38.1265C38.1715 36.2777 40.0001 32.967 40.0001 29.3966V28.4897L48.4278 33.4875C50.2616 34.575 51.3991 36.5642 51.4282 38.7242C51.4028 40.9278 50.201 43.1077 48.3282 44.2645Z\" fill=\"url(#paint0_linear_21_1848)\"/>\n<defs>\n<linearGradient id=\"paint0_linear_21_1848\" x1=\"15.7843\" y1=\"7.90763\" x2=\"43.8968\" y2=\"52.1059\" gradientUnits=\"userSpaceOnUse\">\n<stop stop-color=\"#8661C5\"/>\n<stop offset=\"0.538864\" stop-color=\"#8661C5\"/>\n<stop offset=\"1\" stop-color=\"#1864F0\"/>\n</linearGradient>\n</defs>\n</svg>\n\n</td>\n <td style=\"border:none;\">\n <b>Self-paced AI-assisted learning</b>\n </td>\n </tr>\n <tr class=\"transparent\" style=\"border:none;\">\n <td style=\"border:none;\">\n Quantum katas are self-paced learning tutorials assisted by Copilot in Azure Quantum.\n </td>\n </tr>\n <tr class=\"transparent\" style=\"border:none;\">\n <td rowspan=\"2\" style=\"border:none;\">\n<svg width=\"60\" height=\"60\" viewBox=\"0 0 60 60\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n<path d=\"M39.2767 30.3697C39.2767 31.3851 38.5022 32.5816 36.635 33.597C34.8158 34.5863 32.2172 35.2368 29.2785 35.2368C26.3397 35.2368 23.7411 34.5863 21.922 33.597C20.0547 32.5816 19.2803 31.3851 19.2803 30.3697C19.2803 29.3543 20.0547 28.1579 21.922 27.1424C23.7411 26.1532 26.3397 25.5027 29.2785 25.5027C32.2172 25.5027 34.8158 26.1532 36.635 27.1424C38.5022 28.1579 39.2767 29.3543 39.2767 30.3697Z\" stroke=\"url(#paint0_linear_21_1849)\" stroke-width=\"2.5\"/>\n<path d=\"M29.4818 40.2027C28.4664 40.2027 27.27 39.4282 26.2545 37.561C25.2653 35.7418 24.6148 33.1432 24.6148 30.2045C24.6148 27.2657 25.2653 24.6671 26.2545 22.848C27.27 20.9808 28.4665 20.2063 29.4818 20.2063C30.4972 20.2063 31.6937 20.9808 32.7091 22.848C33.6984 24.6671 34.3489 27.2657 34.3489 30.2045C34.3489 33.1432 33.6984 35.7418 32.7091 37.561C31.6937 39.4282 30.4972 40.2027 29.4818 40.2027Z\" stroke=\"url(#paint1_linear_21_1849)\" stroke-width=\"2.5\"/>\n<circle cx=\"29.5133\" cy=\"30.514\" r=\"1.70516\" stroke=\"url(#paint2_linear_21_1849)\" stroke-width=\"2\"/>\n<rect x=\"14.4272\" y=\"15.4275\" width=\"29.9456\" height=\"29.9456\" rx=\"2.25\" stroke=\"url(#paint3_linear_21_1849)\" stroke-width=\"3.5\"/>\n<path d=\"M33.7385 56.9989C33.7385 57.9654 34.522 58.7489 35.4885 58.7489C36.455 58.7489 37.2385 57.9654 37.2385 56.9989L33.7385 56.9989ZM33.7385 49.6212L33.7385 56.9989L37.2385 56.9989L37.2385 49.6212L33.7385 49.6212Z\" fill=\"url(#paint4_linear_21_1849)\"/>\n<path d=\"M27.5173 56.9989C27.5173 57.9654 28.3008 58.7489 29.2673 58.7489C30.2338 58.7489 31.0173 57.9654 31.0173 56.9989L27.5173 56.9989ZM27.5173 49.6212L27.5173 56.9989L31.0173 56.9989L31.0173 49.6212L27.5173 49.6212Z\" fill=\"url(#paint5_linear_21_1849)\"/>\n<path d=\"M21.2961 56.9989C21.2961 57.9654 22.0796 58.7489 23.0461 58.7489C24.0126 58.7489 24.7961 57.9654 24.7961 56.9989L21.2961 56.9989ZM21.2961 49.6212L21.2961 56.9989L24.7961 56.9989L24.7961 49.6212L21.2961 49.6212Z\" fill=\"url(#paint6_linear_21_1849)\"/>\n<path d=\"M56 37.548C56.9665 37.548 57.75 36.7645 57.75 35.798C57.75 34.8315 56.9665 34.048 56 34.048V37.548ZM48.6223 37.548H56V34.048H48.6223V37.548Z\" fill=\"url(#paint7_linear_21_1849)\"/>\n<path d=\"M56 31.3267C56.9665 31.3267 57.75 30.5432 57.75 29.5767C57.75 28.6102 56.9665 27.8267 56 27.8267V31.3267ZM48.6223 31.3267H56V27.8267H48.6223V31.3267Z\" fill=\"url(#paint8_linear_21_1849)\"/>\n<path d=\"M56 25.1053C56.9665 25.1053 57.75 24.3218 57.75 23.3553C57.75 22.3888 56.9665 21.6053 56 21.6053V25.1053ZM48.6223 25.1053H56V21.6053H48.6223V25.1053Z\" fill=\"url(#paint9_linear_21_1849)\"/>\n<path d=\"M2.99998 21.6051C2.03348 21.6051 1.24998 22.3886 1.24998 23.3551C1.24998 24.3216 2.03348 25.1051 2.99998 25.1051V21.6051ZM10.3777 21.6051H2.99998V25.1051H10.3777V21.6051Z\" fill=\"url(#paint10_linear_21_1849)\"/>\n<path d=\"M2.99998 27.8263C2.03348 27.8263 1.24998 28.6098 1.24998 29.5763C1.24998 30.5428 2.03348 31.3263 2.99998 31.3263V27.8263ZM10.3777 27.8263H2.99998V31.3263H10.3777V27.8263Z\" fill=\"url(#paint11_linear_21_1849)\"/>\n<path d=\"M2.99998 34.0472C2.03348 34.0472 1.24998 34.8307 1.24998 35.7972C1.24998 36.7637 2.03348 37.5472 2.99998 37.5472V34.0472ZM10.3777 34.0472H2.99998V37.5472H10.3777V34.0472Z\" fill=\"url(#paint12_linear_21_1849)\"/>\n<path d=\"M37.2385 3.99998C37.2385 3.03348 36.455 2.24998 35.4885 2.24998C34.522 2.24998 33.7385 3.03348 33.7385 3.99998L37.2385 3.99998ZM37.2385 11.3777L37.2385 3.99998L33.7385 3.99998L33.7385 11.3777L37.2385 11.3777Z\" fill=\"url(#paint13_linear_21_1849)\"/>\n<path d=\"M31.0173 3.99998C31.0173 3.03348 30.2338 2.24998 29.2673 2.24998C28.3008 2.24998 27.5173 3.03348 27.5173 3.99998L31.0173 3.99998ZM31.0173 11.3777L31.0173 3.99998L27.5173 3.99998L27.5173 11.3777L31.0173 11.3777Z\" fill=\"url(#paint14_linear_21_1849)\"/>\n<path d=\"M24.7961 3.99998C24.7961 3.03348 24.0126 2.24998 23.0461 2.24998C22.0796 2.24998 21.2961 3.03348 21.2961 3.99998L24.7961 3.99998ZM24.7961 11.3777L24.7961 3.99998L21.2961 3.99998L21.2961 11.3777L24.7961 11.3777Z\" fill=\"url(#paint15_linear_21_1849)\"/>\n<defs>\n<linearGradient id=\"paint0_linear_21_1849\" x1=\"29.2785\" y1=\"24.2527\" x2=\"29.2785\" y2=\"36.4868\" gradientUnits=\"userSpaceOnUse\">\n<stop stop-color=\"#A06ADF\"/>\n<stop offset=\"1\" stop-color=\"#3E72F8\"/>\n</linearGradient>\n<linearGradient id=\"paint1_linear_21_1849\" x1=\"35.5989\" y1=\"30.2045\" x2=\"23.3648\" y2=\"30.2045\" gradientUnits=\"userSpaceOnUse\">\n<stop stop-color=\"#A06ADF\"/>\n<stop offset=\"1\" stop-color=\"#3E72F8\"/>\n</linearGradient>\n<linearGradient id=\"paint2_linear_21_1849\" x1=\"29.5133\" y1=\"27.8088\" x2=\"29.5133\" y2=\"33.2192\" gradientUnits=\"userSpaceOnUse\">\n<stop stop-color=\"#A06ADF\"/>\n<stop offset=\"1\" stop-color=\"#3E72F8\"/>\n</linearGradient>\n<linearGradient id=\"paint3_linear_21_1849\" x1=\"13.3685\" y1=\"14.7144\" x2=\"43.7833\" y2=\"46.8572\" gradientUnits=\"userSpaceOnUse\">\n<stop stop-color=\"#A06ADF\"/>\n<stop offset=\"1\" stop-color=\"#3E72F8\"/>\n</linearGradient>\n<linearGradient id=\"paint4_linear_21_1849\" x1=\"38.0652\" y1=\"55.2713\" x2=\"35.5501\" y2=\"52.385\" gradientUnits=\"userSpaceOnUse\">\n<stop stop-color=\"#A06ADF\"/>\n<stop offset=\"1\" stop-color=\"#3E72F8\"/>\n</linearGradient>\n<linearGradient id=\"paint5_linear_21_1849\" x1=\"31.844\" y1=\"55.2713\" x2=\"29.3289\" y2=\"52.385\" gradientUnits=\"userSpaceOnUse\">\n<stop stop-color=\"#A06ADF\"/>\n<stop offset=\"1\" stop-color=\"#3E72F8\"/>\n</linearGradient>\n<linearGradient id=\"paint6_linear_21_1849\" x1=\"25.6228\" y1=\"55.2713\" x2=\"23.1077\" y2=\"52.385\" gradientUnits=\"userSpaceOnUse\">\n<stop stop-color=\"#A06ADF\"/>\n<stop offset=\"1\" stop-color=\"#3E72F8\"/>\n</linearGradient>\n<linearGradient id=\"paint7_linear_21_1849\" x1=\"54.2724\" y1=\"33.2213\" x2=\"51.3861\" y2=\"35.7364\" gradientUnits=\"userSpaceOnUse\">\n<stop stop-color=\"#A06ADF\"/>\n<stop offset=\"1\" stop-color=\"#3E72F8\"/>\n</linearGradient>\n<linearGradient id=\"paint8_linear_21_1849\" x1=\"54.2724\" y1=\"27\" x2=\"51.3861\" y2=\"29.5151\" gradientUnits=\"userSpaceOnUse\">\n<stop stop-color=\"#A06ADF\"/>\n<stop offset=\"1\" stop-color=\"#3E72F8\"/>\n</linearGradient>\n<linearGradient id=\"paint9_linear_21_1849\" x1=\"54.2724\" y1=\"20.7787\" x2=\"51.3861\" y2=\"23.2937\" gradientUnits=\"userSpaceOnUse\">\n<stop stop-color=\"#A06ADF\"/>\n<stop offset=\"1\" stop-color=\"#3E72F8\"/>\n</linearGradient>\n<linearGradient id=\"paint10_linear_21_1849\" x1=\"4.72757\" y1=\"25.9318\" x2=\"7.61388\" y2=\"23.4167\" gradientUnits=\"userSpaceOnUse\">\n<stop stop-color=\"#A06ADF\"/>\n<stop offset=\"1\" stop-color=\"#3E72F8\"/>\n</linearGradient>\n<linearGradient id=\"paint11_linear_21_1849\" x1=\"4.72757\" y1=\"32.153\" x2=\"7.61388\" y2=\"29.6379\" gradientUnits=\"userSpaceOnUse\">\n<stop stop-color=\"#A06ADF\"/>\n<stop offset=\"1\" stop-color=\"#3E72F8\"/>\n</linearGradient>\n<linearGradient id=\"paint12_linear_21_1849\" x1=\"4.72757\" y1=\"38.3739\" x2=\"7.61388\" y2=\"35.8588\" gradientUnits=\"userSpaceOnUse\">\n<stop stop-color=\"#A06ADF\"/>\n<stop offset=\"1\" stop-color=\"#3E72F8\"/>\n</linearGradient>\n<linearGradient id=\"paint13_linear_21_1849\" x1=\"32.9119\" y1=\"5.72757\" x2=\"35.4269\" y2=\"8.61388\" gradientUnits=\"userSpaceOnUse\">\n<stop stop-color=\"#A06ADF\"/>\n<stop offset=\"1\" stop-color=\"#3E72F8\"/>\n</linearGradient>\n<linearGradient id=\"paint14_linear_21_1849\" x1=\"26.6907\" y1=\"5.72757\" x2=\"29.2057\" y2=\"8.61388\" gradientUnits=\"userSpaceOnUse\">\n<stop stop-color=\"#A06ADF\"/>\n<stop offset=\"1\" stop-color=\"#3E72F8\"/>\n</linearGradient>\n<linearGradient id=\"paint15_linear_21_1849\" x1=\"20.4695\" y1=\"5.72757\" x2=\"22.9845\" y2=\"8.61388\" gradientUnits=\"userSpaceOnUse\">\n<stop stop-color=\"#A06ADF\"/>\n<stop offset=\"1\" stop-color=\"#3E72F8\"/>\n</linearGradient>\n</defs>\n</svg>\n\n</td>\n <td style=\"border:none;\">\n <b>Focused on quantum computing and programming</b>\n </td>\n </tr>\n <tr class=\"transparent\" style=\"border:none;\">\n <td style=\"border:none;\">\n The Quantum katas focus on teaching quantum computing concepts and quantum programming using the Q# language.\n </td>\n </tr>\n <tr class=\"transparent\" style=\"border:none;\">\n <td rowspan=\"2\" style=\"border:none;\">\n<svg width=\"60\" height=\"60\" viewBox=\"0 0 60 60\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n<rect x=\"6.5\" y=\"4.5\" width=\"46.4629\" height=\"51.0428\" rx=\"1.5\" stroke=\"url(#paint0_linear_21_1847)\" stroke-width=\"3\"/>\n<line x1=\"6.83203\" y1=\"11.5767\" x2=\"53.547\" y2=\"11.5767\" stroke=\"url(#paint1_linear_21_1847)\" stroke-width=\"3\"/>\n<circle cx=\"10.0383\" cy=\"8.03779\" r=\"1.37397\" fill=\"url(#paint2_linear_21_1847)\"/>\n<circle cx=\"14.6179\" cy=\"8.03779\" r=\"1.37397\" fill=\"url(#paint3_linear_21_1847)\"/>\n<circle cx=\"19.1977\" cy=\"8.03779\" r=\"1.37397\" fill=\"url(#paint4_linear_21_1847)\"/>\n<path d=\"M21 18L16 21.1818L21 25\" stroke=\"url(#paint5_linear_21_1847)\" stroke-width=\"2\" stroke-linecap=\"round\"/>\n<path d=\"M32 25L36 21.8182L32 18\" stroke=\"url(#paint6_linear_21_1847)\" stroke-width=\"2\" stroke-linecap=\"round\"/>\n<path d=\"M24.5718 16.5952L27.7067 26\" stroke=\"url(#paint7_linear_21_1847)\" stroke-width=\"2\" stroke-linecap=\"round\"/>\n<path d=\"M15.0837 33.8157L20.2104 33.8552\" stroke=\"url(#paint8_linear_21_1847)\" stroke-width=\"2\" stroke-linecap=\"round\"/>\n<path d=\"M15.0078 39L20.1344 39.0395\" stroke=\"url(#paint9_linear_21_1847)\" stroke-width=\"2\" stroke-linecap=\"round\"/>\n<path d=\"M15.0078 44L20.1344 44.0395\" stroke=\"url(#paint10_linear_21_1847)\" stroke-width=\"2\" stroke-linecap=\"round\"/>\n<path d=\"M23 33.8684L39.0133 34.0001\" stroke=\"url(#paint11_linear_21_1847)\" stroke-width=\"2\" stroke-linecap=\"round\"/>\n<path d=\"M23.0833 39L39.0966 39.1317\" stroke=\"url(#paint12_linear_21_1847)\" stroke-width=\"2\" stroke-linecap=\"round\"/>\n<path d=\"M23.0833 44L39.0966 44.1317\" stroke=\"url(#paint13_linear_21_1847)\" stroke-width=\"2\" stroke-linecap=\"round\"/>\n<defs>\n<linearGradient id=\"paint0_linear_21_1847\" x1=\"29.7315\" y1=\"3\" x2=\"29.7315\" y2=\"57.0428\" gradientUnits=\"userSpaceOnUse\">\n<stop stop-color=\"#8661C5\"/>\n<stop offset=\"1\" stop-color=\"#1864F0\"/>\n</linearGradient>\n<linearGradient id=\"paint1_linear_21_1847\" x1=\"30.1895\" y1=\"13.0767\" x2=\"30.1895\" y2=\"14.0767\" gradientUnits=\"userSpaceOnUse\">\n<stop stop-color=\"#8661C5\"/>\n<stop offset=\"1\" stop-color=\"#1864F0\"/>\n</linearGradient>\n<linearGradient id=\"paint2_linear_21_1847\" x1=\"10.0383\" y1=\"6.66382\" x2=\"10.0383\" y2=\"9.41176\" gradientUnits=\"userSpaceOnUse\">\n<stop stop-color=\"#7F4CD7\"/>\n<stop offset=\"1\" stop-color=\"#1864F0\"/>\n</linearGradient>\n<linearGradient id=\"paint3_linear_21_1847\" x1=\"14.6179\" y1=\"6.66382\" x2=\"14.6179\" y2=\"9.41176\" gradientUnits=\"userSpaceOnUse\">\n<stop stop-color=\"#7F4CD7\"/>\n<stop offset=\"1\" stop-color=\"#1864F0\"/>\n</linearGradient>\n<linearGradient id=\"paint4_linear_21_1847\" x1=\"19.1977\" y1=\"6.66382\" x2=\"19.1977\" y2=\"9.41176\" gradientUnits=\"userSpaceOnUse\">\n<stop stop-color=\"#7F4CD7\"/>\n<stop offset=\"1\" stop-color=\"#1864F0\"/>\n</linearGradient>\n<linearGradient id=\"paint5_linear_21_1847\" x1=\"18.5\" y1=\"18\" x2=\"18.5\" y2=\"25\" gradientUnits=\"userSpaceOnUse\">\n<stop stop-color=\"#8661C5\"/>\n<stop offset=\"1\" stop-color=\"#1864F0\"/>\n</linearGradient>\n<linearGradient id=\"paint6_linear_21_1847\" x1=\"34\" y1=\"25\" x2=\"34\" y2=\"18\" gradientUnits=\"userSpaceOnUse\">\n<stop stop-color=\"#8661C5\"/>\n<stop offset=\"1\" stop-color=\"#1864F0\"/>\n</linearGradient>\n<linearGradient id=\"paint7_linear_21_1847\" x1=\"26.1392\" y1=\"21.2976\" x2=\"25.1906\" y2=\"21.6138\" gradientUnits=\"userSpaceOnUse\">\n<stop stop-color=\"#8661C5\"/>\n<stop offset=\"1\" stop-color=\"#1864F0\"/>\n</linearGradient>\n<linearGradient id=\"paint8_linear_21_1847\" x1=\"17.6394\" y1=\"34.8354\" x2=\"17.6317\" y2=\"35.8354\" gradientUnits=\"userSpaceOnUse\">\n<stop stop-color=\"#8661C5\"/>\n<stop offset=\"1\" stop-color=\"#1864F0\"/>\n</linearGradient>\n<linearGradient id=\"paint9_linear_21_1847\" x1=\"17.5634\" y1=\"40.0197\" x2=\"17.5557\" y2=\"41.0197\" gradientUnits=\"userSpaceOnUse\">\n<stop stop-color=\"#8661C5\"/>\n<stop offset=\"1\" stop-color=\"#1864F0\"/>\n</linearGradient>\n<linearGradient id=\"paint10_linear_21_1847\" x1=\"17.5634\" y1=\"45.0197\" x2=\"17.5557\" y2=\"46.0197\" gradientUnits=\"userSpaceOnUse\">\n<stop stop-color=\"#8661C5\"/>\n<stop offset=\"1\" stop-color=\"#1864F0\"/>\n</linearGradient>\n<linearGradient id=\"paint11_linear_21_1847\" x1=\"30.9994\" y1=\"34.9342\" x2=\"30.9912\" y2=\"35.9342\" gradientUnits=\"userSpaceOnUse\">\n<stop stop-color=\"#8661C5\"/>\n<stop offset=\"1\" stop-color=\"#1864F0\"/>\n</linearGradient>\n<linearGradient id=\"paint12_linear_21_1847\" x1=\"31.0827\" y1=\"40.0658\" x2=\"31.0745\" y2=\"41.0658\" gradientUnits=\"userSpaceOnUse\">\n<stop stop-color=\"#8661C5\"/>\n<stop offset=\"1\" stop-color=\"#1864F0\"/>\n</linearGradient>\n<linearGradient id=\"paint13_linear_21_1847\" x1=\"31.0827\" y1=\"45.0658\" x2=\"31.0745\" y2=\"46.0658\" gradientUnits=\"userSpaceOnUse\">\n<stop stop-color=\"#8661C5\"/>\n<stop offset=\"1\" stop-color=\"#1864F0\"/>\n</linearGradient>\n</defs>\n</svg>\n\n</td>\n <td style=\"border:none;\">\n <b>Tutorials with theory and interactive hands on exercises</b>\n </td>\n </tr>\n <tr class=\"transparent\" style=\"border:none;\">\n <td style=\"border:none;\">\n Each tutorial includes relevant theory and supporting interactive exercises designed to test knowledge.\n </td>\n </tr>\n </tbody>\n</table>"
14
+ "asHtml": "<p>kaˑ ta | kah-tuh\n<em>The Japanese word for &quot;form&quot;, a pattern of learning and practicing new skills.</em></p>\n<style>\n.transparent {\n background: rgba(0, 0, 0, 0.0) !important;\n}\n</style>\n<table>\n <tbody>\n <tr class=\"transparent\" style=\"border:none;\">\n <td rowspan=\"2\" style=\"border:none;\">\n<svg width=\"60\" height=\"60\" viewBox=\"0 0 60 60\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n<path d=\"M9.8217 47.3824L24.8211 56.6477C28.0044 58.614 31.9943 58.614 35.1776 56.6477L50.1776 47.3823C53.1025 45.5756 54.9447 42.2482 54.9988 38.8089L54.9998 38.7205L55 38.6532V21.4635C55 17.892 53.1703 14.5804 50.1756 12.7319L35.1756 3.47308C32.0922 1.56982 28.2527 1.51086 25.1224 3.29619C21.6795 5.40493 18.2269 7.53883 14.7882 9.66472C13.1339 10.6874 11.4796 11.7102 9.82439 12.7312C6.82974 14.5797 5 17.8913 5 21.4628V38.6525C5 42.2229 6.82857 45.5336 9.8217 47.3824ZM26.6114 39.2349L17.9869 44.7687C16.3555 45.8154 14.288 45.8453 12.6282 44.8461L11.6711 44.2646C9.74699 43.0761 8.57144 40.9477 8.57144 38.6525V21.4628C8.57144 19.1672 9.74734 17.0386 11.672 15.8502C13.3329 14.8257 14.9905 13.8008 16.6456 12.7776L16.6473 12.7766C17.8068 12.0597 18.9658 11.3432 20.1244 10.6277C20.0405 11.1621 19.9973 11.7071 19.9973 12.2581V25.4847H20.0007V29.4C20.0007 32.9703 21.8293 36.281 24.8225 38.1299L26.6114 39.2349ZM51.4286 21.4635V31.1833C51.0515 30.8728 50.6487 30.5893 50.2222 30.3364L38.5843 23.4349L35.1764 21.3313C31.9944 19.3672 28.0071 19.3672 24.8251 21.3313L23.5687 22.1068V12.2581C23.5687 9.98662 24.7051 7.8762 26.5751 6.65704L26.9077 6.45332C28.9117 5.33069 31.3592 5.37674 33.3272 6.59151L48.3272 15.8503C50.2523 17.0386 51.4286 19.1675 51.4286 21.4635ZM36.4287 29.3966C36.4287 31.6919 35.2532 33.8202 33.329 35.0087L29.9944 37.0644L26.6718 35.012C24.7477 33.8235 23.5722 31.6952 23.5722 29.4V26.3641L26.6736 24.4497C28.7191 23.1871 31.2824 23.1871 33.3279 24.4497L36.4287 26.3637V29.3966ZM48.3282 44.2645L33.3282 53.5299C31.2818 54.7939 28.7169 54.7939 26.6705 53.5299L18.591 48.5391C19.0369 48.35 19.4708 48.1216 19.888 47.854L31.6969 40.2771L35.1784 38.1265C38.1715 36.2777 40.0001 32.967 40.0001 29.3966V28.4897L48.4278 33.4875C50.2616 34.575 51.3991 36.5642 51.4282 38.7242C51.4028 40.9278 50.201 43.1077 48.3282 44.2645Z\" fill=\"url(#paint0_linear_21_1848)\"/>\n<defs>\n<linearGradient id=\"paint0_linear_21_1848\" x1=\"15.7843\" y1=\"7.90763\" x2=\"43.8968\" y2=\"52.1059\" gradientUnits=\"userSpaceOnUse\">\n<stop stop-color=\"#8661C5\"/>\n<stop offset=\"0.538864\" stop-color=\"#8661C5\"/>\n<stop offset=\"1\" stop-color=\"#1864F0\"/>\n</linearGradient>\n</defs>\n</svg>\n\n</td>\n <td style=\"border:none;\">\n <b>Self-paced AI-assisted learning</b>\n </td>\n </tr>\n <tr class=\"transparent\" style=\"border:none;\">\n <td style=\"border:none;\">\n Quantum katas are self-paced learning tutorials assisted by Copilot in Azure Quantum.\n </td>\n </tr>\n <tr class=\"transparent\" style=\"border:none;\">\n <td rowspan=\"2\" style=\"border:none;\">\n<svg width=\"60\" height=\"60\" viewBox=\"0 0 60 60\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n<path d=\"M39.2767 30.3697C39.2767 31.3851 38.5022 32.5816 36.635 33.597C34.8158 34.5863 32.2172 35.2368 29.2785 35.2368C26.3397 35.2368 23.7411 34.5863 21.922 33.597C20.0547 32.5816 19.2803 31.3851 19.2803 30.3697C19.2803 29.3543 20.0547 28.1579 21.922 27.1424C23.7411 26.1532 26.3397 25.5027 29.2785 25.5027C32.2172 25.5027 34.8158 26.1532 36.635 27.1424C38.5022 28.1579 39.2767 29.3543 39.2767 30.3697Z\" stroke=\"url(#paint0_linear_21_1849)\" stroke-width=\"2.5\"/>\n<path d=\"M29.4818 40.2027C28.4664 40.2027 27.27 39.4282 26.2545 37.561C25.2653 35.7418 24.6148 33.1432 24.6148 30.2045C24.6148 27.2657 25.2653 24.6671 26.2545 22.848C27.27 20.9808 28.4665 20.2063 29.4818 20.2063C30.4972 20.2063 31.6937 20.9808 32.7091 22.848C33.6984 24.6671 34.3489 27.2657 34.3489 30.2045C34.3489 33.1432 33.6984 35.7418 32.7091 37.561C31.6937 39.4282 30.4972 40.2027 29.4818 40.2027Z\" stroke=\"url(#paint1_linear_21_1849)\" stroke-width=\"2.5\"/>\n<circle cx=\"29.5133\" cy=\"30.514\" r=\"1.70516\" stroke=\"url(#paint2_linear_21_1849)\" stroke-width=\"2\"/>\n<rect x=\"14.4272\" y=\"15.4275\" width=\"29.9456\" height=\"29.9456\" rx=\"2.25\" stroke=\"url(#paint3_linear_21_1849)\" stroke-width=\"3.5\"/>\n<path d=\"M33.7385 56.9989C33.7385 57.9654 34.522 58.7489 35.4885 58.7489C36.455 58.7489 37.2385 57.9654 37.2385 56.9989L33.7385 56.9989ZM33.7385 49.6212L33.7385 56.9989L37.2385 56.9989L37.2385 49.6212L33.7385 49.6212Z\" fill=\"url(#paint4_linear_21_1849)\"/>\n<path d=\"M27.5173 56.9989C27.5173 57.9654 28.3008 58.7489 29.2673 58.7489C30.2338 58.7489 31.0173 57.9654 31.0173 56.9989L27.5173 56.9989ZM27.5173 49.6212L27.5173 56.9989L31.0173 56.9989L31.0173 49.6212L27.5173 49.6212Z\" fill=\"url(#paint5_linear_21_1849)\"/>\n<path d=\"M21.2961 56.9989C21.2961 57.9654 22.0796 58.7489 23.0461 58.7489C24.0126 58.7489 24.7961 57.9654 24.7961 56.9989L21.2961 56.9989ZM21.2961 49.6212L21.2961 56.9989L24.7961 56.9989L24.7961 49.6212L21.2961 49.6212Z\" fill=\"url(#paint6_linear_21_1849)\"/>\n<path d=\"M56 37.548C56.9665 37.548 57.75 36.7645 57.75 35.798C57.75 34.8315 56.9665 34.048 56 34.048V37.548ZM48.6223 37.548H56V34.048H48.6223V37.548Z\" fill=\"url(#paint7_linear_21_1849)\"/>\n<path d=\"M56 31.3267C56.9665 31.3267 57.75 30.5432 57.75 29.5767C57.75 28.6102 56.9665 27.8267 56 27.8267V31.3267ZM48.6223 31.3267H56V27.8267H48.6223V31.3267Z\" fill=\"url(#paint8_linear_21_1849)\"/>\n<path d=\"M56 25.1053C56.9665 25.1053 57.75 24.3218 57.75 23.3553C57.75 22.3888 56.9665 21.6053 56 21.6053V25.1053ZM48.6223 25.1053H56V21.6053H48.6223V25.1053Z\" fill=\"url(#paint9_linear_21_1849)\"/>\n<path d=\"M2.99998 21.6051C2.03348 21.6051 1.24998 22.3886 1.24998 23.3551C1.24998 24.3216 2.03348 25.1051 2.99998 25.1051V21.6051ZM10.3777 21.6051H2.99998V25.1051H10.3777V21.6051Z\" fill=\"url(#paint10_linear_21_1849)\"/>\n<path d=\"M2.99998 27.8263C2.03348 27.8263 1.24998 28.6098 1.24998 29.5763C1.24998 30.5428 2.03348 31.3263 2.99998 31.3263V27.8263ZM10.3777 27.8263H2.99998V31.3263H10.3777V27.8263Z\" fill=\"url(#paint11_linear_21_1849)\"/>\n<path d=\"M2.99998 34.0472C2.03348 34.0472 1.24998 34.8307 1.24998 35.7972C1.24998 36.7637 2.03348 37.5472 2.99998 37.5472V34.0472ZM10.3777 34.0472H2.99998V37.5472H10.3777V34.0472Z\" fill=\"url(#paint12_linear_21_1849)\"/>\n<path d=\"M37.2385 3.99998C37.2385 3.03348 36.455 2.24998 35.4885 2.24998C34.522 2.24998 33.7385 3.03348 33.7385 3.99998L37.2385 3.99998ZM37.2385 11.3777L37.2385 3.99998L33.7385 3.99998L33.7385 11.3777L37.2385 11.3777Z\" fill=\"url(#paint13_linear_21_1849)\"/>\n<path d=\"M31.0173 3.99998C31.0173 3.03348 30.2338 2.24998 29.2673 2.24998C28.3008 2.24998 27.5173 3.03348 27.5173 3.99998L31.0173 3.99998ZM31.0173 11.3777L31.0173 3.99998L27.5173 3.99998L27.5173 11.3777L31.0173 11.3777Z\" fill=\"url(#paint14_linear_21_1849)\"/>\n<path d=\"M24.7961 3.99998C24.7961 3.03348 24.0126 2.24998 23.0461 2.24998C22.0796 2.24998 21.2961 3.03348 21.2961 3.99998L24.7961 3.99998ZM24.7961 11.3777L24.7961 3.99998L21.2961 3.99998L21.2961 11.3777L24.7961 11.3777Z\" fill=\"url(#paint15_linear_21_1849)\"/>\n<defs>\n<linearGradient id=\"paint0_linear_21_1849\" x1=\"29.2785\" y1=\"24.2527\" x2=\"29.2785\" y2=\"36.4868\" gradientUnits=\"userSpaceOnUse\">\n<stop stop-color=\"#A06ADF\"/>\n<stop offset=\"1\" stop-color=\"#3E72F8\"/>\n</linearGradient>\n<linearGradient id=\"paint1_linear_21_1849\" x1=\"35.5989\" y1=\"30.2045\" x2=\"23.3648\" y2=\"30.2045\" gradientUnits=\"userSpaceOnUse\">\n<stop stop-color=\"#A06ADF\"/>\n<stop offset=\"1\" stop-color=\"#3E72F8\"/>\n</linearGradient>\n<linearGradient id=\"paint2_linear_21_1849\" x1=\"29.5133\" y1=\"27.8088\" x2=\"29.5133\" y2=\"33.2192\" gradientUnits=\"userSpaceOnUse\">\n<stop stop-color=\"#A06ADF\"/>\n<stop offset=\"1\" stop-color=\"#3E72F8\"/>\n</linearGradient>\n<linearGradient id=\"paint3_linear_21_1849\" x1=\"13.3685\" y1=\"14.7144\" x2=\"43.7833\" y2=\"46.8572\" gradientUnits=\"userSpaceOnUse\">\n<stop stop-color=\"#A06ADF\"/>\n<stop offset=\"1\" stop-color=\"#3E72F8\"/>\n</linearGradient>\n<linearGradient id=\"paint4_linear_21_1849\" x1=\"38.0652\" y1=\"55.2713\" x2=\"35.5501\" y2=\"52.385\" gradientUnits=\"userSpaceOnUse\">\n<stop stop-color=\"#A06ADF\"/>\n<stop offset=\"1\" stop-color=\"#3E72F8\"/>\n</linearGradient>\n<linearGradient id=\"paint5_linear_21_1849\" x1=\"31.844\" y1=\"55.2713\" x2=\"29.3289\" y2=\"52.385\" gradientUnits=\"userSpaceOnUse\">\n<stop stop-color=\"#A06ADF\"/>\n<stop offset=\"1\" stop-color=\"#3E72F8\"/>\n</linearGradient>\n<linearGradient id=\"paint6_linear_21_1849\" x1=\"25.6228\" y1=\"55.2713\" x2=\"23.1077\" y2=\"52.385\" gradientUnits=\"userSpaceOnUse\">\n<stop stop-color=\"#A06ADF\"/>\n<stop offset=\"1\" stop-color=\"#3E72F8\"/>\n</linearGradient>\n<linearGradient id=\"paint7_linear_21_1849\" x1=\"54.2724\" y1=\"33.2213\" x2=\"51.3861\" y2=\"35.7364\" gradientUnits=\"userSpaceOnUse\">\n<stop stop-color=\"#A06ADF\"/>\n<stop offset=\"1\" stop-color=\"#3E72F8\"/>\n</linearGradient>\n<linearGradient id=\"paint8_linear_21_1849\" x1=\"54.2724\" y1=\"27\" x2=\"51.3861\" y2=\"29.5151\" gradientUnits=\"userSpaceOnUse\">\n<stop stop-color=\"#A06ADF\"/>\n<stop offset=\"1\" stop-color=\"#3E72F8\"/>\n</linearGradient>\n<linearGradient id=\"paint9_linear_21_1849\" x1=\"54.2724\" y1=\"20.7787\" x2=\"51.3861\" y2=\"23.2937\" gradientUnits=\"userSpaceOnUse\">\n<stop stop-color=\"#A06ADF\"/>\n<stop offset=\"1\" stop-color=\"#3E72F8\"/>\n</linearGradient>\n<linearGradient id=\"paint10_linear_21_1849\" x1=\"4.72757\" y1=\"25.9318\" x2=\"7.61388\" y2=\"23.4167\" gradientUnits=\"userSpaceOnUse\">\n<stop stop-color=\"#A06ADF\"/>\n<stop offset=\"1\" stop-color=\"#3E72F8\"/>\n</linearGradient>\n<linearGradient id=\"paint11_linear_21_1849\" x1=\"4.72757\" y1=\"32.153\" x2=\"7.61388\" y2=\"29.6379\" gradientUnits=\"userSpaceOnUse\">\n<stop stop-color=\"#A06ADF\"/>\n<stop offset=\"1\" stop-color=\"#3E72F8\"/>\n</linearGradient>\n<linearGradient id=\"paint12_linear_21_1849\" x1=\"4.72757\" y1=\"38.3739\" x2=\"7.61388\" y2=\"35.8588\" gradientUnits=\"userSpaceOnUse\">\n<stop stop-color=\"#A06ADF\"/>\n<stop offset=\"1\" stop-color=\"#3E72F8\"/>\n</linearGradient>\n<linearGradient id=\"paint13_linear_21_1849\" x1=\"32.9119\" y1=\"5.72757\" x2=\"35.4269\" y2=\"8.61388\" gradientUnits=\"userSpaceOnUse\">\n<stop stop-color=\"#A06ADF\"/>\n<stop offset=\"1\" stop-color=\"#3E72F8\"/>\n</linearGradient>\n<linearGradient id=\"paint14_linear_21_1849\" x1=\"26.6907\" y1=\"5.72757\" x2=\"29.2057\" y2=\"8.61388\" gradientUnits=\"userSpaceOnUse\">\n<stop stop-color=\"#A06ADF\"/>\n<stop offset=\"1\" stop-color=\"#3E72F8\"/>\n</linearGradient>\n<linearGradient id=\"paint15_linear_21_1849\" x1=\"20.4695\" y1=\"5.72757\" x2=\"22.9845\" y2=\"8.61388\" gradientUnits=\"userSpaceOnUse\">\n<stop stop-color=\"#A06ADF\"/>\n<stop offset=\"1\" stop-color=\"#3E72F8\"/>\n</linearGradient>\n</defs>\n</svg>\n\n</td>\n <td style=\"border:none;\">\n <b>Focused on quantum computing and programming</b>\n </td>\n </tr>\n <tr class=\"transparent\" style=\"border:none;\">\n <td style=\"border:none;\">\n The Quantum katas focus on teaching quantum computing concepts and quantum programming using the Q# language.\n </td>\n </tr>\n <tr class=\"transparent\" style=\"border:none;\">\n <td rowspan=\"2\" style=\"border:none;\">\n<svg width=\"60\" height=\"60\" viewBox=\"0 0 60 60\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n<rect x=\"6.5\" y=\"4.5\" width=\"46.4629\" height=\"51.0428\" rx=\"1.5\" stroke=\"url(#paint0_linear_21_1847)\" stroke-width=\"3\"/>\n<line x1=\"6.83203\" y1=\"11.5767\" x2=\"53.547\" y2=\"11.5767\" stroke=\"url(#paint1_linear_21_1847)\" stroke-width=\"3\"/>\n<circle cx=\"10.0383\" cy=\"8.03779\" r=\"1.37397\" fill=\"url(#paint2_linear_21_1847)\"/>\n<circle cx=\"14.6179\" cy=\"8.03779\" r=\"1.37397\" fill=\"url(#paint3_linear_21_1847)\"/>\n<circle cx=\"19.1977\" cy=\"8.03779\" r=\"1.37397\" fill=\"url(#paint4_linear_21_1847)\"/>\n<path d=\"M21 18L16 21.1818L21 25\" stroke=\"url(#paint5_linear_21_1847)\" stroke-width=\"2\" stroke-linecap=\"round\"/>\n<path d=\"M32 25L36 21.8182L32 18\" stroke=\"url(#paint6_linear_21_1847)\" stroke-width=\"2\" stroke-linecap=\"round\"/>\n<path d=\"M24.5718 16.5952L27.7067 26\" stroke=\"url(#paint7_linear_21_1847)\" stroke-width=\"2\" stroke-linecap=\"round\"/>\n<path d=\"M15.0837 33.8157L20.2104 33.8552\" stroke=\"url(#paint8_linear_21_1847)\" stroke-width=\"2\" stroke-linecap=\"round\"/>\n<path d=\"M15.0078 39L20.1344 39.0395\" stroke=\"url(#paint9_linear_21_1847)\" stroke-width=\"2\" stroke-linecap=\"round\"/>\n<path d=\"M15.0078 44L20.1344 44.0395\" stroke=\"url(#paint10_linear_21_1847)\" stroke-width=\"2\" stroke-linecap=\"round\"/>\n<path d=\"M23 33.8684L39.0133 34.0001\" stroke=\"url(#paint11_linear_21_1847)\" stroke-width=\"2\" stroke-linecap=\"round\"/>\n<path d=\"M23.0833 39L39.0966 39.1317\" stroke=\"url(#paint12_linear_21_1847)\" stroke-width=\"2\" stroke-linecap=\"round\"/>\n<path d=\"M23.0833 44L39.0966 44.1317\" stroke=\"url(#paint13_linear_21_1847)\" stroke-width=\"2\" stroke-linecap=\"round\"/>\n<defs>\n<linearGradient id=\"paint0_linear_21_1847\" x1=\"29.7315\" y1=\"3\" x2=\"29.7315\" y2=\"57.0428\" gradientUnits=\"userSpaceOnUse\">\n<stop stop-color=\"#8661C5\"/>\n<stop offset=\"1\" stop-color=\"#1864F0\"/>\n</linearGradient>\n<linearGradient id=\"paint1_linear_21_1847\" x1=\"30.1895\" y1=\"13.0767\" x2=\"30.1895\" y2=\"14.0767\" gradientUnits=\"userSpaceOnUse\">\n<stop stop-color=\"#8661C5\"/>\n<stop offset=\"1\" stop-color=\"#1864F0\"/>\n</linearGradient>\n<linearGradient id=\"paint2_linear_21_1847\" x1=\"10.0383\" y1=\"6.66382\" x2=\"10.0383\" y2=\"9.41176\" gradientUnits=\"userSpaceOnUse\">\n<stop stop-color=\"#7F4CD7\"/>\n<stop offset=\"1\" stop-color=\"#1864F0\"/>\n</linearGradient>\n<linearGradient id=\"paint3_linear_21_1847\" x1=\"14.6179\" y1=\"6.66382\" x2=\"14.6179\" y2=\"9.41176\" gradientUnits=\"userSpaceOnUse\">\n<stop stop-color=\"#7F4CD7\"/>\n<stop offset=\"1\" stop-color=\"#1864F0\"/>\n</linearGradient>\n<linearGradient id=\"paint4_linear_21_1847\" x1=\"19.1977\" y1=\"6.66382\" x2=\"19.1977\" y2=\"9.41176\" gradientUnits=\"userSpaceOnUse\">\n<stop stop-color=\"#7F4CD7\"/>\n<stop offset=\"1\" stop-color=\"#1864F0\"/>\n</linearGradient>\n<linearGradient id=\"paint5_linear_21_1847\" x1=\"18.5\" y1=\"18\" x2=\"18.5\" y2=\"25\" gradientUnits=\"userSpaceOnUse\">\n<stop stop-color=\"#8661C5\"/>\n<stop offset=\"1\" stop-color=\"#1864F0\"/>\n</linearGradient>\n<linearGradient id=\"paint6_linear_21_1847\" x1=\"34\" y1=\"25\" x2=\"34\" y2=\"18\" gradientUnits=\"userSpaceOnUse\">\n<stop stop-color=\"#8661C5\"/>\n<stop offset=\"1\" stop-color=\"#1864F0\"/>\n</linearGradient>\n<linearGradient id=\"paint7_linear_21_1847\" x1=\"26.1392\" y1=\"21.2976\" x2=\"25.1906\" y2=\"21.6138\" gradientUnits=\"userSpaceOnUse\">\n<stop stop-color=\"#8661C5\"/>\n<stop offset=\"1\" stop-color=\"#1864F0\"/>\n</linearGradient>\n<linearGradient id=\"paint8_linear_21_1847\" x1=\"17.6394\" y1=\"34.8354\" x2=\"17.6317\" y2=\"35.8354\" gradientUnits=\"userSpaceOnUse\">\n<stop stop-color=\"#8661C5\"/>\n<stop offset=\"1\" stop-color=\"#1864F0\"/>\n</linearGradient>\n<linearGradient id=\"paint9_linear_21_1847\" x1=\"17.5634\" y1=\"40.0197\" x2=\"17.5557\" y2=\"41.0197\" gradientUnits=\"userSpaceOnUse\">\n<stop stop-color=\"#8661C5\"/>\n<stop offset=\"1\" stop-color=\"#1864F0\"/>\n</linearGradient>\n<linearGradient id=\"paint10_linear_21_1847\" x1=\"17.5634\" y1=\"45.0197\" x2=\"17.5557\" y2=\"46.0197\" gradientUnits=\"userSpaceOnUse\">\n<stop stop-color=\"#8661C5\"/>\n<stop offset=\"1\" stop-color=\"#1864F0\"/>\n</linearGradient>\n<linearGradient id=\"paint11_linear_21_1847\" x1=\"30.9994\" y1=\"34.9342\" x2=\"30.9912\" y2=\"35.9342\" gradientUnits=\"userSpaceOnUse\">\n<stop stop-color=\"#8661C5\"/>\n<stop offset=\"1\" stop-color=\"#1864F0\"/>\n</linearGradient>\n<linearGradient id=\"paint12_linear_21_1847\" x1=\"31.0827\" y1=\"40.0658\" x2=\"31.0745\" y2=\"41.0658\" gradientUnits=\"userSpaceOnUse\">\n<stop stop-color=\"#8661C5\"/>\n<stop offset=\"1\" stop-color=\"#1864F0\"/>\n</linearGradient>\n<linearGradient id=\"paint13_linear_21_1847\" x1=\"31.0827\" y1=\"45.0658\" x2=\"31.0745\" y2=\"46.0658\" gradientUnits=\"userSpaceOnUse\">\n<stop stop-color=\"#8661C5\"/>\n<stop offset=\"1\" stop-color=\"#1864F0\"/>\n</linearGradient>\n</defs>\n</svg>\n\n</td>\n <td style=\"border:none;\">\n <b>Tutorials with theory and interactive hands-on exercises</b>\n </td>\n </tr>\n <tr class=\"transparent\" style=\"border:none;\">\n <td style=\"border:none;\">\n Each tutorial includes relevant theory and supporting interactive exercises designed to test knowledge.\n </td>\n </tr>\n </tbody>\n</table>",
15
+ "asMarkdown": "\nkaˑ ta | kah-tuh\n_The Japanese word for \"form\", a pattern of learning and practicing new skills._\n\n<style>\n.transparent {\n background: rgba(0, 0, 0, 0.0) !important;\n}\n</style>\n<table>\n <tbody>\n <tr class=\"transparent\" style=\"border:none;\">\n <td rowspan=\"2\" style=\"border:none;\">\n<svg width=\"60\" height=\"60\" viewBox=\"0 0 60 60\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n<path d=\"M9.8217 47.3824L24.8211 56.6477C28.0044 58.614 31.9943 58.614 35.1776 56.6477L50.1776 47.3823C53.1025 45.5756 54.9447 42.2482 54.9988 38.8089L54.9998 38.7205L55 38.6532V21.4635C55 17.892 53.1703 14.5804 50.1756 12.7319L35.1756 3.47308C32.0922 1.56982 28.2527 1.51086 25.1224 3.29619C21.6795 5.40493 18.2269 7.53883 14.7882 9.66472C13.1339 10.6874 11.4796 11.7102 9.82439 12.7312C6.82974 14.5797 5 17.8913 5 21.4628V38.6525C5 42.2229 6.82857 45.5336 9.8217 47.3824ZM26.6114 39.2349L17.9869 44.7687C16.3555 45.8154 14.288 45.8453 12.6282 44.8461L11.6711 44.2646C9.74699 43.0761 8.57144 40.9477 8.57144 38.6525V21.4628C8.57144 19.1672 9.74734 17.0386 11.672 15.8502C13.3329 14.8257 14.9905 13.8008 16.6456 12.7776L16.6473 12.7766C17.8068 12.0597 18.9658 11.3432 20.1244 10.6277C20.0405 11.1621 19.9973 11.7071 19.9973 12.2581V25.4847H20.0007V29.4C20.0007 32.9703 21.8293 36.281 24.8225 38.1299L26.6114 39.2349ZM51.4286 21.4635V31.1833C51.0515 30.8728 50.6487 30.5893 50.2222 30.3364L38.5843 23.4349L35.1764 21.3313C31.9944 19.3672 28.0071 19.3672 24.8251 21.3313L23.5687 22.1068V12.2581C23.5687 9.98662 24.7051 7.8762 26.5751 6.65704L26.9077 6.45332C28.9117 5.33069 31.3592 5.37674 33.3272 6.59151L48.3272 15.8503C50.2523 17.0386 51.4286 19.1675 51.4286 21.4635ZM36.4287 29.3966C36.4287 31.6919 35.2532 33.8202 33.329 35.0087L29.9944 37.0644L26.6718 35.012C24.7477 33.8235 23.5722 31.6952 23.5722 29.4V26.3641L26.6736 24.4497C28.7191 23.1871 31.2824 23.1871 33.3279 24.4497L36.4287 26.3637V29.3966ZM48.3282 44.2645L33.3282 53.5299C31.2818 54.7939 28.7169 54.7939 26.6705 53.5299L18.591 48.5391C19.0369 48.35 19.4708 48.1216 19.888 47.854L31.6969 40.2771L35.1784 38.1265C38.1715 36.2777 40.0001 32.967 40.0001 29.3966V28.4897L48.4278 33.4875C50.2616 34.575 51.3991 36.5642 51.4282 38.7242C51.4028 40.9278 50.201 43.1077 48.3282 44.2645Z\" fill=\"url(#paint0_linear_21_1848)\"/>\n<defs>\n<linearGradient id=\"paint0_linear_21_1848\" x1=\"15.7843\" y1=\"7.90763\" x2=\"43.8968\" y2=\"52.1059\" gradientUnits=\"userSpaceOnUse\">\n<stop stop-color=\"#8661C5\"/>\n<stop offset=\"0.538864\" stop-color=\"#8661C5\"/>\n<stop offset=\"1\" stop-color=\"#1864F0\"/>\n</linearGradient>\n</defs>\n</svg>\n\n</td>\n <td style=\"border:none;\">\n <b>Self-paced AI-assisted learning</b>\n </td>\n </tr>\n <tr class=\"transparent\" style=\"border:none;\">\n <td style=\"border:none;\">\n Quantum katas are self-paced learning tutorials assisted by Copilot in Azure Quantum.\n </td>\n </tr>\n <tr class=\"transparent\" style=\"border:none;\">\n <td rowspan=\"2\" style=\"border:none;\">\n<svg width=\"60\" height=\"60\" viewBox=\"0 0 60 60\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n<path d=\"M39.2767 30.3697C39.2767 31.3851 38.5022 32.5816 36.635 33.597C34.8158 34.5863 32.2172 35.2368 29.2785 35.2368C26.3397 35.2368 23.7411 34.5863 21.922 33.597C20.0547 32.5816 19.2803 31.3851 19.2803 30.3697C19.2803 29.3543 20.0547 28.1579 21.922 27.1424C23.7411 26.1532 26.3397 25.5027 29.2785 25.5027C32.2172 25.5027 34.8158 26.1532 36.635 27.1424C38.5022 28.1579 39.2767 29.3543 39.2767 30.3697Z\" stroke=\"url(#paint0_linear_21_1849)\" stroke-width=\"2.5\"/>\n<path d=\"M29.4818 40.2027C28.4664 40.2027 27.27 39.4282 26.2545 37.561C25.2653 35.7418 24.6148 33.1432 24.6148 30.2045C24.6148 27.2657 25.2653 24.6671 26.2545 22.848C27.27 20.9808 28.4665 20.2063 29.4818 20.2063C30.4972 20.2063 31.6937 20.9808 32.7091 22.848C33.6984 24.6671 34.3489 27.2657 34.3489 30.2045C34.3489 33.1432 33.6984 35.7418 32.7091 37.561C31.6937 39.4282 30.4972 40.2027 29.4818 40.2027Z\" stroke=\"url(#paint1_linear_21_1849)\" stroke-width=\"2.5\"/>\n<circle cx=\"29.5133\" cy=\"30.514\" r=\"1.70516\" stroke=\"url(#paint2_linear_21_1849)\" stroke-width=\"2\"/>\n<rect x=\"14.4272\" y=\"15.4275\" width=\"29.9456\" height=\"29.9456\" rx=\"2.25\" stroke=\"url(#paint3_linear_21_1849)\" stroke-width=\"3.5\"/>\n<path d=\"M33.7385 56.9989C33.7385 57.9654 34.522 58.7489 35.4885 58.7489C36.455 58.7489 37.2385 57.9654 37.2385 56.9989L33.7385 56.9989ZM33.7385 49.6212L33.7385 56.9989L37.2385 56.9989L37.2385 49.6212L33.7385 49.6212Z\" fill=\"url(#paint4_linear_21_1849)\"/>\n<path d=\"M27.5173 56.9989C27.5173 57.9654 28.3008 58.7489 29.2673 58.7489C30.2338 58.7489 31.0173 57.9654 31.0173 56.9989L27.5173 56.9989ZM27.5173 49.6212L27.5173 56.9989L31.0173 56.9989L31.0173 49.6212L27.5173 49.6212Z\" fill=\"url(#paint5_linear_21_1849)\"/>\n<path d=\"M21.2961 56.9989C21.2961 57.9654 22.0796 58.7489 23.0461 58.7489C24.0126 58.7489 24.7961 57.9654 24.7961 56.9989L21.2961 56.9989ZM21.2961 49.6212L21.2961 56.9989L24.7961 56.9989L24.7961 49.6212L21.2961 49.6212Z\" fill=\"url(#paint6_linear_21_1849)\"/>\n<path d=\"M56 37.548C56.9665 37.548 57.75 36.7645 57.75 35.798C57.75 34.8315 56.9665 34.048 56 34.048V37.548ZM48.6223 37.548H56V34.048H48.6223V37.548Z\" fill=\"url(#paint7_linear_21_1849)\"/>\n<path d=\"M56 31.3267C56.9665 31.3267 57.75 30.5432 57.75 29.5767C57.75 28.6102 56.9665 27.8267 56 27.8267V31.3267ZM48.6223 31.3267H56V27.8267H48.6223V31.3267Z\" fill=\"url(#paint8_linear_21_1849)\"/>\n<path d=\"M56 25.1053C56.9665 25.1053 57.75 24.3218 57.75 23.3553C57.75 22.3888 56.9665 21.6053 56 21.6053V25.1053ZM48.6223 25.1053H56V21.6053H48.6223V25.1053Z\" fill=\"url(#paint9_linear_21_1849)\"/>\n<path d=\"M2.99998 21.6051C2.03348 21.6051 1.24998 22.3886 1.24998 23.3551C1.24998 24.3216 2.03348 25.1051 2.99998 25.1051V21.6051ZM10.3777 21.6051H2.99998V25.1051H10.3777V21.6051Z\" fill=\"url(#paint10_linear_21_1849)\"/>\n<path d=\"M2.99998 27.8263C2.03348 27.8263 1.24998 28.6098 1.24998 29.5763C1.24998 30.5428 2.03348 31.3263 2.99998 31.3263V27.8263ZM10.3777 27.8263H2.99998V31.3263H10.3777V27.8263Z\" fill=\"url(#paint11_linear_21_1849)\"/>\n<path d=\"M2.99998 34.0472C2.03348 34.0472 1.24998 34.8307 1.24998 35.7972C1.24998 36.7637 2.03348 37.5472 2.99998 37.5472V34.0472ZM10.3777 34.0472H2.99998V37.5472H10.3777V34.0472Z\" fill=\"url(#paint12_linear_21_1849)\"/>\n<path d=\"M37.2385 3.99998C37.2385 3.03348 36.455 2.24998 35.4885 2.24998C34.522 2.24998 33.7385 3.03348 33.7385 3.99998L37.2385 3.99998ZM37.2385 11.3777L37.2385 3.99998L33.7385 3.99998L33.7385 11.3777L37.2385 11.3777Z\" fill=\"url(#paint13_linear_21_1849)\"/>\n<path d=\"M31.0173 3.99998C31.0173 3.03348 30.2338 2.24998 29.2673 2.24998C28.3008 2.24998 27.5173 3.03348 27.5173 3.99998L31.0173 3.99998ZM31.0173 11.3777L31.0173 3.99998L27.5173 3.99998L27.5173 11.3777L31.0173 11.3777Z\" fill=\"url(#paint14_linear_21_1849)\"/>\n<path d=\"M24.7961 3.99998C24.7961 3.03348 24.0126 2.24998 23.0461 2.24998C22.0796 2.24998 21.2961 3.03348 21.2961 3.99998L24.7961 3.99998ZM24.7961 11.3777L24.7961 3.99998L21.2961 3.99998L21.2961 11.3777L24.7961 11.3777Z\" fill=\"url(#paint15_linear_21_1849)\"/>\n<defs>\n<linearGradient id=\"paint0_linear_21_1849\" x1=\"29.2785\" y1=\"24.2527\" x2=\"29.2785\" y2=\"36.4868\" gradientUnits=\"userSpaceOnUse\">\n<stop stop-color=\"#A06ADF\"/>\n<stop offset=\"1\" stop-color=\"#3E72F8\"/>\n</linearGradient>\n<linearGradient id=\"paint1_linear_21_1849\" x1=\"35.5989\" y1=\"30.2045\" x2=\"23.3648\" y2=\"30.2045\" gradientUnits=\"userSpaceOnUse\">\n<stop stop-color=\"#A06ADF\"/>\n<stop offset=\"1\" stop-color=\"#3E72F8\"/>\n</linearGradient>\n<linearGradient id=\"paint2_linear_21_1849\" x1=\"29.5133\" y1=\"27.8088\" x2=\"29.5133\" y2=\"33.2192\" gradientUnits=\"userSpaceOnUse\">\n<stop stop-color=\"#A06ADF\"/>\n<stop offset=\"1\" stop-color=\"#3E72F8\"/>\n</linearGradient>\n<linearGradient id=\"paint3_linear_21_1849\" x1=\"13.3685\" y1=\"14.7144\" x2=\"43.7833\" y2=\"46.8572\" gradientUnits=\"userSpaceOnUse\">\n<stop stop-color=\"#A06ADF\"/>\n<stop offset=\"1\" stop-color=\"#3E72F8\"/>\n</linearGradient>\n<linearGradient id=\"paint4_linear_21_1849\" x1=\"38.0652\" y1=\"55.2713\" x2=\"35.5501\" y2=\"52.385\" gradientUnits=\"userSpaceOnUse\">\n<stop stop-color=\"#A06ADF\"/>\n<stop offset=\"1\" stop-color=\"#3E72F8\"/>\n</linearGradient>\n<linearGradient id=\"paint5_linear_21_1849\" x1=\"31.844\" y1=\"55.2713\" x2=\"29.3289\" y2=\"52.385\" gradientUnits=\"userSpaceOnUse\">\n<stop stop-color=\"#A06ADF\"/>\n<stop offset=\"1\" stop-color=\"#3E72F8\"/>\n</linearGradient>\n<linearGradient id=\"paint6_linear_21_1849\" x1=\"25.6228\" y1=\"55.2713\" x2=\"23.1077\" y2=\"52.385\" gradientUnits=\"userSpaceOnUse\">\n<stop stop-color=\"#A06ADF\"/>\n<stop offset=\"1\" stop-color=\"#3E72F8\"/>\n</linearGradient>\n<linearGradient id=\"paint7_linear_21_1849\" x1=\"54.2724\" y1=\"33.2213\" x2=\"51.3861\" y2=\"35.7364\" gradientUnits=\"userSpaceOnUse\">\n<stop stop-color=\"#A06ADF\"/>\n<stop offset=\"1\" stop-color=\"#3E72F8\"/>\n</linearGradient>\n<linearGradient id=\"paint8_linear_21_1849\" x1=\"54.2724\" y1=\"27\" x2=\"51.3861\" y2=\"29.5151\" gradientUnits=\"userSpaceOnUse\">\n<stop stop-color=\"#A06ADF\"/>\n<stop offset=\"1\" stop-color=\"#3E72F8\"/>\n</linearGradient>\n<linearGradient id=\"paint9_linear_21_1849\" x1=\"54.2724\" y1=\"20.7787\" x2=\"51.3861\" y2=\"23.2937\" gradientUnits=\"userSpaceOnUse\">\n<stop stop-color=\"#A06ADF\"/>\n<stop offset=\"1\" stop-color=\"#3E72F8\"/>\n</linearGradient>\n<linearGradient id=\"paint10_linear_21_1849\" x1=\"4.72757\" y1=\"25.9318\" x2=\"7.61388\" y2=\"23.4167\" gradientUnits=\"userSpaceOnUse\">\n<stop stop-color=\"#A06ADF\"/>\n<stop offset=\"1\" stop-color=\"#3E72F8\"/>\n</linearGradient>\n<linearGradient id=\"paint11_linear_21_1849\" x1=\"4.72757\" y1=\"32.153\" x2=\"7.61388\" y2=\"29.6379\" gradientUnits=\"userSpaceOnUse\">\n<stop stop-color=\"#A06ADF\"/>\n<stop offset=\"1\" stop-color=\"#3E72F8\"/>\n</linearGradient>\n<linearGradient id=\"paint12_linear_21_1849\" x1=\"4.72757\" y1=\"38.3739\" x2=\"7.61388\" y2=\"35.8588\" gradientUnits=\"userSpaceOnUse\">\n<stop stop-color=\"#A06ADF\"/>\n<stop offset=\"1\" stop-color=\"#3E72F8\"/>\n</linearGradient>\n<linearGradient id=\"paint13_linear_21_1849\" x1=\"32.9119\" y1=\"5.72757\" x2=\"35.4269\" y2=\"8.61388\" gradientUnits=\"userSpaceOnUse\">\n<stop stop-color=\"#A06ADF\"/>\n<stop offset=\"1\" stop-color=\"#3E72F8\"/>\n</linearGradient>\n<linearGradient id=\"paint14_linear_21_1849\" x1=\"26.6907\" y1=\"5.72757\" x2=\"29.2057\" y2=\"8.61388\" gradientUnits=\"userSpaceOnUse\">\n<stop stop-color=\"#A06ADF\"/>\n<stop offset=\"1\" stop-color=\"#3E72F8\"/>\n</linearGradient>\n<linearGradient id=\"paint15_linear_21_1849\" x1=\"20.4695\" y1=\"5.72757\" x2=\"22.9845\" y2=\"8.61388\" gradientUnits=\"userSpaceOnUse\">\n<stop stop-color=\"#A06ADF\"/>\n<stop offset=\"1\" stop-color=\"#3E72F8\"/>\n</linearGradient>\n</defs>\n</svg>\n\n</td>\n <td style=\"border:none;\">\n <b>Focused on quantum computing and programming</b>\n </td>\n </tr>\n <tr class=\"transparent\" style=\"border:none;\">\n <td style=\"border:none;\">\n The Quantum katas focus on teaching quantum computing concepts and quantum programming using the Q# language.\n </td>\n </tr>\n <tr class=\"transparent\" style=\"border:none;\">\n <td rowspan=\"2\" style=\"border:none;\">\n<svg width=\"60\" height=\"60\" viewBox=\"0 0 60 60\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n<rect x=\"6.5\" y=\"4.5\" width=\"46.4629\" height=\"51.0428\" rx=\"1.5\" stroke=\"url(#paint0_linear_21_1847)\" stroke-width=\"3\"/>\n<line x1=\"6.83203\" y1=\"11.5767\" x2=\"53.547\" y2=\"11.5767\" stroke=\"url(#paint1_linear_21_1847)\" stroke-width=\"3\"/>\n<circle cx=\"10.0383\" cy=\"8.03779\" r=\"1.37397\" fill=\"url(#paint2_linear_21_1847)\"/>\n<circle cx=\"14.6179\" cy=\"8.03779\" r=\"1.37397\" fill=\"url(#paint3_linear_21_1847)\"/>\n<circle cx=\"19.1977\" cy=\"8.03779\" r=\"1.37397\" fill=\"url(#paint4_linear_21_1847)\"/>\n<path d=\"M21 18L16 21.1818L21 25\" stroke=\"url(#paint5_linear_21_1847)\" stroke-width=\"2\" stroke-linecap=\"round\"/>\n<path d=\"M32 25L36 21.8182L32 18\" stroke=\"url(#paint6_linear_21_1847)\" stroke-width=\"2\" stroke-linecap=\"round\"/>\n<path d=\"M24.5718 16.5952L27.7067 26\" stroke=\"url(#paint7_linear_21_1847)\" stroke-width=\"2\" stroke-linecap=\"round\"/>\n<path d=\"M15.0837 33.8157L20.2104 33.8552\" stroke=\"url(#paint8_linear_21_1847)\" stroke-width=\"2\" stroke-linecap=\"round\"/>\n<path d=\"M15.0078 39L20.1344 39.0395\" stroke=\"url(#paint9_linear_21_1847)\" stroke-width=\"2\" stroke-linecap=\"round\"/>\n<path d=\"M15.0078 44L20.1344 44.0395\" stroke=\"url(#paint10_linear_21_1847)\" stroke-width=\"2\" stroke-linecap=\"round\"/>\n<path d=\"M23 33.8684L39.0133 34.0001\" stroke=\"url(#paint11_linear_21_1847)\" stroke-width=\"2\" stroke-linecap=\"round\"/>\n<path d=\"M23.0833 39L39.0966 39.1317\" stroke=\"url(#paint12_linear_21_1847)\" stroke-width=\"2\" stroke-linecap=\"round\"/>\n<path d=\"M23.0833 44L39.0966 44.1317\" stroke=\"url(#paint13_linear_21_1847)\" stroke-width=\"2\" stroke-linecap=\"round\"/>\n<defs>\n<linearGradient id=\"paint0_linear_21_1847\" x1=\"29.7315\" y1=\"3\" x2=\"29.7315\" y2=\"57.0428\" gradientUnits=\"userSpaceOnUse\">\n<stop stop-color=\"#8661C5\"/>\n<stop offset=\"1\" stop-color=\"#1864F0\"/>\n</linearGradient>\n<linearGradient id=\"paint1_linear_21_1847\" x1=\"30.1895\" y1=\"13.0767\" x2=\"30.1895\" y2=\"14.0767\" gradientUnits=\"userSpaceOnUse\">\n<stop stop-color=\"#8661C5\"/>\n<stop offset=\"1\" stop-color=\"#1864F0\"/>\n</linearGradient>\n<linearGradient id=\"paint2_linear_21_1847\" x1=\"10.0383\" y1=\"6.66382\" x2=\"10.0383\" y2=\"9.41176\" gradientUnits=\"userSpaceOnUse\">\n<stop stop-color=\"#7F4CD7\"/>\n<stop offset=\"1\" stop-color=\"#1864F0\"/>\n</linearGradient>\n<linearGradient id=\"paint3_linear_21_1847\" x1=\"14.6179\" y1=\"6.66382\" x2=\"14.6179\" y2=\"9.41176\" gradientUnits=\"userSpaceOnUse\">\n<stop stop-color=\"#7F4CD7\"/>\n<stop offset=\"1\" stop-color=\"#1864F0\"/>\n</linearGradient>\n<linearGradient id=\"paint4_linear_21_1847\" x1=\"19.1977\" y1=\"6.66382\" x2=\"19.1977\" y2=\"9.41176\" gradientUnits=\"userSpaceOnUse\">\n<stop stop-color=\"#7F4CD7\"/>\n<stop offset=\"1\" stop-color=\"#1864F0\"/>\n</linearGradient>\n<linearGradient id=\"paint5_linear_21_1847\" x1=\"18.5\" y1=\"18\" x2=\"18.5\" y2=\"25\" gradientUnits=\"userSpaceOnUse\">\n<stop stop-color=\"#8661C5\"/>\n<stop offset=\"1\" stop-color=\"#1864F0\"/>\n</linearGradient>\n<linearGradient id=\"paint6_linear_21_1847\" x1=\"34\" y1=\"25\" x2=\"34\" y2=\"18\" gradientUnits=\"userSpaceOnUse\">\n<stop stop-color=\"#8661C5\"/>\n<stop offset=\"1\" stop-color=\"#1864F0\"/>\n</linearGradient>\n<linearGradient id=\"paint7_linear_21_1847\" x1=\"26.1392\" y1=\"21.2976\" x2=\"25.1906\" y2=\"21.6138\" gradientUnits=\"userSpaceOnUse\">\n<stop stop-color=\"#8661C5\"/>\n<stop offset=\"1\" stop-color=\"#1864F0\"/>\n</linearGradient>\n<linearGradient id=\"paint8_linear_21_1847\" x1=\"17.6394\" y1=\"34.8354\" x2=\"17.6317\" y2=\"35.8354\" gradientUnits=\"userSpaceOnUse\">\n<stop stop-color=\"#8661C5\"/>\n<stop offset=\"1\" stop-color=\"#1864F0\"/>\n</linearGradient>\n<linearGradient id=\"paint9_linear_21_1847\" x1=\"17.5634\" y1=\"40.0197\" x2=\"17.5557\" y2=\"41.0197\" gradientUnits=\"userSpaceOnUse\">\n<stop stop-color=\"#8661C5\"/>\n<stop offset=\"1\" stop-color=\"#1864F0\"/>\n</linearGradient>\n<linearGradient id=\"paint10_linear_21_1847\" x1=\"17.5634\" y1=\"45.0197\" x2=\"17.5557\" y2=\"46.0197\" gradientUnits=\"userSpaceOnUse\">\n<stop stop-color=\"#8661C5\"/>\n<stop offset=\"1\" stop-color=\"#1864F0\"/>\n</linearGradient>\n<linearGradient id=\"paint11_linear_21_1847\" x1=\"30.9994\" y1=\"34.9342\" x2=\"30.9912\" y2=\"35.9342\" gradientUnits=\"userSpaceOnUse\">\n<stop stop-color=\"#8661C5\"/>\n<stop offset=\"1\" stop-color=\"#1864F0\"/>\n</linearGradient>\n<linearGradient id=\"paint12_linear_21_1847\" x1=\"31.0827\" y1=\"40.0658\" x2=\"31.0745\" y2=\"41.0658\" gradientUnits=\"userSpaceOnUse\">\n<stop stop-color=\"#8661C5\"/>\n<stop offset=\"1\" stop-color=\"#1864F0\"/>\n</linearGradient>\n<linearGradient id=\"paint13_linear_21_1847\" x1=\"31.0827\" y1=\"45.0658\" x2=\"31.0745\" y2=\"46.0658\" gradientUnits=\"userSpaceOnUse\">\n<stop stop-color=\"#8661C5\"/>\n<stop offset=\"1\" stop-color=\"#1864F0\"/>\n</linearGradient>\n</defs>\n</svg>\n\n</td>\n <td style=\"border:none;\">\n <b>Tutorials with theory and interactive hands-on exercises</b>\n </td>\n </tr>\n <tr class=\"transparent\" style=\"border:none;\">\n <td style=\"border:none;\">\n Each tutorial includes relevant theory and supporting interactive exercises designed to test knowledge.\n </td>\n </tr>\n </tbody>\n</table>"
16
16
  }
17
17
  ]
18
18
  },
@@ -22,8 +22,8 @@ export default {
22
22
  "title": "Flip a Qubit",
23
23
  "description": {
24
24
  "type": "text-content",
25
- "asHtml": "<p>Exercises are problems that you have to solve by writing Q# code. On each exercise, you will be presented with placeholder code that you will have to fill in with the correct solution.</p>\n<p><strong>Input:</strong> A qubit in the $|0\\rangle$ state.</p>\n<p><strong>Goal:</strong> Apply the X gate to the qubit, i.e., perform a &quot;bit flip&quot; to set the qubit into the $|1\\rangle$ state.</p>\n<details>\n<summary><strong>Need a hint?</strong></summary>\nFor some problems a hint will be provided to help you if you are stuck. For this exercise, read line number 3 in the code below.\n</details>\n",
26
- "asMarkdown": "Exercises are problems that you have to solve by writing Q# code. On each exercise, you will be presented with placeholder code that you will have to fill in with the correct solution.\n\n**Input:** A qubit in the $|0\\rangle$ state.\n\n**Goal:** Apply the X gate to the qubit, i.e., perform a \"bit flip\" to set the qubit into the $|1\\rangle$ state.\n\n<details>\n<summary><strong>Need a hint?</strong></summary>\nFor some problems a hint will be provided to help you if you are stuck. For this exercise, read line number 3 in the code below.\n</details>\n"
25
+ "asHtml": "<p>Exercises are problems that you have to solve by writing Q# code. In each exercise, you will be presented with placeholder code that you will have to fill in with the correct solution.</p>\n<p><strong>Input:</strong> A qubit in the $|0\\rangle$ state.</p>\n<p><strong>Goal:</strong> Apply the X gate to the qubit, i.e., perform a &quot;bit flip&quot; to set the qubit into the $|1\\rangle$ state.</p>\n<details>\n<summary><strong>Need a hint?</strong></summary>\nFor some problems a hint will be provided to help you if you are stuck. For this exercise, read line number 3 in the code below.\n</details>\n",
26
+ "asMarkdown": "Exercises are problems that you have to solve by writing Q# code. In each exercise, you will be presented with placeholder code that you will have to fill in with the correct solution.\n\n**Input:** A qubit in the $|0\\rangle$ state.\n\n**Goal:** Apply the X gate to the qubit, i.e., perform a \"bit flip\" to set the qubit into the $|1\\rangle$ state.\n\n<details>\n<summary><strong>Need a hint?</strong></summary>\nFor some problems a hint will be provided to help you if you are stuck. For this exercise, read line number 3 in the code below.\n</details>\n"
27
27
  },
28
28
  "sourceIds": [
29
29
  "KatasLibrary.qs",
@@ -360,8 +360,8 @@ export default {
360
360
  "title": "Sign Flip on Zero",
361
361
  "description": {
362
362
  "type": "text-content",
363
- "asHtml": "<p><strong>Input:</strong> A qubit in an arbitrary state $|\\psi\\rangle = \\alpha|0\\rangle + \\beta|1\\rangle$.</p>\n<p><strong>Goal:</strong> Use several Pauli gates to change the qubit state to $- \\alpha|0\\rangle + \\beta|1\\rangle$, i.e., apply the transformation represented by the following matrix::</p>\n<p>$$\\begin{bmatrix} -1 &amp; 0 \\\\ 0 &amp; 1 \\end{bmatrix}$$</p>\n",
364
- "asMarkdown": "**Input:** A qubit in an arbitrary state $|\\psi\\rangle = \\alpha|0\\rangle + \\beta|1\\rangle$.\n\n**Goal:** Use several Pauli gates to change the qubit state to $- \\alpha|0\\rangle + \\beta|1\\rangle$, i.e., apply the transformation represented by the following matrix::\n\n$$\\begin{bmatrix} -1 & 0 \\\\\\ 0 & 1 \\end{bmatrix}$$"
363
+ "asHtml": "<p><strong>Input:</strong> A qubit in an arbitrary state $|\\psi\\rangle = \\alpha|0\\rangle + \\beta|1\\rangle$.</p>\n<p><strong>Goal:</strong> Use several Pauli gates to change the qubit state to $- \\alpha|0\\rangle + \\beta|1\\rangle$, i.e., apply the transformation represented by the following matrix:</p>\n<p>$$\\begin{bmatrix} -1 &amp; 0 \\\\ 0 &amp; 1 \\end{bmatrix}$$</p>\n",
364
+ "asMarkdown": "**Input:** A qubit in an arbitrary state $|\\psi\\rangle = \\alpha|0\\rangle + \\beta|1\\rangle$.\n\n**Goal:** Use several Pauli gates to change the qubit state to $- \\alpha|0\\rangle + \\beta|1\\rangle$, i.e., apply the transformation represented by the following matrix:\n\n$$\\begin{bmatrix} -1 & 0 \\\\\\ 0 & 1 \\end{bmatrix}$$\n"
365
365
  },
366
366
  "sourceIds": [
367
367
  "KatasLibrary.qs",
@@ -463,8 +463,8 @@ export default {
463
463
  "items": [
464
464
  {
465
465
  "type": "text-content",
466
- "asHtml": "<p>The next few gates are parametrized: their exact behavior depends on a numeric parameter - an angle $\\theta$, given in radians. \nThese gates are the $X$ rotation gate $R_x(\\theta)$, $Y$ rotation gate $R_y(\\theta)$, $Z$ rotation gate $R_z(\\theta)$, and the arbitrary phase gate $R_1(\\theta)$. \nNote that for the first three gates the parameter $\\theta$ is multiplied by $\\frac{1}{2}$ within the gate&#39;s matrix.</p>\n<blockquote>\n<p>These gates are known as rotation gates, because they represent rotations around various axes on the Bloch sphere. The Bloch sphere is a way of representing the qubit states visually, mapping them onto the surface of a sphere. \nUnfortunately, this visualization isn&#39;t very useful beyond single-qubit states, which is why we have opted not to go into details in this kata.\nIf you are curious about it, you can learn more in <a href=\"https://en.wikipedia.org/wiki/Bloch_sphere\" target=\"_blank\">this Wikipedia article</a>.</p>\n</blockquote>\n<table>\n <tr>\n <th>Gate</th>\n <th>Matrix</th>\n <th>Applying to $|\\psi\\rangle = \\alpha|0\\rangle + \\beta|1\\rangle$</th>\n <th>Applying to basis states</th>\n <th>Q# Documentation</th>\n </tr>\n <tr>\n <td>$R_x(\\theta)$</td>\n <td>$\\begin{bmatrix} \\cos\\frac{\\theta}{2} & -i\\sin\\frac{\\theta}{2} \\\\\\ -i\\sin\\frac{\\theta}{2} & \\cos\\frac{\\theta}{2} \\end{bmatrix}$</td>\n <td>$R_x(\\theta)|\\psi\\rangle = (\\alpha\\cos\\frac{\\theta}{2} - i\\beta\\sin\\frac{\\theta}{2})|0\\rangle + (\\beta\\cos\\frac{\\theta}{2} - i\\alpha\\sin\\frac{\\theta}{2})|1\\rangle$</td>\n <td>\n $R_x(\\theta)|0\\rangle = \\cos\\frac{\\theta}{2}|0\\rangle - i\\sin\\frac{\\theta}{2}|1\\rangle$<br>\n $R_x(\\theta)i\\sin\\frac{\\theta}{2}|0\\rangle$\n </td>\n <td><a href=\"https://docs.microsoft.com/qsharp/api/qsharp/microsoft.quantum.intrinsic.rx\" target=\"_blank\">Rx</a></td>\n </tr>\n <tr>\n <td>$R_y(\\theta)$</td>\n <td>$\\begin{bmatrix} \\cos\\frac{\\theta}{2} & -\\sin\\frac{\\theta}{2} \\\\\\ \\sin\\frac{\\theta}{2} & \\cos\\frac{\\theta}{2} \\end{bmatrix}$</td>\n <td>$R_y(\\theta)|\\psi\\rangle = (\\alpha\\cos\\frac{\\theta}{2} - \\beta\\sin\\frac{\\theta}{2})|0\\rangle + (\\beta\\cos\\frac{\\theta}{2} + \\alpha\\sin\\frac{\\theta}{2})|1\\rangle$</td>\n <td>\n $R_y(\\theta)|0\\rangle = \\cos\\frac{\\theta}{2}|0\\rangle + \\sin\\frac{\\theta}{2}|1\\rangle$<br>\n $R_y(\\theta)\\sin\\frac{\\theta}{2}|0\\rangle$\n </td>\n <td><a href=\"https://docs.microsoft.com/qsharp/api/qsharp/microsoft.quantum.intrinsic.ry\" target=\"_blank\">Ry</a></td>\n </tr>\n <tr>\n <td>$R_z(\\theta)$</td>\n <td>$\\begin{bmatrix} e^{-i\\theta/2} & 0 \\\\\\ 0 & e^{i\\theta/2} \\end{bmatrix}$</td>\n <td>$R_z(\\theta)|\\psi\\rangle = \\alpha e^{-i\\theta/2}|0\\rangle + \\beta e^{i\\theta/2}|1\\rangle$</td>\n <td>\n $R_z(\\theta)|0\\rangle = e^{-i\\theta/2}|0\\rangle$<br>\n $R_z(\\theta)$\n </td>\n <td><a href=\"https://docs.microsoft.com/qsharp/api/qsharp/microsoft.quantum.intrinsic.rz\" target=\"_blank\">Rz</a></td>\n </tr>\n <tr>\n <td>$R_1(\\theta)$</td>\n <td>$\\begin{bmatrix} 1 & 0 \\\\\\ 0 & e^{i\\theta} \\end{bmatrix}$</td>\n <td>$R_1(\\theta)|\\psi\\rangle = \\alpha|0\\rangle + \\beta e^{i\\theta}|1\\rangle$</td>\n <td>\n $R_1(\\theta)|0\\rangle = |0\\rangle$<br>\n $R_1(\\theta)$\n </td> \n <td><a href=\"https://docs.microsoft.com/qsharp/api/qsharp/microsoft.quantum.intrinsic.r1\" target=\"_blank\">R1</a></td>\n </tr>\n</table>\n\n<p>You have already encountered some special cases of the $R_1$ gate: </p>\n<p>$$T = R_1(\\frac{\\pi}{4}), S = R_1(\\frac{\\pi}{2}), Z = R_1(\\pi)$$</p>\n<p>In addition, this gate is closely related to the $R_z$ gate: applying $R_1$ gate is equivalent to applying the $R_z$ gate, and then applying a global phase: </p>\n<p>$$R_1(\\theta) = e^{i\\theta/2}R_z(\\theta)$$</p>\n<p>In addition, the rotation gates are very closely related to their respective Pauli gates: </p>\n<p>$$X = iR_x(\\pi), Y = iR_y(\\pi), Z = iR_z(\\pi)$$</p>\n",
467
- "asMarkdown": "\nThe next few gates are parametrized: their exact behavior depends on a numeric parameter - an angle $\\theta$, given in radians. \nThese gates are the $X$ rotation gate $R_x(\\theta)$, $Y$ rotation gate $R_y(\\theta)$, $Z$ rotation gate $R_z(\\theta)$, and the arbitrary phase gate $R_1(\\theta)$. \nNote that for the first three gates the parameter $\\theta$ is multiplied by $\\frac{1}{2}$ within the gate's matrix.\n\n> These gates are known as rotation gates, because they represent rotations around various axes on the Bloch sphere. The Bloch sphere is a way of representing the qubit states visually, mapping them onto the surface of a sphere. \n> Unfortunately, this visualization isn't very useful beyond single-qubit states, which is why we have opted not to go into details in this kata.\n> If you are curious about it, you can learn more in <a href=\"https://en.wikipedia.org/wiki/Bloch_sphere\" target=\"_blank\">this Wikipedia article</a>.\n\n<table>\n <tr>\n <th>Gate</th>\n <th>Matrix</th>\n <th>Applying to $|\\psi\\rangle = \\alpha|0\\rangle + \\beta|1\\rangle$</th>\n <th>Applying to basis states</th>\n <th>Q# Documentation</th>\n </tr>\n <tr>\n <td>$R_x(\\theta)$</td>\n <td>$\\begin{bmatrix} \\cos\\frac{\\theta}{2} & -i\\sin\\frac{\\theta}{2} \\\\\\ -i\\sin\\frac{\\theta}{2} & \\cos\\frac{\\theta}{2} \\end{bmatrix}$</td>\n <td>$R_x(\\theta)|\\psi\\rangle = (\\alpha\\cos\\frac{\\theta}{2} - i\\beta\\sin\\frac{\\theta}{2})|0\\rangle + (\\beta\\cos\\frac{\\theta}{2} - i\\alpha\\sin\\frac{\\theta}{2})|1\\rangle$</td>\n <td>\n $R_x(\\theta)|0\\rangle = \\cos\\frac{\\theta}{2}|0\\rangle - i\\sin\\frac{\\theta}{2}|1\\rangle$<br>\n $R_x(\\theta)i\\sin\\frac{\\theta}{2}|0\\rangle$\n </td>\n <td><a href=\"https://docs.microsoft.com/qsharp/api/qsharp/microsoft.quantum.intrinsic.rx\" target=\"_blank\">Rx</a></td>\n </tr>\n <tr>\n <td>$R_y(\\theta)$</td>\n <td>$\\begin{bmatrix} \\cos\\frac{\\theta}{2} & -\\sin\\frac{\\theta}{2} \\\\\\ \\sin\\frac{\\theta}{2} & \\cos\\frac{\\theta}{2} \\end{bmatrix}$</td>\n <td>$R_y(\\theta)|\\psi\\rangle = (\\alpha\\cos\\frac{\\theta}{2} - \\beta\\sin\\frac{\\theta}{2})|0\\rangle + (\\beta\\cos\\frac{\\theta}{2} + \\alpha\\sin\\frac{\\theta}{2})|1\\rangle$</td>\n <td>\n $R_y(\\theta)|0\\rangle = \\cos\\frac{\\theta}{2}|0\\rangle + \\sin\\frac{\\theta}{2}|1\\rangle$<br>\n $R_y(\\theta)\\sin\\frac{\\theta}{2}|0\\rangle$\n </td>\n <td><a href=\"https://docs.microsoft.com/qsharp/api/qsharp/microsoft.quantum.intrinsic.ry\" target=\"_blank\">Ry</a></td>\n </tr>\n <tr>\n <td>$R_z(\\theta)$</td>\n <td>$\\begin{bmatrix} e^{-i\\theta/2} & 0 \\\\\\ 0 & e^{i\\theta/2} \\end{bmatrix}$</td>\n <td>$R_z(\\theta)|\\psi\\rangle = \\alpha e^{-i\\theta/2}|0\\rangle + \\beta e^{i\\theta/2}|1\\rangle$</td>\n <td>\n $R_z(\\theta)|0\\rangle = e^{-i\\theta/2}|0\\rangle$<br>\n $R_z(\\theta)$\n </td>\n <td><a href=\"https://docs.microsoft.com/qsharp/api/qsharp/microsoft.quantum.intrinsic.rz\" target=\"_blank\">Rz</a></td>\n </tr>\n <tr>\n <td>$R_1(\\theta)$</td>\n <td>$\\begin{bmatrix} 1 & 0 \\\\\\ 0 & e^{i\\theta} \\end{bmatrix}$</td>\n <td>$R_1(\\theta)|\\psi\\rangle = \\alpha|0\\rangle + \\beta e^{i\\theta}|1\\rangle$</td>\n <td>\n $R_1(\\theta)|0\\rangle = |0\\rangle$<br>\n $R_1(\\theta)$\n </td> \n <td><a href=\"https://docs.microsoft.com/qsharp/api/qsharp/microsoft.quantum.intrinsic.r1\" target=\"_blank\">R1</a></td>\n </tr>\n</table>\n\nYou have already encountered some special cases of the $R_1$ gate: \n\n$$T = R_1(\\frac{\\pi}{4}), S = R_1(\\frac{\\pi}{2}), Z = R_1(\\pi)$$\n\nIn addition, this gate is closely related to the $R_z$ gate: applying $R_1$ gate is equivalent to applying the $R_z$ gate, and then applying a global phase: \n\n$$R_1(\\theta) = e^{i\\theta/2}R_z(\\theta)$$\n\nIn addition, the rotation gates are very closely related to their respective Pauli gates: \n\n$$X = iR_x(\\pi), Y = iR_y(\\pi), Z = iR_z(\\pi)$$"
466
+ "asHtml": "<p>The next few gates are parametrized: their exact behavior depends on a numeric parameter - an angle $\\theta$, given in radians. \nThese gates are the $X$ rotation gate $R_x(\\theta)$, $Y$ rotation gate $R_y(\\theta)$, $Z$ rotation gate $R_z(\\theta)$, and the arbitrary phase gate $R_1(\\theta)$. \nNote that for the first three gates the parameter $\\theta$ is multiplied by $\\frac{1}{2}$ within the gate&#39;s matrix.</p>\n<blockquote>\n<p>These gates are known as rotation gates, because they represent rotations around various axes on the Bloch sphere. The Bloch sphere is a way of representing the qubit states visually, mapping them onto the surface of a sphere. \nUnfortunately, this visualization isn&#39;t very useful beyond single-qubit states, which is why we have opted not to go into details in this kata.\nIf you are curious about it, you can learn more in <a href=\"https://en.wikipedia.org/wiki/Bloch_sphere\" target=\"_blank\">this Wikipedia article</a>.</p>\n</blockquote>\n<table>\n <tr>\n <th>Gate</th>\n <th>Matrix</th>\n <th>Applying to $|\\psi\\rangle = \\alpha|0\\rangle + \\beta|1\\rangle$</th>\n <th>Applying to basis states</th>\n <th>Q# Documentation</th>\n </tr>\n <tr>\n <td>$R_x(\\theta)$</td>\n <td>$\\begin{bmatrix} \\cos\\frac{\\theta}{2} & -i\\sin\\frac{\\theta}{2} \\\\\\ -i\\sin\\frac{\\theta}{2} & \\cos\\frac{\\theta}{2} \\end{bmatrix}$</td>\n <td>$R_x(\\theta)|\\psi\\rangle = (\\alpha\\cos\\frac{\\theta}{2} - i\\beta\\sin\\frac{\\theta}{2})|0\\rangle + (\\beta\\cos\\frac{\\theta}{2} - i\\alpha\\sin\\frac{\\theta}{2})|1\\rangle$</td>\n <td>\n $R_x(\\theta)|0\\rangle = \\cos\\frac{\\theta}{2}|0\\rangle - i\\sin\\frac{\\theta}{2}|1\\rangle$<br>\n $R_x(\\theta)|1\\rangle = \\cos\\frac{\\theta}{2}|1\\rangle - i\\sin\\frac{\\theta}{2}|0\\rangle$\n </td>\n <td><a href=\"https://docs.microsoft.com/qsharp/api/qsharp/microsoft.quantum.intrinsic.rx\" target=\"_blank\">Rx</a></td>\n </tr>\n <tr>\n <td>$R_y(\\theta)$</td>\n <td>$\\begin{bmatrix} \\cos\\frac{\\theta}{2} & -\\sin\\frac{\\theta}{2} \\\\\\ \\sin\\frac{\\theta}{2} & \\cos\\frac{\\theta}{2} \\end{bmatrix}$</td>\n <td>$R_y(\\theta)|\\psi\\rangle = (\\alpha\\cos\\frac{\\theta}{2} - \\beta\\sin\\frac{\\theta}{2})|0\\rangle + (\\beta\\cos\\frac{\\theta}{2} + \\alpha\\sin\\frac{\\theta}{2})|1\\rangle$</td>\n <td>\n $R_y(\\theta)|0\\rangle = \\cos\\frac{\\theta}{2}|0\\rangle + \\sin\\frac{\\theta}{2}|1\\rangle$<br>\n $R_y(\\theta)|1\\rangle = \\cos\\frac{\\theta}{2}|1\\rangle - \\sin\\frac{\\theta}{2}|0\\rangle$\n </td>\n <td><a href=\"https://docs.microsoft.com/qsharp/api/qsharp/microsoft.quantum.intrinsic.ry\" target=\"_blank\">Ry</a></td>\n </tr>\n <tr>\n <td>$R_z(\\theta)$</td>\n <td>$\\begin{bmatrix} e^{-i\\theta/2} & 0 \\\\\\ 0 & e^{i\\theta/2} \\end{bmatrix}$</td>\n <td>$R_z(\\theta)|\\psi\\rangle = \\alpha e^{-i\\theta/2}|0\\rangle + \\beta e^{i\\theta/2}|1\\rangle$</td>\n <td>\n $R_z(\\theta)|0\\rangle = e^{-i\\theta/2}|0\\rangle$<br>\n $R_z(\\theta)|1\\rangle = e^{i\\theta/2}|1\\rangle$\n </td>\n <td><a href=\"https://docs.microsoft.com/qsharp/api/qsharp/microsoft.quantum.intrinsic.rz\" target=\"_blank\">Rz</a></td>\n </tr>\n <tr>\n <td>$R_1(\\theta)$</td>\n <td>$\\begin{bmatrix} 1 & 0 \\\\\\ 0 & e^{i\\theta} \\end{bmatrix}$</td>\n <td>$R_1(\\theta)|\\psi\\rangle = \\alpha|0\\rangle + \\beta e^{i\\theta}|1\\rangle$</td>\n <td>\n $R_1(\\theta)|0\\rangle = |0\\rangle$<br>\n $R_1(\\theta)|1\\rangle = e^{i\\theta}|1\\rangle$\n </td> \n <td><a href=\"https://docs.microsoft.com/qsharp/api/qsharp/microsoft.quantum.intrinsic.r1\" target=\"_blank\">R1</a></td>\n </tr>\n</table>\n\n<p>You have already encountered some special cases of the $R_1$ gate: </p>\n<p>$$T = R_1(\\frac{\\pi}{4}), S = R_1(\\frac{\\pi}{2}), Z = R_1(\\pi)$$</p>\n<p>In addition, this gate is closely related to the $R_z$ gate: applying $R_1$ gate is equivalent to applying the $R_z$ gate, and then applying a global phase: </p>\n<p>$$R_1(\\theta) = e^{i\\theta/2}R_z(\\theta)$$</p>\n<p>In addition, the rotation gates are very closely related to their respective Pauli gates: </p>\n<p>$$X = iR_x(\\pi), Y = iR_y(\\pi), Z = iR_z(\\pi)$$</p>\n",
467
+ "asMarkdown": "\nThe next few gates are parametrized: their exact behavior depends on a numeric parameter - an angle $\\theta$, given in radians. \nThese gates are the $X$ rotation gate $R_x(\\theta)$, $Y$ rotation gate $R_y(\\theta)$, $Z$ rotation gate $R_z(\\theta)$, and the arbitrary phase gate $R_1(\\theta)$. \nNote that for the first three gates the parameter $\\theta$ is multiplied by $\\frac{1}{2}$ within the gate's matrix.\n\n> These gates are known as rotation gates, because they represent rotations around various axes on the Bloch sphere. The Bloch sphere is a way of representing the qubit states visually, mapping them onto the surface of a sphere. \n> Unfortunately, this visualization isn't very useful beyond single-qubit states, which is why we have opted not to go into details in this kata.\n> If you are curious about it, you can learn more in <a href=\"https://en.wikipedia.org/wiki/Bloch_sphere\" target=\"_blank\">this Wikipedia article</a>.\n\n<table>\n <tr>\n <th>Gate</th>\n <th>Matrix</th>\n <th>Applying to $|\\psi\\rangle = \\alpha|0\\rangle + \\beta|1\\rangle$</th>\n <th>Applying to basis states</th>\n <th>Q# Documentation</th>\n </tr>\n <tr>\n <td>$R_x(\\theta)$</td>\n <td>$\\begin{bmatrix} \\cos\\frac{\\theta}{2} & -i\\sin\\frac{\\theta}{2} \\\\\\ -i\\sin\\frac{\\theta}{2} & \\cos\\frac{\\theta}{2} \\end{bmatrix}$</td>\n <td>$R_x(\\theta)|\\psi\\rangle = (\\alpha\\cos\\frac{\\theta}{2} - i\\beta\\sin\\frac{\\theta}{2})|0\\rangle + (\\beta\\cos\\frac{\\theta}{2} - i\\alpha\\sin\\frac{\\theta}{2})|1\\rangle$</td>\n <td>\n $R_x(\\theta)|0\\rangle = \\cos\\frac{\\theta}{2}|0\\rangle - i\\sin\\frac{\\theta}{2}|1\\rangle$<br>\n $R_x(\\theta)|1\\rangle = \\cos\\frac{\\theta}{2}|1\\rangle - i\\sin\\frac{\\theta}{2}|0\\rangle$\n </td>\n <td><a href=\"https://docs.microsoft.com/qsharp/api/qsharp/microsoft.quantum.intrinsic.rx\" target=\"_blank\">Rx</a></td>\n </tr>\n <tr>\n <td>$R_y(\\theta)$</td>\n <td>$\\begin{bmatrix} \\cos\\frac{\\theta}{2} & -\\sin\\frac{\\theta}{2} \\\\\\ \\sin\\frac{\\theta}{2} & \\cos\\frac{\\theta}{2} \\end{bmatrix}$</td>\n <td>$R_y(\\theta)|\\psi\\rangle = (\\alpha\\cos\\frac{\\theta}{2} - \\beta\\sin\\frac{\\theta}{2})|0\\rangle + (\\beta\\cos\\frac{\\theta}{2} + \\alpha\\sin\\frac{\\theta}{2})|1\\rangle$</td>\n <td>\n $R_y(\\theta)|0\\rangle = \\cos\\frac{\\theta}{2}|0\\rangle + \\sin\\frac{\\theta}{2}|1\\rangle$<br>\n $R_y(\\theta)|1\\rangle = \\cos\\frac{\\theta}{2}|1\\rangle - \\sin\\frac{\\theta}{2}|0\\rangle$\n </td>\n <td><a href=\"https://docs.microsoft.com/qsharp/api/qsharp/microsoft.quantum.intrinsic.ry\" target=\"_blank\">Ry</a></td>\n </tr>\n <tr>\n <td>$R_z(\\theta)$</td>\n <td>$\\begin{bmatrix} e^{-i\\theta/2} & 0 \\\\\\ 0 & e^{i\\theta/2} \\end{bmatrix}$</td>\n <td>$R_z(\\theta)|\\psi\\rangle = \\alpha e^{-i\\theta/2}|0\\rangle + \\beta e^{i\\theta/2}|1\\rangle$</td>\n <td>\n $R_z(\\theta)|0\\rangle = e^{-i\\theta/2}|0\\rangle$<br>\n $R_z(\\theta)|1\\rangle = e^{i\\theta/2}|1\\rangle$\n </td>\n <td><a href=\"https://docs.microsoft.com/qsharp/api/qsharp/microsoft.quantum.intrinsic.rz\" target=\"_blank\">Rz</a></td>\n </tr>\n <tr>\n <td>$R_1(\\theta)$</td>\n <td>$\\begin{bmatrix} 1 & 0 \\\\\\ 0 & e^{i\\theta} \\end{bmatrix}$</td>\n <td>$R_1(\\theta)|\\psi\\rangle = \\alpha|0\\rangle + \\beta e^{i\\theta}|1\\rangle$</td>\n <td>\n $R_1(\\theta)|0\\rangle = |0\\rangle$<br>\n $R_1(\\theta)|1\\rangle = e^{i\\theta}|1\\rangle$\n </td> \n <td><a href=\"https://docs.microsoft.com/qsharp/api/qsharp/microsoft.quantum.intrinsic.r1\" target=\"_blank\">R1</a></td>\n </tr>\n</table>\n\nYou have already encountered some special cases of the $R_1$ gate: \n\n$$T = R_1(\\frac{\\pi}{4}), S = R_1(\\frac{\\pi}{2}), Z = R_1(\\pi)$$\n\nIn addition, this gate is closely related to the $R_z$ gate: applying $R_1$ gate is equivalent to applying the $R_z$ gate, and then applying a global phase: \n\n$$R_1(\\theta) = e^{i\\theta/2}R_z(\\theta)$$\n\nIn addition, the rotation gates are very closely related to their respective Pauli gates: \n\n$$X = iR_x(\\pi), Y = iR_y(\\pi), Z = iR_z(\\pi)$$"
468
468
  }
469
469
  ]
470
470
  },
@@ -535,8 +535,8 @@ export default {
535
535
  "items": [
536
536
  {
537
537
  "type": "text-content",
538
- "asHtml": "<p>Congratulations! In this Kata you learned the matrix and the Ket-Bra representation of quantum gates. Here are a few key concepts to keep in mind:</p>\n<ul>\n<li>Single-qubit gates act on individual qubits and are represented by $2 \\times 2$ unitary matrices.</li>\n<li>The effect of a gate applied to a qubit can be calculated by multiplying the corresponding matrix by the state vector of the qubit.</li>\n<li>Applying several quantum gates in sequence is equivalent to performing several matrix multiplications.</li>\n<li>A square matrix can be represented as the outer product of two vectors. The outer product is the matrix product of $|\\phi\\rangle$ and $\\langle\\psi|$, denoted as $|\\phi\\rangle\\langle\\psi|$.</li>\n<li>Pauli gates, phase shift gates, and rotation gates are examples of single-qubit gates. All of them are available in Q#.</li>\n</ul>\n<p>Next, you will learn about multi-qubit systems and the multi-qubit gates in the “Multi-Qubit Systems” Kata.</p>\n",
539
- "asMarkdown": "\nCongratulations! In this Kata you learned the matrix and the Ket-Bra representation of quantum gates. Here are a few key concepts to keep in mind:\n* Single-qubit gates act on individual qubits and are represented by $2 \\times 2$ unitary matrices.\n* The effect of a gate applied to a qubit can be calculated by multiplying the corresponding matrix by the state vector of the qubit.\n* Applying several quantum gates in sequence is equivalent to performing several matrix multiplications.\n* A square matrix can be represented as the outer product of two vectors. The outer product is the matrix product of $|\\phi\\rangle$ and $\\langle\\psi|$, denoted as $|\\phi\\rangle\\langle\\psi|$.\n* Pauli gates, phase shift gates, and rotation gates are examples of single-qubit gates. All of them are available in Q#.\n\nNext, you will learn about multi-qubit systems and the multi-qubit gates in the “Multi-Qubit Systems” Kata."
538
+ "asHtml": "<p>Congratulations! In this kata you learned the matrix and the ket-bra representation of quantum gates. Here are a few key concepts to keep in mind:</p>\n<ul>\n<li>Single-qubit gates act on individual qubits and are represented by $2 \\times 2$ unitary matrices.</li>\n<li>The effect of a gate applied to a qubit can be calculated by multiplying the corresponding matrix by the state vector of the qubit.</li>\n<li>Applying several quantum gates in sequence is equivalent to performing several matrix multiplications.</li>\n<li>Any square matrix can be represented as a linear combination of the outer products of vectors. The outer product is the matrix product of $|\\phi\\rangle$ and $\\langle\\psi|$, denoted as $|\\phi\\rangle\\langle\\psi|$.</li>\n<li>Pauli gates, phase shift gates, and rotation gates are examples of single-qubit gates. All of them are available in Q#.</li>\n</ul>\n<p>Next, you will learn about multi-qubit systems and the multi-qubit gates in the “Multi-Qubit Systems” kata.</p>\n",
539
+ "asMarkdown": "\nCongratulations! In this kata you learned the matrix and the ket-bra representation of quantum gates. Here are a few key concepts to keep in mind:\n* Single-qubit gates act on individual qubits and are represented by $2 \\times 2$ unitary matrices.\n* The effect of a gate applied to a qubit can be calculated by multiplying the corresponding matrix by the state vector of the qubit.\n* Applying several quantum gates in sequence is equivalent to performing several matrix multiplications.\n* Any square matrix can be represented as a linear combination of the outer products of vectors. The outer product is the matrix product of $|\\phi\\rangle$ and $\\langle\\psi|$, denoted as $|\\phi\\rangle\\langle\\psi|$.\n* Pauli gates, phase shift gates, and rotation gates are examples of single-qubit gates. All of them are available in Q#.\n\nNext, you will learn about multi-qubit systems and the multi-qubit gates in the “Multi-Qubit Systems” kata."
540
540
  }
541
541
  ]
542
542
  }
@@ -1292,7 +1292,7 @@ export default {
1292
1292
  {
1293
1293
  "type": "exercise",
1294
1294
  "id": "single_qubit_measurements__a_b_basis_measurements",
1295
- "title": "Measurement In The |A〉, |B〉 Basis",
1295
+ "title": "Measurement in the |A〉, |B〉 Basis",
1296
1296
  "description": {
1297
1297
  "type": "text-content",
1298
1298
  "asHtml": "<p><strong>Inputs:</strong></p>\n<ol>\n<li>Angle $\\alpha$, in radians, represented as a <code>Double</code>.</li>\n<li>A qubit in some unknown state.</li>\n</ol>\n<p><strong>Output:</strong> Implement a measurement in the ${\\ket A, \\ket B}$ basis. Same as in the previous exercise, $|A\\rangle = \\cos \\alpha |0\\rangle - i \\sin \\alpha |1\\rangle$ and $|B\\rangle = - i \\sin \\alpha |0\\rangle + \\cos \\alpha |1\\rangle$. Return <code>Zero</code> if the measurement outcome is $A$, and <code>One</code> if the outcome is $B$.\nThe state of the qubit after the measurement should correspond to the measurement result.</p>\n<details>\n <summary><strong>Need a hint?</strong></summary>\n <p>An $R_x$ rotation can be used to go from the computational basis $\\{ \\ket 0, \\ket 1 \\}$ to the $\\{ \\ket{A}, \\ket{B} \\}$ basis and vice versa.</p>\n</details>\n",
@@ -1648,8 +1648,8 @@ export default {
1648
1648
  "items": [
1649
1649
  {
1650
1650
  "type": "text-content",
1651
- "asHtml": "<p>Congratulations! In this kata you learned how to apply measurements on multi-qubit systems. Here are a few key concepts to keep in mind:</p>\n<ul>\n<li>Full measurements: you measure all the qubits simultaneously in an orthogonal basis ($2^n$ possible outcomes).</li>\n<li>Partial measurements: you measure qubits $m$ out of $n$, for $m&lt; n$ ($2^m$ possible outcomes).</li>\n<li>Joint measurement: Pauli measurement of all $n$ qubits (2 possible outcomes).</li>\n</ul>\n<p>Next, you will implement a quantum algorithm to generate random numbers in &quot;Quantum Random Number Generation&quot; kata.</p>\n",
1652
- "asMarkdown": "\nCongratulations! In this kata you learned how to apply measurements on multi-qubit systems. Here are a few key concepts to keep in mind:\n* Full measurements: you measure all the qubits simultaneously in an orthogonal basis ($2^n$ possible outcomes).\n* Partial measurements: you measure qubits $m$ out of $n$, for $m< n$ ($2^m$ possible outcomes).\n* Joint measurement: Pauli measurement of all $n$ qubits (2 possible outcomes).\n\nNext, you will implement a quantum algorithm to generate random numbers in \"Quantum Random Number Generation\" kata."
1651
+ "asHtml": "<p>Congratulations! In this kata you learned how to apply measurements on multi-qubit systems. Here are a few key concepts to keep in mind:</p>\n<ul>\n<li>Full measurements: you measure all the qubits simultaneously in an orthogonal basis ($2^n$ possible outcomes).</li>\n<li>Partial measurements: you measure $m$ qubits out of $n$, for $m&lt; n$ ($2^m$ possible outcomes).</li>\n<li>Joint measurement: Pauli measurement of all $n$ qubits ($2$ possible outcomes).</li>\n</ul>\n<p>Next, you will implement a quantum algorithm to generate random numbers in &quot;Quantum Random Number Generation&quot; kata.</p>\n",
1652
+ "asMarkdown": "\nCongratulations! In this kata you learned how to apply measurements on multi-qubit systems. Here are a few key concepts to keep in mind:\n* Full measurements: you measure all the qubits simultaneously in an orthogonal basis ($2^n$ possible outcomes).\n* Partial measurements: you measure $m$ qubits out of $n$, for $m< n$ ($2^m$ possible outcomes).\n* Joint measurement: Pauli measurement of all $n$ qubits ($2$ possible outcomes).\n\nNext, you will implement a quantum algorithm to generate random numbers in \"Quantum Random Number Generation\" kata."
1653
1653
  }
1654
1654
  ]
1655
1655
  }
@@ -1845,8 +1845,8 @@ export default {
1845
1845
  "items": [
1846
1846
  {
1847
1847
  "type": "text-content",
1848
- "asHtml": "<p>Congratulations! In this Kata you have created a truly random number generator using quantum computing. Here are a few key concepts to keep in mind:</p>\n<ul>\n<li>You can generate a random bit by applying a Hadamard gate to a state $\\ket{0}$, and then measuring the resulting qubit in the computational basis.</li>\n<li>The Q# <a href=\"https://docs.microsoft.com/en-us/qsharp/api/qsharp/microsoft.quantum.math.bitsizei\" target=\"_blank\">BitSizeI function</a> returns the numbers of bits needed to write an integer in binary.</li>\n</ul>\n<p><strong>Next Steps</strong></p>\n<p>We hope you enjoyed this Kata on quantum random number generation! If you&#39;re looking to learn more about quantum computing and Q#, here are some suggestions:</p>\n<ul>\n<li>To learn about superposition, interference and entanglement by using Q#, you can check <a href=\"https://learn.microsoft.com/en-us/training/modules/qsharp-explore-key-concepts-quantum-computing/\" target=\"_blank\">Microsoft Learn module &quot;Explore the key concepts of quantum computing by using Q#&quot;</a>.</li>\n<li>For another look at quantum random number generation, you can check out the <a href=\"https://docs.microsoft.com/learn/modules/qsharp-create-first-quantum-development-kit/1-introduction\" target=\"_blank\">Microsoft Learn module &quot;Create your first Q# program by using the Quantum Development Kit&quot;</a>.</li>\n</ul>\n",
1849
- "asMarkdown": "\nCongratulations! In this Kata you have created a truly random number generator using quantum computing. Here are a few key concepts to keep in mind:\n* You can generate a random bit by applying a Hadamard gate to a state $\\ket{0}$, and then measuring the resulting qubit in the computational basis.\n* The Q# <a href=\"https://docs.microsoft.com/en-us/qsharp/api/qsharp/microsoft.quantum.math.bitsizei\" target=\"_blank\">BitSizeI function</a> returns the numbers of bits needed to write an integer in binary.\n\n**Next Steps**\n\nWe hope you enjoyed this Kata on quantum random number generation! If you're looking to learn more about quantum computing and Q#, here are some suggestions:\n* To learn about superposition, interference and entanglement by using Q#, you can check <a href=\"https://learn.microsoft.com/en-us/training/modules/qsharp-explore-key-concepts-quantum-computing/\" target=\"_blank\">Microsoft Learn module \"Explore the key concepts of quantum computing by using Q#\"</a>.\n* For another look at quantum random number generation, you can check out the <a href=\"https://docs.microsoft.com/learn/modules/qsharp-create-first-quantum-development-kit/1-introduction\" target=\"_blank\">Microsoft Learn module \"Create your first Q# program by using the Quantum Development Kit\"</a>."
1848
+ "asHtml": "<p>Congratulations! In this kata you have created a random number generator. Here are a few key concepts to keep in mind:</p>\n<ul>\n<li>This code will generate truly random numbers when executed on a true quantum computer. Random numbers obtained when executing on a simulator are only as good as the source of randomness used by the simulator.</li>\n<li>You can generate a random bit by applying a Hadamard gate to a state $\\ket{0}$, and then measuring the resulting qubit in the computational basis.</li>\n<li>The Q# <a href=\"https://docs.microsoft.com/en-us/qsharp/api/qsharp/microsoft.quantum.math.bitsizei\" target=\"_blank\">BitSizeI function</a> returns the number of bits needed to write an integer in binary.</li>\n</ul>\n<p><strong>Next Steps</strong></p>\n<p>We hope you enjoyed this kata on quantum random number generation! If you&#39;re looking to learn more about quantum computing and Q#, here are some suggestions:</p>\n<ul>\n<li>To learn about superposition, interference and entanglement by using Q#, you can check the <a href=\"https://learn.microsoft.com/en-us/training/modules/qsharp-explore-key-concepts-quantum-computing/\" target=\"_blank\">Microsoft Learn module &quot;Explore the key concepts of quantum computing by using Q#&quot;</a>.</li>\n<li>For another look at quantum random number generation, you can check out the <a href=\"https://docs.microsoft.com/learn/modules/qsharp-create-first-quantum-development-kit/1-introduction\" target=\"_blank\">Microsoft Learn module &quot;Create your first Q# program by using the Quantum Development Kit&quot;</a>.</li>\n</ul>\n",
1849
+ "asMarkdown": "\nCongratulations! In this kata you have created a random number generator. Here are a few key concepts to keep in mind:\n* This code will generate truly random numbers when executed on a true quantum computer. Random numbers obtained when executing on a simulator are only as good as the source of randomness used by the simulator.\n* You can generate a random bit by applying a Hadamard gate to a state $\\ket{0}$, and then measuring the resulting qubit in the computational basis.\n* The Q# <a href=\"https://docs.microsoft.com/en-us/qsharp/api/qsharp/microsoft.quantum.math.bitsizei\" target=\"_blank\">BitSizeI function</a> returns the number of bits needed to write an integer in binary.\n\n**Next Steps**\n\nWe hope you enjoyed this kata on quantum random number generation! If you're looking to learn more about quantum computing and Q#, here are some suggestions:\n* To learn about superposition, interference and entanglement by using Q#, you can check the <a href=\"https://learn.microsoft.com/en-us/training/modules/qsharp-explore-key-concepts-quantum-computing/\" target=\"_blank\">Microsoft Learn module \"Explore the key concepts of quantum computing by using Q#\"</a>.\n* For another look at quantum random number generation, you can check out the <a href=\"https://docs.microsoft.com/learn/modules/qsharp-create-first-quantum-development-kit/1-introduction\" target=\"_blank\">Microsoft Learn module \"Create your first Q# program by using the Quantum Development Kit\"</a>."
1850
1850
  }
1851
1851
  ]
1852
1852
  }
@@ -1978,8 +1978,8 @@ export default {
1978
1978
  "items": [
1979
1979
  {
1980
1980
  "type": "text-content",
1981
- "asHtml": "<p>A marking oracle $U_{mark}$ is an oracle that encodes the value of the classical function $f$ it implements in the <em>amplitude</em> of the qubit state. When provided an input array of qubits in the basis state $|\\vec{x}\\rangle$ and an output qubit in the basis state $|y\\rangle$, it flips the state of the output qubit if $f(x)=1$. (You can also represent this as addition modulo 2 between $f(x)$ and $y$.) Hence $U_{mark}$ is an operator that performs the following operation:</p>\n<p>$$U_{mark}|\\vec{x}\\rangle |y\\rangle = U_{mark}\\big(|\\vec{x}\\rangle \\otimes |y\\rangle\\big) = |\\vec{x}\\rangle \\otimes |y \\oplus f(x)\\rangle$$</p>\n<p>Again, since all quantum operations are linear, you can figure out the effect of this operation on superposition state knowing its effect on the basis states using its linearity. </p>\n<p>A marking oracle has distinct &quot;input&quot; and &quot;output&quot; qubits, but in general the effect of the oracle application is the change in the state of the whole system rather than of the &quot;output&quot; qubits only. We will look at this closer in a moment.</p>\n<h2 id=\"marking-oracle-for-alternating-bit-pattern-function\">Marking Oracle for Alternating Bit Pattern Function</h2>\n<p>Consider the function $f(x)$ that takes $3$ bits of input and returns $1$ if $x=101$ or $x=010$, and $0$ otherwise (it is the same function we&#39;ve seen in demo 1.1).</p>\n<p>The marking oracle that implements this function will take an array of 3 qubits as an &quot;input&quot; register and an &quot;output&quot; qubit, and will flip the state of the output qubit if the input qubit was in basis state $|101\\rangle$ or $|010\\rangle$, and do nothing otherwise. Let&#39;s see the effect of this oracle on a superposition state.</p>\n",
1982
- "asMarkdown": "\nA marking oracle $U_{mark}$ is an oracle that encodes the value of the classical function $f$ it implements in the *amplitude* of the qubit state. When provided an input array of qubits in the basis state $|\\vec{x}\\rangle$ and an output qubit in the basis state $|y\\rangle$, it flips the state of the output qubit if $f(x)=1$. (You can also represent this as addition modulo 2 between $f(x)$ and $y$.) Hence $U_{mark}$ is an operator that performs the following operation:\n\n$$U_{mark}|\\vec{x}\\rangle |y\\rangle = U_{mark}\\big(|\\vec{x}\\rangle \\otimes |y\\rangle\\big) = |\\vec{x}\\rangle \\otimes |y \\oplus f(x)\\rangle$$\n\nAgain, since all quantum operations are linear, you can figure out the effect of this operation on superposition state knowing its effect on the basis states using its linearity. \n\nA marking oracle has distinct \"input\" and \"output\" qubits, but in general the effect of the oracle application is the change in the state of the whole system rather than of the \"output\" qubits only. We will look at this closer in a moment.\n\n## Marking Oracle for Alternating Bit Pattern Function\n\nConsider the function $f(x)$ that takes $3$ bits of input and returns $1$ if $x=101$ or $x=010$, and $0$ otherwise (it is the same function we've seen in demo 1.1).\n\nThe marking oracle that implements this function will take an array of 3 qubits as an \"input\" register and an \"output\" qubit, and will flip the state of the output qubit if the input qubit was in basis state $|101\\rangle$ or $|010\\rangle$, and do nothing otherwise. Let's see the effect of this oracle on a superposition state."
1981
+ "asHtml": "<p>A marking oracle $U_{mark}$ is an oracle that encodes the value of the classical function $f$ it implements in the <em>amplitude</em> of the qubit state. When provided an input array of qubits in the basis state $|\\vec{x}\\rangle$ and an output qubit in the basis state $|y\\rangle$, it flips the state of the output qubit if $f(x)=1$. (You can also represent this as addition modulo 2 between $f(x)$ and $y$.) Hence $U_{mark}$ is an operator that performs the following operation:</p>\n<p>$$U_{mark}|\\vec{x}\\rangle |y\\rangle = U_{mark}\\big(|\\vec{x}\\rangle \\otimes |y\\rangle\\big) = |\\vec{x}\\rangle \\otimes |y \\oplus f(x)\\rangle$$</p>\n<p>Again, since all quantum operations are linear, you can figure out the effect of this operation on superposition state knowing its effect on the basis states using its linearity. </p>\n<p>A marking oracle has distinct &quot;input&quot; and &quot;output&quot; qubits, but in general the effect of the oracle application is the change in the state of the whole system rather than of the &quot;output&quot; qubits only. We will look at this closer in a moment.</p>\n<h2 id=\"marking-oracle-for-alternating-bit-pattern-function\">Marking Oracle for Alternating Bit Pattern Function</h2>\n<p>Consider the function $f(x)$ that takes $3$ bits of input and returns $1$ if $x=101$ or $x=010$, and $0$ otherwise (it is the same function we&#39;ve seen in the demo &quot;Phase oracle for alternating bit pattern function&quot;).</p>\n<p>The marking oracle that implements this function will take an array of 3 qubits as an &quot;input&quot; register and an &quot;output&quot; qubit, and will flip the state of the output qubit if the input qubit was in basis state $|101\\rangle$ or $|010\\rangle$, and do nothing otherwise. Let&#39;s see the effect of this oracle on a superposition state.</p>\n",
1982
+ "asMarkdown": "\nA marking oracle $U_{mark}$ is an oracle that encodes the value of the classical function $f$ it implements in the *amplitude* of the qubit state. When provided an input array of qubits in the basis state $|\\vec{x}\\rangle$ and an output qubit in the basis state $|y\\rangle$, it flips the state of the output qubit if $f(x)=1$. (You can also represent this as addition modulo 2 between $f(x)$ and $y$.) Hence $U_{mark}$ is an operator that performs the following operation:\n\n$$U_{mark}|\\vec{x}\\rangle |y\\rangle = U_{mark}\\big(|\\vec{x}\\rangle \\otimes |y\\rangle\\big) = |\\vec{x}\\rangle \\otimes |y \\oplus f(x)\\rangle$$\n\nAgain, since all quantum operations are linear, you can figure out the effect of this operation on superposition state knowing its effect on the basis states using its linearity. \n\nA marking oracle has distinct \"input\" and \"output\" qubits, but in general the effect of the oracle application is the change in the state of the whole system rather than of the \"output\" qubits only. We will look at this closer in a moment.\n\n## Marking Oracle for Alternating Bit Pattern Function\n\nConsider the function $f(x)$ that takes $3$ bits of input and returns $1$ if $x=101$ or $x=010$, and $0$ otherwise (it is the same function we've seen in the demo \"Phase oracle for alternating bit pattern function\").\n\nThe marking oracle that implements this function will take an array of 3 qubits as an \"input\" register and an \"output\" qubit, and will flip the state of the output qubit if the input qubit was in basis state $|101\\rangle$ or $|010\\rangle$, and do nothing otherwise. Let's see the effect of this oracle on a superposition state."
1983
1983
  },
1984
1984
  {
1985
1985
  "type": "example",
@@ -2242,22 +2242,22 @@ export default {
2242
2242
  "title": "Implement the Meeting Oracle",
2243
2243
  "description": {
2244
2244
  "type": "text-content",
2245
- "asHtml": "<p>Suppose that you would like to schedule a meeting with your co-worker Jasmine. \nYou both work five day workweeks, and $|x\\rangle$ and $|jasmine\\rangle$ are 5-bit states represent your and Jasmine&#39;s schedules. \nThe schedules are indicators of a person being busy on that day: a $1$ bit means that person is busy on that day, and $0$ means they&#39;re free for a meeting that day. Implement a function that determines if you and Jasmine can schedule a meeting during the week, i.e., whether there is a day when both schedules have a $0$ simultaneously.</p>\n<p><strong>Inputs:</strong></p>\n<ol>\n<li>5 qubits in an arbitrary state $|x\\rangle$ representing your schedule for the week (input/query register).</li>\n<li>5 qubits in an arbitrary state $|jasmine\\rangle$ representing Jasmine&#39;s schedule for the week (input/query register).</li>\n<li>A qubit in an arbitrary state $|y\\rangle$ (target qubit).</li>\n</ol>\n<p><strong>Goal:</strong></p>\n<p>Flip the state of $|y\\rangle$ if you and Jasmine are both free on the same day for at least one day during the week. Recall that a $0$ means that a person is free on that day.</p>\n<p><strong>Examples:</strong></p>\n<ul>\n<li>If $|x\\rangle=|10101\\rangle$ and $|jasmine\\rangle=|01010\\rangle$, do nothing (there is no day on which you both are free).</li>\n<li>If $|x\\rangle=|10001\\rangle$ and $|jasmine\\rangle=|01010\\rangle$, flip the state $|y\\rangle$ (you are both free on Wednesday).</li>\n<li>If $|x\\rangle=|00000\\rangle$ and $|jasmine\\rangle=|00000\\rangle$, flip the state $|z\\rangle$ (you are both free all week).</li>\n<li>If $|x\\rangle=|11111\\rangle$ and $|jasmine\\rangle=|11111\\rangle$, do nothing (you are both busy all week).</li>\n</ul>\n<br/>\n<details>\n <summary><b>Before implementing this oracle, answer the question: are you implementing a marking or a phase oracle?</b></summary>\n This is a marking oracle, because we are flipping the state of the target qubit $|y\\rangle$ based on the state of the inputs $|x\\rangle$ and $|jasmine\\rangle$. Notice that even though we do not have the typical single-input-register situation that we saw earlier, this is still a marking oracle.\n</details>\n",
2246
- "asMarkdown": "Suppose that you would like to schedule a meeting with your co-worker Jasmine. \nYou both work five day workweeks, and $|x\\rangle$ and $|jasmine\\rangle$ are 5-bit states represent your and Jasmine's schedules. \nThe schedules are indicators of a person being busy on that day: a $1$ bit means that person is busy on that day, and $0$ means they're free for a meeting that day. Implement a function that determines if you and Jasmine can schedule a meeting during the week, i.e., whether there is a day when both schedules have a $0$ simultaneously.\n\n**Inputs:**\n\n 1. 5 qubits in an arbitrary state $|x\\rangle$ representing your schedule for the week (input/query register).\n 2. 5 qubits in an arbitrary state $|jasmine\\rangle$ representing Jasmine's schedule for the week (input/query register).\n 3. A qubit in an arbitrary state $|y\\rangle$ (target qubit).\n\n**Goal:**\n\nFlip the state of $|y\\rangle$ if you and Jasmine are both free on the same day for at least one day during the week. Recall that a $0$ means that a person is free on that day.\n\n**Examples:**\n\n* If $|x\\rangle=|10101\\rangle$ and $|jasmine\\rangle=|01010\\rangle$, do nothing (there is no day on which you both are free).\n* If $|x\\rangle=|10001\\rangle$ and $|jasmine\\rangle=|01010\\rangle$, flip the state $|y\\rangle$ (you are both free on Wednesday).\n* If $|x\\rangle=|00000\\rangle$ and $|jasmine\\rangle=|00000\\rangle$, flip the state $|z\\rangle$ (you are both free all week).\n* If $|x\\rangle=|11111\\rangle$ and $|jasmine\\rangle=|11111\\rangle$, do nothing (you are both busy all week).\n \n<br/>\n<details>\n <summary><b>Before implementing this oracle, answer the question: are you implementing a marking or a phase oracle?</b></summary>\n This is a marking oracle, because we are flipping the state of the target qubit $|y\\rangle$ based on the state of the inputs $|x\\rangle$ and $|jasmine\\rangle$. Notice that even though we do not have the typical single-input-register situation that we saw earlier, this is still a marking oracle.\n</details>\n"
2245
+ "asHtml": "<p>Suppose that you would like to schedule a meeting with your co-worker Jasmine.\nYou both work five day workweeks, and $|x\\rangle$ and $|jasmine\\rangle$ are 5-bit states representing your and Jasmine&#39;s schedules.\nThe schedules are indicators of a person being busy on that day: a $1$ bit means that person is busy on that day, and $0$ means they&#39;re free for a meeting that day. Implement a function that determines if you and Jasmine can schedule a meeting during the week, i.e., whether there is a day when both schedules have a $0$ simultaneously.</p>\n<p><strong>Inputs:</strong></p>\n<ol>\n<li>5 qubits in an arbitrary state $|x\\rangle$ representing your schedule for the week (input/query register).</li>\n<li>5 qubits in an arbitrary state $|jasmine\\rangle$ representing Jasmine&#39;s schedule for the week (input/query register).</li>\n<li>A qubit in an arbitrary state $|y\\rangle$ (target qubit).</li>\n</ol>\n<p><strong>Goal:</strong></p>\n<p>Flip the state of $|y\\rangle$ if you and Jasmine are both free on the same day for at least one day during the week. Recall that a $0$ means that a person is free on that day.</p>\n<p><strong>Examples:</strong></p>\n<ul>\n<li>If $|x\\rangle=|10101\\rangle$ and $|jasmine\\rangle=|01010\\rangle$, do nothing (there is no day on which you both are free).</li>\n<li>If $|x\\rangle=|10001\\rangle$ and $|jasmine\\rangle=|01010\\rangle$, flip the state $|y\\rangle$ (you are both free on Wednesday).</li>\n<li>If $|x\\rangle=|00000\\rangle$ and $|jasmine\\rangle=|00000\\rangle$, flip the state $|y\\rangle$ (you are both free all week).</li>\n<li>If $|x\\rangle=|11111\\rangle$ and $|jasmine\\rangle=|11111\\rangle$, do nothing (you are both busy all week).</li>\n</ul>\n<br/>\n<details>\n <summary><b>Before implementing this oracle, answer the question: are you implementing a marking or a phase oracle?</b></summary>\n This is a marking oracle, because we are flipping the state of the target qubit $|y\\rangle$ based on the state of the inputs $|x\\rangle$ and $|jasmine\\rangle$. Notice that even though we do not have the typical single-input-register situation that we saw earlier, this is still a marking oracle.\n</details>\n",
2246
+ "asMarkdown": "Suppose that you would like to schedule a meeting with your co-worker Jasmine.\nYou both work five day workweeks, and $|x\\rangle$ and $|jasmine\\rangle$ are 5-bit states representing your and Jasmine's schedules.\nThe schedules are indicators of a person being busy on that day: a $1$ bit means that person is busy on that day, and $0$ means they're free for a meeting that day. Implement a function that determines if you and Jasmine can schedule a meeting during the week, i.e., whether there is a day when both schedules have a $0$ simultaneously.\n\n**Inputs:**\n\n 1. 5 qubits in an arbitrary state $|x\\rangle$ representing your schedule for the week (input/query register).\n 2. 5 qubits in an arbitrary state $|jasmine\\rangle$ representing Jasmine's schedule for the week (input/query register).\n 3. A qubit in an arbitrary state $|y\\rangle$ (target qubit).\n\n**Goal:**\n\nFlip the state of $|y\\rangle$ if you and Jasmine are both free on the same day for at least one day during the week. Recall that a $0$ means that a person is free on that day.\n\n**Examples:**\n\n* If $|x\\rangle=|10101\\rangle$ and $|jasmine\\rangle=|01010\\rangle$, do nothing (there is no day on which you both are free).\n* If $|x\\rangle=|10001\\rangle$ and $|jasmine\\rangle=|01010\\rangle$, flip the state $|y\\rangle$ (you are both free on Wednesday).\n* If $|x\\rangle=|00000\\rangle$ and $|jasmine\\rangle=|00000\\rangle$, flip the state $|y\\rangle$ (you are both free all week).\n* If $|x\\rangle=|11111\\rangle$ and $|jasmine\\rangle=|11111\\rangle$, do nothing (you are both busy all week).\n \n<br/>\n<details>\n <summary><b>Before implementing this oracle, answer the question: are you implementing a marking or a phase oracle?</b></summary>\n This is a marking oracle, because we are flipping the state of the target qubit $|y\\rangle$ based on the state of the inputs $|x\\rangle$ and $|jasmine\\rangle$. Notice that even though we do not have the typical single-input-register situation that we saw earlier, this is still a marking oracle.\n</details>\n"
2247
2247
  },
2248
2248
  "sourceIds": [
2249
2249
  "KatasLibrary.qs",
2250
2250
  "oracles__common.qs",
2251
2251
  "oracles__meeting_oracle__verification.qs"
2252
2252
  ],
2253
- "placeholderCode": "namespace Kata {\n operation Meeting_Oracle(x : Qubit[], jasmine : Qubit[], z : Qubit)\n : Unit is Adj + Ctl {\n // Implement your solution here...\n\n }\n}\n",
2253
+ "placeholderCode": "namespace Kata {\n operation Meeting_Oracle(x: Qubit[], jasmine: Qubit[], y: Qubit)\n : Unit is Adj + Ctl {\n // Implement your solution here...\n\n }\n}\n",
2254
2254
  "explainedSolution": {
2255
2255
  "type": "explained-solution",
2256
2256
  "items": [
2257
2257
  {
2258
2258
  "type": "solution",
2259
2259
  "id": "oracles__meeting_oracle_solution",
2260
- "code": "namespace Kata {\n open Microsoft.Quantum.Arrays;\n\n operation Or_Oracle(x: Qubit[], y: Qubit): Unit is Adj + Ctl {\n X(y);\n ApplyControlledOnInt(0, X, x, y);\n }\n\n operation Meeting_Oracle(x: Qubit[], jasmine: Qubit[], z: Qubit): Unit is Adj + Ctl {\n use q = Qubit[Length(x)];\n within {\n for i in IndexRange(q) {\n // flip q[i] if both x and jasmine are free on the given day\n X(x[i]);\n X(jasmine[i]);\n CCNOT(x[i], jasmine[i], q[i]);\n }\n } apply {\n Or_Oracle(q, z);\n }\n }\n}\n"
2260
+ "code": "namespace Kata {\n open Microsoft.Quantum.Arrays;\n\n operation Or_Oracle(x: Qubit[], y: Qubit): Unit is Adj + Ctl {\n X(y);\n ApplyControlledOnInt(0, X, x, y);\n }\n\n operation Meeting_Oracle(x: Qubit[], jasmine: Qubit[], y: Qubit): Unit is Adj + Ctl {\n use q = Qubit[Length(x)];\n within {\n for i in IndexRange(q) {\n // flip q[i] if both x and jasmine are free on the given day\n X(x[i]);\n X(jasmine[i]);\n CCNOT(x[i], jasmine[i], q[i]);\n }\n } apply {\n Or_Oracle(q, y);\n }\n }\n}\n"
2261
2261
  }
2262
2262
  ]
2263
2263
  }
@@ -2269,8 +2269,8 @@ export default {
2269
2269
  "items": [
2270
2270
  {
2271
2271
  "type": "text-content",
2272
- "asHtml": "<p>In this demo we show how you could test an oracle that you&#39;ve implemented for your own problem. \nFor all of the previous oracles that you&#39;ve implemented, we&#39;ve been testing your oracle against a reference solution for that task. \nHowever, if you&#39;re designing an oracle for a new problem, you do not have a reference solution for it - if you did, there would be no point for you to program the oracle in the first place!</p>\n<p>A good way to test a quantum oracle of interest is to write a classical oracle that performs the same computation classically, and then compare the effect of your quantum oracle on the basis states with the output of the classical oracle for every input (or a lot of the inputs if you are constrained by runtime) to ensure that they match.</p>\n<p>Here we will compare the reference implementation of <code>Meeting_Classical</code> oracle to the classical code implementing the same function.</p>\n",
2273
- "asMarkdown": "\nIn this demo we show how you could test an oracle that you've implemented for your own problem. \nFor all of the previous oracles that you've implemented, we've been testing your oracle against a reference solution for that task. \nHowever, if you're designing an oracle for a new problem, you do not have a reference solution for it - if you did, there would be no point for you to program the oracle in the first place!\n\nA good way to test a quantum oracle of interest is to write a classical oracle that performs the same computation classically, and then compare the effect of your quantum oracle on the basis states with the output of the classical oracle for every input (or a lot of the inputs if you are constrained by runtime) to ensure that they match.\n\nHere we will compare the reference implementation of `Meeting_Classical` oracle to the classical code implementing the same function."
2272
+ "asHtml": "<p>In this demo we show how you could test an oracle that you&#39;ve implemented for your own problem. \nFor all of the previous oracles that you&#39;ve implemented, we&#39;ve been testing your oracle against a reference solution for that task. \nHowever, if you&#39;re designing an oracle for a new problem, you do not have a reference solution for it - if you did, there would be no point for you to program the oracle in the first place!</p>\n<p>A good way to test a quantum oracle of interest is to write a classical oracle that performs the same computation classically, and then compare the effect of your quantum oracle on the basis states with the output of the classical oracle for every input (or a lot of the inputs if you are constrained by runtime) to ensure that they match.</p>\n<p>Here we will compare the reference implementation of <code>Meeting_Oracle</code> to the classical code implementing the same function.</p>\n",
2273
+ "asMarkdown": "\nIn this demo we show how you could test an oracle that you've implemented for your own problem. \nFor all of the previous oracles that you've implemented, we've been testing your oracle against a reference solution for that task. \nHowever, if you're designing an oracle for a new problem, you do not have a reference solution for it - if you did, there would be no point for you to program the oracle in the first place!\n\nA good way to test a quantum oracle of interest is to write a classical oracle that performs the same computation classically, and then compare the effect of your quantum oracle on the basis states with the output of the classical oracle for every input (or a lot of the inputs if you are constrained by runtime) to ensure that they match.\n\nHere we will compare the reference implementation of `Meeting_Oracle` to the classical code implementing the same function."
2274
2274
  },
2275
2275
  {
2276
2276
  "type": "example",
@@ -2286,8 +2286,8 @@ export default {
2286
2286
  "items": [
2287
2287
  {
2288
2288
  "type": "text-content",
2289
- "asHtml": "<p>Congratulations! In this kata you have learned to build quantum oracles. Here are a few key concepts to keep in mind:</p>\n<ul>\n<li>A quantum oracle is an &quot;opaque box&quot; operation that is used as input to another algorithm.</li>\n<li>Phase oracles encode the information in the relative phase of basis states $\\ket{0}$ and $\\ket{1}$. If $f(x)=0$, it does nothing, and if $f(x)=1$ it multiplies the phase of the basis states for which by $-1$.</li>\n<li>Marking oracles uses an extra qubit $\\ket{y}$ and encode the information in the state of that qubit. If $f(x)=0$, it does nothing, and if $f(x)=1$ it it flips the state of the qubit $\\ket{y}$.</li>\n</ul>\n<p><strong>Next Steps</strong></p>\n<p>We hope you enjoyed this kata! If you&#39;re looking to learn more about quantum oracles and Q#, here are some suggestions:</p>\n<ul>\n<li>To learn about the Grover&#39;s algorithm, you can check <a href=\"https://learn.microsoft.com/en-us/training/modules/solve-graph-coloring-problems-grovers-search/\" target=\"_blank\">Microsoft Learn module &quot;Solve graph coloring problems by using Grover&#39;s search&quot;</a>.</li>\n<li>To learn more about the Q# libraries, you can check the <a href=\"https://learn.microsoft.com/en-us/azure/quantum/user-guide/libraries/?tabs=tabid-clivscode\" target=\"_blank\">The Q# user guide</a>.</li>\n</ul>\n",
2290
- "asMarkdown": "\nCongratulations! In this kata you have learned to build quantum oracles. Here are a few key concepts to keep in mind:\n* A quantum oracle is an \"opaque box\" operation that is used as input to another algorithm.\n* Phase oracles encode the information in the relative phase of basis states $\\ket{0}$ and $\\ket{1}$. If $f(x)=0$, it does nothing, and if $f(x)=1$ it multiplies the phase of the basis states for which by $-1$.\n* Marking oracles uses an extra qubit $\\ket{y}$ and encode the information in the state of that qubit. If $f(x)=0$, it does nothing, and if $f(x)=1$ it it flips the state of the qubit $\\ket{y}$.\n\n**Next Steps**\n\nWe hope you enjoyed this kata! If you're looking to learn more about quantum oracles and Q#, here are some suggestions:\n* To learn about the Grover's algorithm, you can check <a href=\"https://learn.microsoft.com/en-us/training/modules/solve-graph-coloring-problems-grovers-search/\" target=\"_blank\">Microsoft Learn module \"Solve graph coloring problems by using Grover's search\"</a>.\n* To learn more about the Q# libraries, you can check the <a href=\"https://learn.microsoft.com/en-us/azure/quantum/user-guide/libraries/?tabs=tabid-clivscode\" target=\"_blank\">The Q# user guide</a>."
2289
+ "asHtml": "<p>Congratulations! In this kata you have learned to build quantum oracles. Here are a few key concepts to keep in mind:</p>\n<ul>\n<li>A quantum oracle is an &quot;opaque box&quot; operation that is used as input to another algorithm.</li>\n<li>Phase oracles encode the information in the relative phase of basis states. If $f(x)=0$, the oracle doesn&#39;t change the basis state $\\ket{x}$, and if $f(x)=1$ it multiplies the phase of the basis state $\\ket{x}$ by $-1$.</li>\n<li>Marking oracles use an extra qubit $\\ket{y}$ and encode the information in the state of that qubit. If $f(x)=0$, it doen&#39;t change the state of the qubit $\\ket{y}$ for the basis state $\\ket{x}$, and if $f(x)=1$ it flips the state of the qubit $\\ket{y} for the basis state $\\ket{x}$.</li>\n</ul>\n<p><strong>Next Steps</strong></p>\n<p>We hope you enjoyed this kata! If you&#39;re looking to learn more about quantum oracles and Q#, here are some suggestions:</p>\n<ul>\n<li>To learn about the Grover&#39;s algorithm, you can check <a href=\"https://learn.microsoft.com/en-us/training/modules/solve-graph-coloring-problems-grovers-search/\" target=\"_blank\">Microsoft Learn module &quot;Solve graph coloring problems by using Grover&#39;s search&quot;</a>.</li>\n<li>To learn more about the Q# libraries, you can check the <a href=\"https://learn.microsoft.com/en-us/azure/quantum/user-guide/libraries/?tabs=tabid-clivscode\" target=\"_blank\">The Q# user guide</a>.</li>\n</ul>\n",
2290
+ "asMarkdown": "\nCongratulations! In this kata you have learned to build quantum oracles. Here are a few key concepts to keep in mind:\n* A quantum oracle is an \"opaque box\" operation that is used as input to another algorithm.\n* Phase oracles encode the information in the relative phase of basis states. If $f(x)=0$, the oracle doesn't change the basis state $\\ket{x}$, and if $f(x)=1$ it multiplies the phase of the basis state $\\ket{x}$ by $-1$.\n* Marking oracles use an extra qubit $\\ket{y}$ and encode the information in the state of that qubit. If $f(x)=0$, it doen't change the state of the qubit $\\ket{y}$ for the basis state $\\ket{x}$, and if $f(x)=1$ it flips the state of the qubit $\\ket{y} for the basis state $\\ket{x}$.\n\n**Next Steps**\n\nWe hope you enjoyed this kata! If you're looking to learn more about quantum oracles and Q#, here are some suggestions:\n* To learn about the Grover's algorithm, you can check <a href=\"https://learn.microsoft.com/en-us/training/modules/solve-graph-coloring-problems-grovers-search/\" target=\"_blank\">Microsoft Learn module \"Solve graph coloring problems by using Grover's search\"</a>.\n* To learn more about the Q# libraries, you can check the <a href=\"https://learn.microsoft.com/en-us/azure/quantum/user-guide/libraries/?tabs=tabid-clivscode\" target=\"_blank\">The Q# user guide</a>."
2291
2291
  }
2292
2292
  ]
2293
2293
  }
@@ -2493,7 +2493,7 @@ export default {
2493
2493
  },
2494
2494
  {
2495
2495
  "id": "oracles__meeting_oracle__verification.qs",
2496
- "code": "namespace Kata.Verification {\n open Microsoft.Quantum.Arrays;\n open Microsoft.Quantum.Convert;\n\n operation Or_Oracle_Reference(x: Qubit[], y: Qubit): Unit is Adj + Ctl {\n X(y);\n ApplyControlledOnInt(0, X, x, y);\n }\n\n operation Meeting_Oracle_Reference(x: Qubit[], jasmine: Qubit[], z: Qubit): Unit is Adj + Ctl {\n use q = Qubit[Length(x)];\n within {\n for i in IndexRange(q) {\n // flip q[i] if both x and jasmine are free on the given day\n X(x[i]);\n X(jasmine[i]);\n CCNOT(x[i], jasmine[i], q[i]);\n }\n } apply {\n Or_Oracle_Reference(q, z);\n }\n }\n\n @EntryPoint()\n operation CheckSolution(): Bool {\n for N in 1..4 {\n use jasmine = Qubit[N];\n for k in 0..(2^N-1) {\n let binaryJasmine = IntAsBoolArray(k, N);\n mutable isCorrect = false;\n within {\n ApplyPauliFromBitString(PauliX, true, binaryJasmine, jasmine);\n } apply {\n set isCorrect = CheckTwoOraclesAreEqual(\n 1..N,\n Kata.Meeting_Oracle(_, jasmine, _),\n Meeting_Oracle_Reference(_, jasmine, _));\n }\n if not isCorrect {\n Message($\"Failed on test case for N = {N}, k = {k}.\");\n return false;\n }\n }\n }\n Message(\"All tests passed.\");\n true\n }\n\n}\n"
2496
+ "code": "namespace Kata.Verification {\n open Microsoft.Quantum.Arrays;\n open Microsoft.Quantum.Convert;\n\n operation Or_Oracle_Reference(x: Qubit[], y: Qubit): Unit is Adj + Ctl {\n X(y);\n ApplyControlledOnInt(0, X, x, y);\n }\n\n operation Meeting_Oracle_Reference(x: Qubit[], jasmine: Qubit[], y: Qubit): Unit is Adj + Ctl {\n use q = Qubit[Length(x)];\n within {\n for i in IndexRange(q) {\n // flip q[i] if both x and jasmine are free on the given day\n X(x[i]);\n X(jasmine[i]);\n CCNOT(x[i], jasmine[i], q[i]);\n }\n } apply {\n Or_Oracle_Reference(q, y);\n }\n }\n\n @EntryPoint()\n operation CheckSolution(): Bool {\n for N in 1..4 {\n use jasmine = Qubit[N];\n for k in 0..(2^N-1) {\n let binaryJasmine = IntAsBoolArray(k, N);\n mutable isCorrect = false;\n within {\n ApplyPauliFromBitString(PauliX, true, binaryJasmine, jasmine);\n } apply {\n set isCorrect = CheckTwoOraclesAreEqual(\n 1..N,\n Kata.Meeting_Oracle(_, jasmine, _),\n Meeting_Oracle_Reference(_, jasmine, _));\n }\n if not isCorrect {\n Message($\"Failed on test case for N = {N}, k = {k}.\");\n return false;\n }\n }\n }\n Message(\"All tests passed.\");\n true\n }\n\n}\n"
2497
2497
  }
2498
2498
  ]
2499
2499
  };
@@ -1,4 +1,4 @@
1
- import type { IDiagnostic, ICompletionList, IHover, IDefinition } from "../../lib/node/qsc_wasm.cjs";
1
+ import type { IDiagnostic, ICompletionList, IHover, IDefinition, ISignatureHelp, IWorkspaceConfiguration } from "../../lib/node/qsc_wasm.cjs";
2
2
  import { VSDiagnostic } from "../vsdiagnostic.js";
3
3
  import { IServiceProxy } from "../worker-proxy.js";
4
4
  type QscWasm = typeof import("../../lib/node/qsc_wasm.cjs");
@@ -11,12 +11,14 @@ export type LanguageServiceEvent = {
11
11
  };
12
12
  };
13
13
  export interface ILanguageService {
14
- updateDocument(uri: string, version: number, code: string, isExe: boolean): Promise<void>;
14
+ updateConfiguration(config: IWorkspaceConfiguration): Promise<void>;
15
+ updateDocument(uri: string, version: number, code: string): Promise<void>;
15
16
  closeDocument(uri: string): Promise<void>;
16
17
  getCompletions(documentUri: string, offset: number): Promise<ICompletionList>;
17
- getHover(documentUri: string, offset: number): Promise<IHover | null>;
18
- getDefinition(documentUri: string, offset: number): Promise<IDefinition | null>;
18
+ getHover(documentUri: string, offset: number): Promise<IHover | undefined>;
19
+ getDefinition(documentUri: string, offset: number): Promise<IDefinition | undefined>;
19
20
  dispose(): Promise<void>;
21
+ getSignatureHelp(documentUri: string, offset: number): Promise<ISignatureHelp | undefined>;
20
22
  addEventListener<T extends LanguageServiceEvent["type"]>(type: T, listener: (event: Extract<LanguageServiceEvent, {
21
23
  type: T;
22
24
  }>) => void): void;
@@ -31,11 +33,13 @@ export declare class QSharpLanguageService implements ILanguageService {
31
33
  private eventHandler;
32
34
  private code;
33
35
  constructor(wasm: QscWasm);
34
- updateDocument(documentUri: string, version: number, code: string, isExe: boolean): Promise<void>;
36
+ updateConfiguration(config: IWorkspaceConfiguration): Promise<void>;
37
+ updateDocument(documentUri: string, version: number, code: string): Promise<void>;
35
38
  closeDocument(documentUri: string): Promise<void>;
36
39
  getCompletions(documentUri: string, offset: number): Promise<ICompletionList>;
37
- getHover(documentUri: string, offset: number): Promise<IHover | null>;
38
- getDefinition(documentUri: string, offset: number): Promise<IDefinition | null>;
40
+ getHover(documentUri: string, offset: number): Promise<IHover | undefined>;
41
+ getDefinition(documentUri: string, offset: number): Promise<IDefinition | undefined>;
42
+ getSignatureHelp(documentUri: string, offset: number): Promise<ISignatureHelp | undefined>;
39
43
  dispose(): Promise<void>;
40
44
  addEventListener<T extends LanguageServiceEvent["type"]>(type: T, listener: (event: Extract<LanguageServiceEvent, {
41
45
  type: T;