diff --git a/content/adventures/ca.yaml b/content/adventures/ca.yaml index 0d774db4982..8e6a475937a 100644 --- a/content/adventures/ca.yaml +++ b/content/adventures/ca.yaml @@ -191,7 +191,7 @@ adventures: example_code: | ``` claus = "perdudes" - {print} "Et trobes al gardí però no pots entrar ja que has perdut les claus." + {print} "Ets al jardí i no pots entrar! has perdut les claus." {print} "On les vols buscar?" {print} "Pots escollir entre: l'arbre, les flors, la roca, la bústia" {while} claus == "perdudes" @@ -261,7 +261,7 @@ adventures: _ {print} T'ha tocat gustos {at} {random} milkshake ``` - name: '{add}{to_list} & {remove}{from}' + name: '{add} {to_list} & {remove} {from}' and_or_command: default_save_name: i o description: Introduint {and} & {or} @@ -726,7 +726,7 @@ adventures: example_code: | **Atenció!, cal depurar aquest codi!** ``` - noms = "Tania", "Omar", "Carla", "Albert", "Aniol" + noms = "Tània", "Omar", "Carla", "Albert", "Aniol" verbs = "caminant", "saltant", "pedalant", "conduint", "corrent" llocs = "en un cim", "al supermercat", "cap a la piscina" llocs_on = "darrera d'un arbre", "sota d'una taula", "dins d'una caixa" @@ -760,7 +760,7 @@ adventures: story_text: |- ### Exercici Depura aquest codi. Bona sort! - Consell: Assegura't que només vegis la teva puntuació una vegada al final. + Consell: Assegura de només mostrar la puntuació una vegada al final. example_code: | **Atenció!, cal depurar aquest codi!** ``` @@ -1092,7 +1092,7 @@ adventures: example_code: | ``` opcions {is} 1, 2, 3, 4, 5, cuc - {print} opcions {at} {random}! + {print} opcions {at} {random} ! ``` example_code_2: | ``` @@ -1151,7 +1151,7 @@ adventures: Canvia els noms pels noms dels teus amics o familiars i completa el codi. example_code: | ``` - jugadors = Ann, John, Jesse + jugadors = Anna, Joan, Jessica opcions = 1, 2, 3, 4, 5, 6 _ _ _ _ {print} jugador " tira " opcions {at} {random} @@ -1312,7 +1312,7 @@ adventures: Deixa que la teva imaginació faci el treball! El teu programa ha de tenir almenys 10 línies de codi i ha de contenir com a mínim una comanda '{if}' i '{else}'. - example_code: "```\namics {is} Jordi, Lucy, David\n{print} \"Puc predir la loteria de demà! i dir-te si et tocarà o no!\"\npersona {is} {ask} \"Qui ets tu?\"\nresposta_bona {is} Visca! La guanyaràs!, Segur que la guanyes demà!, tenim un guanyador!\nresposta_dolenta {is} Mala sort! Torna-ho a provar!, Serà una altra persona qui la guanyi, ets un perdedor!\n{if} persona {in} amics {print} resposta_bona {at} {random}\n{else} {print} resposta_dolenta {at} {random}\n```\n" + example_code: "```\namics {is} Jordi, Laura, David\n{print} \"Puc predir la loteria de demà! i dir-te si et tocarà o no!\"\npersona {is} {ask} \"Qui ets tu?\"\nresposta_bona {is} Visca! La guanyaràs!, Segur que la guanyes demà!, tenim un guanyador!\nresposta_dolenta {is} Mala sort! Torna-ho a provar!, Serà una altra persona qui la guanyi, ets un perdedor!\n{if} persona {in} amics {print} resposta_bona {at} {random}\n{else} {print} resposta_dolenta {at} {random}\n```\n" 6: example_code: | ``` @@ -1367,8 +1367,8 @@ adventures: ``` cases = una mansió, un apartment, una cabana, una casa amor = ningú, un príncep, el seu veí, el seu amor verdader - mascotes= gos, gat, elefant - noms= Jana, Rai, Jaume + mascotes = gos, gat, elefant + noms = Jana, Rai, Jaume _ {print} nom " viu en " cases {at} {random} {print} nom " es casarà amb " amor {at} {random} @@ -1379,7 +1379,7 @@ adventures: example_code: | ``` destí = "relliscaràs amb una pela de platan", _ - {print} "Deixa'm fer una ullada al la meva bola de cristall per observar el teu futur" + {print} "Miraré a la bola de cristall per predir el teu futur" {print} "Veig... veig..." {sleep} {print} destí {at} {random} @@ -1519,7 +1519,7 @@ adventures: story_text: "Premia el teu lloro-robot si diu la paraula correcta!\n\n### Exercici\nAcaba el codi omplint les 4 comandes que falten.\n" 4: story_text: "En aquest nivell hem de fer servir cometes amb les comandes `{ask}` i `{print}`.\n### Exercici\nCompleta el codi omplint les cometes als buits\n" - example_code: "```\nparaules {is} parrup, Hedy\n{print} _ Ensenya al teu lloro-robot! _\nnova_paraula {is} {ask} _ Quina paraula vols ensenyar-li? _\n{add} nova_paraula {to_list} paraules\n{print} _ 🧒 Digues _ nova_paraula _, Hedy!_\n{print} _ 🦜 _ paraules {at} {random}\n```\n" + example_code: "```\nparaules {is} parrup, Hedy\n{print} _ Ensenya al teu lloro-robot! _\nnova_paraula {is} {ask} _ Quina paraula vols ensenyar-li? _\n{add} nova_paraula {to_list} paraules\n{print} _ 🧒 Digues _ nova_paraula _ , Hedy! _\n{print} _ 🦜 _ paraules {at} {random}\n```\n" default_save_name: Lloro print_command: description: Introducció a la comanda imprimir @@ -1579,15 +1579,15 @@ adventures: {print} "M'encanta! la meva germana n'estarà orgullosa" ``` story_text: "## \"Cometes\"\nEn el nivell 4 `{ask}` i `{print}` han canviat.\nHas de posar el text que vols imprimir entre cometes, pots fer servir simples o dobles.\nAixò és útil, perquè ara pots imprimir totes les paraules que vulguis. També les paraules que utilitzaves per emmagatzemar alguna cosa amb `{is}`.\nLa majoria dels llenguatges de programació també fan servir cometes quan imprimeixen, per tant, estem fent un pas més cap a la programació real!\n" - story_text_2: "## Contraccions\nImportant! Tingues en compte que ara que estem utilitzant cometes, Hedy es confondrà quan facis servir l'apòstrof per a contraccions com I'm o What's.\nAssegura't de fer servir cometes dobles quan facis servir un apòstrof a la teva línia!\nMira el codi d'exemple per veure la manera incorrecta de fer servir els apòstrofs.\n" - example_code: "```\n{print} \"S'hauràn de fer servir cometes a partir d'ara!\"\nresposta {is} {ask} \"Què cal fer servir a partir d'ara?\"\n{print} \"Caldrà fer servir \" resposta\n```\n" + story_text_2: "## Apòstrofs\nImportant! A vegades voldrem fer servir cometes o apòstrofs dins del text, Hedy es confondrà quan facis servir l'apòstrof dins una frase si aquesta està rodejada de cometes simples.\nAssegura't de fer servir cometes dobles quan facis servir un apòstrof a la teva línia!\nAl codi d'exemple pots veure la manera incorrecta de fer servir les cometes simples.\n" + example_code: "```\n{print} 'Els textos aniràn rodejats de cometes'\nresposta {is} {ask} \"Què cal fer servir a partir d'ara?\"\n{print} \"Caldrà fer servir \" resposta\n```\n" 12: example_code: | ``` nom = "Hedy el robot" {print} "Hola" nom ``` - example_code_2: "```\nsuperherois = \"Spiderman\", \"Batman\", \"Viuda Negra\"\n{print} superherois {at} {random}\n```\n" + example_code_2: "```\nsuperherois = \"Spiderman\", \"Batman\", \"Catwoman\"\n{print} superherois {at} {random}\n```\n" story_text_3: "**Tot el text després de les comparacions `{if}` també necessita cometes**\n" example_code_3: "```\nnom = {ask} \"Com et dius?\"\n{if} nom = \"Hedy el Robot\"\n {print} \"Hola! que tal?\"\n```\n" example_code_4: "```\npunts = 25\n{print} \"Tens \" punts \" punts\"\n```\n" @@ -1729,8 +1729,8 @@ adventures: example_code_3: "```\nresposta {is} {ask} \"2 + 2 = ?\"\n_ _ _ 4 _ \"Correcte!\"\n_ _ \"No 2 + 2 = 4\"\n```\n" example_code: "```\nnom {is} {ask} \"Com et dius?\"\n{if} nom {is} Hedy {print} \"bé!\" {else} {print} \"buu!\"\n```\n" story_text: "## If... else....\nEn el nivell 5 hi ha una cosa nova, la comanda`{if}`! Amb el `{if}` pots triar entre dues opcions diferents. \nAquest codi imprimeix \"bé!\" si introdueixes Hedy com a nom, i \"buu!\" si introdueixes alguna altra cosa. \nLes comandes `{ask}` i `{print}` continuen funcionant igual que ho feien en el nivell 4.\n" - story_text_3: "### Exercici\nIntenta crear el teu propi codi amb `{if}` i `{else}`. Pots utilitzar el codi d'exemple si vols.\n" - story_text_2: "De vegades, el codi amb un `{if}` es fa realment llarg i no hi cap bé en una sola línia.
També pots dividir el codi en dues línies, començant la segona línia amb el `{else}`, d'aquesta manera:\n" + story_text_3: "### Exercici\nIntenta crear el teu propi codi amb `{if}` i `{else}`. Comença amb el codi d'exemple si vols.\n" + story_text_2: "De vegades, el codi d'un `{if}` és massa llarg i no hi cap bé en una sola línia.
Pots dividir el codi en dues línies, començant la segona línia amb `{else}`, així:\n" example_code_2: "```\nnom {is} {ask} \"Com et dius?\"\n{if} nom {is} Hedy {print} \"bé!\"\n{else} {print} \"buu!\"\n```\n" 8: example_code: "```\nname = {ask} \"Com et dius?\"\n{if} name {is} Hedy\n {print} \"Benvingut Hedy\"\n {print} \"Pots jugar al teu ordinador!\"\n```\n" @@ -1758,7 +1758,7 @@ adventures: example_code_2: "```\na = \"Hola \"\nb = \"món!\"\n{print} a + b\n```\n" story_text_2: "**Matemàtiques amb paraules**\nEn aquest nivell també pots fer sumes de paraules així:" story_text: "**Nombres decimals** \nFins ara, Hedy no permetia nombres decimals com 1.5, però ara sí que ho permetem. Tingues en compte que els ordinadors utilitzen el `.` per als nombres decimals." - example_code: "```\n{print} \"Dos i mitg més dos i mitg és...\"\n{print} 2.5 + 2.5\n```\n" + example_code: "```\n{print} \"Dos i mig més dos i mig és...\"\n{print} 2.5 + 2.5\n```\n" 6: example_code: "```\n{print} \"5 més 5 és \" 5 + 5\n{print} \"5 menys 5 és \" 5 - 5\n{print} \"5 per 5 és \" 5 * 5\n{print} \"5 dividit entre 5 és \" 5 / 5\n```\n" story_text: "En aquest nivell aprendràs una cosa nova: ara també pots calcular.\n\nLes sumes són fàcils, l'escrius com en matemàtiques: `5 + 5`, per exemple. Les restes també funcionen igual, és `5 - 5`.\n\nMultiplicar és una mica diferent, perquè no hi ha cap símbol de multiplicació al teu teclat. Busca'l, de debò no hi és! \nPer això multipliquem amb l'asterisc que hi ha normalment prop de la tecla ENTER: `5 * 5`. Llegeix-ho com \"5 vegades 5\", això t'ajudarà a recordar-ho millor.\n" @@ -1847,7 +1847,7 @@ adventures: story_text: "Ara que saps com combinar instruccions, pots crear una eina de mecanografia tàctil amb `{pressed}`.\n\n### Exercici\nAcaba el codi. Cada vegada s'ha de triar una lletra aleatòria, que hauràs de prémer. Obteniu un punt per cada pressió correcta i dos punts de deducció per una pressió incorrecta.\n**Extra** Neteja la pantalla després de cada lletra i mostra a l'usuari quants punts ha aconseguit.\n" example_code: "```\npunts = 0\nlletres = a, b, c, d, e\n{repeat} 10 {times}\n lletra = _ _ _\n {print} \"Prem la lletra \" lletra\n {if} lletra {is} {pressed}\n _\n _\n _\n```\n" description: Prova de vincular una tecla amb una comanda! - name: Tecla premuda + name: Tecla default_save_name: Premut piggybank: default_save_name: Guardiola @@ -1944,7 +1944,7 @@ adventures: example_code: "```\nopcions = _\njugadors = _\n{for} _\n```\n" 4: story_text: "En aquest nivell podem programar encara més el joc de pedra, paper, tisores. Però si vols afegir text recorda que hauràs d'utilitzar cometes.\n### Exercici\nOmple les cometes en els buits. Recorda que la variable `opcions` ha d'estar fora de les cometes.\n" - example_code: "```\nopcions {is} pedra, paper, tisores\n{print} _ L'ordinador ha escollit ..._ opcions {at} {random}\n```\n" + example_code: "```\nopcions {is} pedra, paper, tisores\n{print} _ L'ordinador ha escollit ... _ opcions {at} {random}\n```\n" 5: example_code: "```\nopcions {is} pedra, paper, tisores\neleccio_ordinador {is} _\neleccio {is} _\n{print} \"Has escollit \" _\n{print} \"L'ordinador ha escollit \" _\n{if} _ {is} _ {print} \"empat!\" {else} {print} \"no hi ha empat\"\n```\n\nOmple els buits amb codi correcte per veure si és un empat.\n" story_text: "En aquest nivell podem determinar si hi ha empat o no. Per això necessites la nova comanda `{if}`.\n\n### Exercici\nAcaba el codi omplint els buits:\n* Fes que l'ordinador triï una opció aleatòria\n* Pregunta al jugador què vol triar\n* Omple les variables correctes a la línia 4 i 5\n* Acaba la línia 6 perquè Hedy pugui comprovar si hi ha empat o no.\n" @@ -2058,7 +2058,7 @@ adventures: default_save_name: Dibuixa-ho levels: 5: - example_code: "Pista:\n```\nllestra_Escollida{is} {ask} \"Quina lletra prefereixes veure F, E o L?\"\n{if} _\n```\n" + example_code: "Pista:\n```\nlletra_escollida {is} {ask} \"Quina lletra prefereixes veure F, E o L?\"\n{if} _\n```\n" story_text: "### Exercici\nRecrea els dibuixos amb la tortuga!\n\n**Extra** Fes només un codi que permeti al jugador decidir quina lletra vol veure! I pots afegir encara més lletres?\n\n
\nF \nE \nL \n
\n" 6: example_code: "Pista per el quadrat:\n```\ncolor_escollit = {ask} _\n```\n" @@ -2072,7 +2072,7 @@ adventures: story_text: "### Exercici\nRecrea els dibuixos amb la tortuga!\n\n
\nHexàgon \nTriangle \nVentall \n
\n" 9: story_text: "### Exercici\nRecrea els dibuixos amb la tortuga!\n\n**Extra** El número entre parèntesis indica en quantes línies de codi es pot dibuixar aquesta figura. Pots fer-ho en la mateixa quantitat de línies?\n\n**Extra** Dóna al jugador l'opció de triar de quin país vol veure la bandera.\n\n
\nCreu (7) \nQuadrats niats de colors aleatoris (8) \nBanderes \n
\n" - example_code: "Pista per als quadrats nidats:\n```\ncolors = vermell, blau, taronja, groc, rosa, lila, verd, marró, negre\ndistancia = 120\n{repeat} 5 {times}\n_\n```\nPista per a les banderes:\n```\npais = {ask} \"Escull un país per veure'n la bandera?\"\n{if} pais {is} \"Andorra\"\n color_1 = Blau\n color_2 = Groc\n color_3 = Vermell\n```\n" + example_code: "Pista per als quadrats nidats:\n```\ncolors = vermell, blau, taronja, groc, rosa, lila, verd, marró, negre\ndistancia = 120\n{repeat} 5 {times}\n_\n```\nPista per a les banderes:\n```\npais = {ask} \"Escull un país per veure'n la bandera?\"\n{if} pais {is} \"Andorra\"\n color_1 = blau\n color_2 = groc\n color_3 = vermell\n```\n" 1: story_text: "### Exercici\nRecrea els dibuixos amb la tortuga!\n\n
\n Rectangle \n Quadrat \n Escales\n
\n" 2: diff --git a/content/adventures/ga.yaml b/content/adventures/ga.yaml new file mode 100644 index 00000000000..8811b6a1d5b --- /dev/null +++ b/content/adventures/ga.yaml @@ -0,0 +1,4 @@ +adventures: + story: + name: Scéal + default_save_name: Scéal diff --git a/content/adventures/ml.yaml b/content/adventures/ml.yaml new file mode 100644 index 00000000000..0967ef424bc --- /dev/null +++ b/content/adventures/ml.yaml @@ -0,0 +1 @@ +{} diff --git a/content/adventures/ta.yaml b/content/adventures/ta.yaml index 8474530db27..5e46ae81e89 100644 --- a/content/adventures/ta.yaml +++ b/content/adventures/ta.yaml @@ -5,4 +5,1087 @@ adventures: levels: 1: story_text: "நிலை 1-இல், நீங்களே உருவாக்கிய வேறொரு முக்கிய கதாபாத்திரத்தைக் கொண்டு கதையை உருவாக்கலாம்.\n\nமுதல் வரியில், `{ask}` என்கிற கட்டளையைப் பயன்படுத்தி, கதையின் முக்கிய கதாபாத்திரம் யார் என்று கேட்கவும்.\n\nஅந்த முதல் வரிக்குப்பின், வாக்கியத்தை அச்சிட வேண்டுமானால் `{print}` என்ற \nகட்டளையைக் கொண்டு தொடங்கவும்.\nஉங்கள் முக்கிய கதாபாத்திரம் வாக்கியத்தின் முடிவில் இருக்க வேண்டுமெனில் `{echo}` என்ற கட்டளையைப் பயன்படுத்தவும்.\n" + example_code: "`` `\n {ask} இந்த கதையின் முக்கிய கதாபாத்திரம்\n {print} முக்கிய கதாபாத்திரம் இப்போது காட்டில் நடக்கப் போகிறது\n {echo} அவர்கள் சற்று பயப்படுகிறார்கள்,\n {print} அவர்கள் எல்லா இடங்களிலும் பைத்தியம் சத்தங்களைக் கேட்கிறார்கள்\n {print} இது ஒரு பேய் காடு என்று அவர்கள் பயப்படுகிறார்கள்\n `` `\n" + story_text_2: "### உடற்பயிற்சி\n இப்போது குறைந்தது 6 வரிகளின் குறியீட்டின் உங்கள் சொந்த கதையை உருவாக்கவும்.\n இந்த கதை எடுத்துக்காட்டு குறியீட்டைப் போலவே இருக்க முடியாது.\n குறைந்தது ஒரு `{ask}` மற்றும் ஒரு `{echo}` கட்டளையைப் பயன்படுத்தவும்.\n நீங்கள் விரும்பும் எந்த தலைப்பையும் பற்றி இதைச் செய்யலாம்.\n நீங்கள் ஒரு தலைப்பைப் பற்றி யோசிக்க முடியாவிட்டால், எங்கள் தேர்வுகளில் ஒன்றைப் பயன்படுத்துங்கள்: திரைப்படங்களுக்குச் செல்வது, ஒரு விளையாட்டு போட்டி அல்லது மிருகக்காட்சிசாலையில் ஒரு நாள்.\n" + 3: + story_text: "நிலை 3 இல் உங்கள் கதையை மிகவும் வேடிக்கையாக மாற்றலாம். இது போன்ற எந்த அரக்கன், விலங்கு அல்லது பிற தடைகளுக்கும் நீங்கள் சீரற்ற தன்மையைப் பயன்படுத்தலாம்:\n" + story_text_2: "`{add}` என்ற கட்டளை உங்கள் கதையிலும் கைக்கு வரலாம்.\n" + example_code: "`` `\n விலங்குகள் {is} 🦔, 🦔, 🐿,\n {print} அவை இப்போது ஒரு விலங்குகளின் ஒலியைக் கேட்கின்றன {{{at}\n `` `\n" + example_code_2: "`` `\n {print} அவர்கள் ஒரு ஒலியைக் கேட்கிறார்கள்\n விலங்குகள் {is} 🐿, 🐿, 🦔,\n விலங்கு {is} {ask} இது என்ன என்று நீங்கள் நினைக்கிறீர்கள்?\n {add} விலங்கு {to_list} விலங்குகளைச் சேர்க்கவும்\n {print} இது ஒரு விலங்குகள் {at {{at}\n `` `\n" + example_code_3: "`` `\n {print} அவரது பையுடனும் மிகவும் கனமாக இருந்தது.\n {print} உள்ளே ஒரு பாட்டில் தண்ணீர், ஒளிரும் விளக்கு மற்றும் ஒரு செங்கல் இருந்தது.\n பை {is} நீர், ஒளிரும் விளக்கு, செங்கல்\n டம்ப் {is} {ask} அவர் எந்த உருப்படியை கொட்ட வேண்டும்?\n } பையில் இருந்து} டம்ப் {அகற்று\n `` `\n" + story_text_3: "இது உங்கள் கதையில் `{remove}` கட்டளைக்கு ஒரு எடுத்துக்காட்டு\n\n ### உடற்பயிற்சி\n முந்தைய நிலைகளிலிருந்து உங்கள் கதையை இந்த நிலைக்கு நகலெடுக்கவும்.\n இந்த மட்டத்தில் நீங்கள் 3 புதிய கட்டளைகளை {{at} `இல் கற்றுக் கொண்டீர்கள், {{random}` மற்றும் {{{{for இலிருந்து {{} {{{{{{அகற்று.\n உங்கள் கதையில் புதிய வரிகளைச் சேர்க்கவும், இதனால் புதிய கட்டளைகள் அனைத்தும் உங்கள் கதையில் ஒரு முறையாவது இடம்பெறும்.\n" + 18: + example_code_2: "`` `\n naam = {input} (\"உங்கள் பெயர் என்ன?\")\n {print} ('இந்த கதைக்கு வருக!')\n `` `\n" + example_code: "`` `\n {print} ('இந்த கதைக்கு வருக!')\n `` `\n" + story_text: "நாங்கள் மற்றொரு கதையை அச்சிடப் போகிறோம், ஆனால் இப்போது நாம் `{print}` உடன் அடைப்புக்குறிகளைப் பயன்படுத்த வேண்டும்.\n\n ### உடற்பயிற்சி 1\n குறைந்தது 5 வாக்கியங்களின் கதையை உருவாக்கவும். நீங்கள் இன்னும் 'பெயரை' பயன்படுத்த வேண்டியதில்லை.\n" + story_text_2: "### உடற்பயிற்சி 2\n உங்களுக்காக ஒரு `{input}` நாங்கள் ஏற்கனவே ஆயத்தம் செய்துள்ளோம். முதலில், உங்கள் கதையில் `பெயர்` மாறியைப் பயன்படுத்தவும்.\n பின்னர் இரண்டாவது `{ask}` சேர்த்து அந்த மாறியைப் பயன்படுத்தவும்.\n உதவிக்குறிப்பு: உரைக்கும் மாறிகளுக்கும் இடையில் `{அச்சிடுகையில் காற்புள்ளிகளை நினைவில் கொள்ளுங்கள்!\n" + 7: + story_text: "ஒரு கதையில், யாரோ பல முறை வார்த்தைகளைச் சொல்கிறார்கள். எடுத்துக்காட்டாக, யாராவது உதவிக்காக அழைக்கும்போது அல்லது ஒரு பாடலைப் பாடும்போது.\n இதுபோன்ற மறுபடியும் உங்கள் கதையில், இந்த மட்டத்தில் `{repeat}` உடன் வைக்கலாம்.\n\n ### உடற்பயிற்சி\n உங்கள் சொந்த கதைக்கு மறுபடியும் சேர்க்கவும். நீங்கள் சேமித்த நிரல்களுக்குச் சென்று, முந்தைய மட்டத்திலிருந்து உங்கள் கதை நிரலைத் தேர்வுசெய்க\n `{print}` கொண்ட ஒரு வரியைக் கண்டுபிடித்து அதை மீண்டும் செய்யவும்!\n" + example_code: "`` `\n {print} 'இளவரசர் உதவிக்கு அழைப்பு விடுத்தார்'\n {repeat} 5 {times} {print} 'உதவி!'\n {print} 'யாரும் எனக்கு ஏன் உதவவில்லை?'\n `` `\n" + 13: + example_code: "`` `\n {print} 'எங்கள் ஈரோ காடு வழியாக நடந்து கொண்டிருக்கிறார்'\n {print} 'பாதை இரண்டு வழிகளைப் பிரிக்கிறது'\n பாதை = {ask} 'அவள் எந்த பாதையை தேர்வு செய்ய வேண்டும்?'\n கருவி = {ask} 'அவள் என்ன ஆயுதத்தை வரைய்கிறாள்?'\n {if} பாதை {is} 'இடது' {and} கருவி {is 'வாள்'\n _\n `` `\n" + story_text: "`{and}` மற்றும் `{or}` கட்டளைகளைப் பயன்படுத்துவதன் மூலம், உங்கள் கதைகளை இன்னும் பல்துறை உருவாக்கலாம். நீங்கள் இரண்டு கேள்விகளைக் கேட்கலாம் மற்றும் பதில்களின் கலவைக்கு பதிலளிக்கலாம்.\n\n ### உடற்பயிற்சி 1\n எடுத்துக்காட்டு குறியீட்டைப் பார்த்து அதை முடிக்கவும். பின்னர் `{or}` அல்லது `{and}` உடன் குறைந்தது 2 `{if}` குறியீடுகளைச் சேர்க்கவும்.\n\n ### உடற்பயிற்சி 2\n முந்தைய மட்டத்திலிருந்து ஒரு கதையைக் கண்டுபிடித்து, ஒன்று `{and}` அல்லது `{or}` சேர்க்கவும்.\n" + 5: + story_text: "இந்த மட்டத்தில் நீங்கள் வெவ்வேறு முடிவுகளை நிரல் செய்யலாம், இது உங்கள் கதையை இன்னும் வேடிக்கையாக மாற்றும்.\n எடுத்துக்காட்டு குறியீட்டில் 2 வெவ்வேறு முடிவுகளை எவ்வாறு உருவாக்குவது என்பதை நீங்கள் காணலாம்.\n\n ### உடற்பயிற்சி 1\n நீங்கள் தேர்ந்தெடுக்கும் தலைப்பைப் பற்றி குறைந்தது 6 வரிகளின் குறியீட்டின் புதிய சிறுகதையை எழுதுங்கள்.\n ஊக்கம் இல்லை? இந்த தலைப்புகளில் ஒன்றைத் தேர்வுசெய்க: ஒரு சூப்பர் ஈரோ, சலிப்பான பள்ளி நாள், பாலைவன தீவில் சிக்கித் தவிக்கிறது.\n\n எடுத்துக்காட்டு குறியீட்டைப் போலவே, மகிழ்ச்சியான அல்லது மோசமான முடிவைத் தேர்வுசெய்ய இப்போது வீரருக்கு மாற்றத்தை கொடுங்கள்.\n இரண்டு முடிவுகளையும் நிரல்.\n\n ### உடற்பயிற்சி 2\n முந்தைய நிலைகளில் உங்கள் சொந்த கதை சாகசத்தில் நீங்கள் உருவாக்கிய கதையை நகலெடுக்கவும்.\n உங்கள் கதைக்கு குறைந்தது 2 `{if}` மற்றும் `{else}` கட்டளைகளைச் சேர்க்க ஒரு வழியைக் கண்டறியவும்.\n இது மகிழ்ச்சியான அல்லது மோசமான முடிவுடன் இருக்கலாம், ஆனால் கட்டளைகளைத் தூண்டுவதற்கான பிற வழிகளையும் நீங்கள் கண்டுபிடிக்க முயற்சி செய்யலாம்.\n" + example_code: "`` `\n பெயர் {} {is} 'காட்டில் யார் நடந்து செல்கிறார்கள்?'\n {ask} பெயர் 'காடு வழியாக நடக்கிறது'\n {if} பெயர் 'ஒரு அரக்கனை எதிர்கொள்கிறது'\n END {else} {is} 'நீங்கள் ஒரு நல்ல அல்லது மோசமான முடிவை விரும்புகிறீர்களா?'\n {ask} end {is} நல்ல {print} பெயர் 'வாளை எடுத்து அரக்கன் விரைவாக ஓடுகிறான்'\n {print} {print} 'அரக்கன் சாப்பிடுகிறது\n `` `\n" + 9: + example_code: "`` `\n {print} 'ராபின் டவுன்டவுனில் நடந்து செல்கிறார்'\n இருப்பிடம் = {ask} 'ராபின் ஒரு கடைக்குச் செல்கிறாரா, அல்லது அவள் வீட்டிற்குச் செல்கிறாளா?'\n {if} இருப்பிடம் {is} கடை\n {print} 'அவள் கடைக்குள் நுழைகிறாள்.'\n {print} 'ராபின் ஒரு சுவையான தோற்றத்தை பார்க்கிறார்'\n நூல் = {ask} 'ராபின் புத்தகத்தை வாங்குகிறாரா?'\n {if} book {is} ஆம்\n _ {print} 'ராபின் புத்தகத்தை வாங்கி வீட்டிற்கு செல்கிறார்'\n _ {else}\n _ {print} 'ராபின் கடையை விட்டு வெளியேறி வீட்டிற்கு செல்கிறார்'\n {else}\n {print} 'ராபின் வீட்டிற்கு செல்கிறார்'\n `` `\n" + story_text: "இந்த மட்டத்தில் நீங்கள் `{else}` மற்றும் `{repeat}` கட்டளைகளை மற்ற `{if}` மற்றும் {{repeat} `கட்டளைகளைப் பயன்படுத்தலாம்.\n இது உங்களுக்கு பல விருப்பங்களை வழங்குகிறது மற்றும் உங்கள் கதையை ஊடாடச் செய்ய உங்களுக்கு உதவுகிறது.\n\n ### உடற்பயிற்சி 1\n குறியீட்டை முடிக்கவும், எனவே `{if என்றால் சரியாக வேலை செய்கிறது.\n\n ### உடற்பயிற்சி 2\n ராபின் வீட்டிற்குச் செல்லும் கதையின் ஒரு பகுதிக்கு `{if}` மற்றும் `{if}} சேர்க்கவும்.\n\n ### உடற்பயிற்சி 3\n உங்கள் லெவல் 8 கதைக்குச் சென்று, மற்றொரு `{if}` என்றால் குறைந்தது இரண்டு `{if spets ஐப் பயன்படுத்தவும்.\n" + 15: + example_code: "`` `\n விசைகள் = 'இழந்தது'\n {print} 'நீங்கள் உங்கள் தோட்டத்தில் நிற்கிறீர்கள், உங்கள் சாவியை இழந்துவிட்டீர்கள்.'\n {print} 'அவற்றை எங்கே தேட விரும்புகிறீர்கள்?'\n {print} 'நீங்கள் தேர்வு செய்யலாம்: மரம், மலர் பெட்பெட், பாறை, அஞ்சல் பெட்டி'\n {} விசைகள் == 'இழந்தது'\n இருப்பிடம் = {while} 'நீங்கள் எங்கு பார்க்க விரும்புகிறீர்கள்?'\n } if} இருப்பிடம் == 'மலர் பெட்'\n {ask} 'இங்கே அவை!'\n விசைகள் = 'கிடைத்தது'\n {if}\n {print} 'இல்லை அவை' இருப்பிடத்தில் இல்லை\n {else} 'இப்போது நீங்கள் வீட்டிற்குள் நுழையலாம்!'\n `` `\n" + story_text: "`{` வளையத்தைப் பயன்படுத்துவது உங்கள் கதைகளை மிகவும் சுவாரச்யமாக்கும். எடுத்துக்காட்டாக, நீங்கள் `{} விளையாட்டு == 'இல் பயன்படுத்தலாம், எனவே விளையாட்டு முடியும் வரை நீங்கள் விளையாடலாம்.\n .\n\n ### உடற்பயிற்சி\n ஒரு கதையில் `{` சுழற்சியை எவ்வாறு பயன்படுத்துவது என்பதை எடுத்துக்காட்டு குறியீடு உங்களுக்குக் காட்டுகிறது. இப்போது ** உங்கள் சொந்த காட்சியைப் பற்றி சிந்தியுங்கள் **, அதில் வீரர் அவர்கள் தொடருமுன் எதையாவது கண்டுபிடிக்க வேண்டும்.\n" + 2: + example_code: "`` `\n பெயர் {is} {ask} முக்கிய கதாபாத்திரத்தின் பெயர் என்ன?\n {print} பெயர் இப்போது காடுகளில் இயங்கப் போகிறது\n {print} பெயர் கொஞ்சம் பயமாக இருக்கிறது\n {print} திடீரென்று அவள் ஒரு பைத்தியம் ஒலி கேட்கிறாள் ...\n {sleep}\n {print} பெயர் இது ஒரு பேய் காடு என்று பயப்படுகிறது\n `` `" + story_text_2: "### உடற்பயிற்சி\n முந்தைய மட்டத்தில் நீங்கள் உருவாக்கிய உங்கள் சொந்த கதைக்கு மாறிகளைச் சேர்க்க வேண்டிய நேரம் இது.\n 'எனது நிரல்கள்' க்குச் சென்று, உங்கள் நிலை 1 கதை சாகசத்தைத் தேடி குறியீட்டை நகலெடுக்கவும். இந்த மட்டத்தில் உங்கள் உள்ளீட்டுத் திரையில் குறியீட்டை ஒட்டவும்.\n\n இந்த குறியீடு இந்த மட்டத்தில் இயங்காது, ஏனென்றால் நீங்கள் இன்னும் மாறிகளைப் பயன்படுத்தவில்லை.\n உங்கள் குறியீட்டில் `{கேளுங்கள்` கட்டளைகள் மற்றும் `{ask}` கட்டளைகளை இந்த மட்டத்தில் நீங்கள் கற்றுக்கொண்ட சரியான வடிவத்திற்கு மாற்றவும்.\n\n ** கூடுதல் ** உங்கள் கதையில் பதற்றத்தை உருவாக்க உங்கள் குறியீட்டில் `{echo}` கட்டளையைச் சேர்க்கவும்.\n" + story_text: "நிலை 2 இல் உங்கள் கதையை மிகவும் வேடிக்கையாக மாற்றலாம். உங்கள் முக்கிய கதாபாத்திரத்தின் பெயர் இப்போது வாக்கியத்தில் எங்கும் இருக்கலாம்.\n\n அதற்காக நீங்கள் கொஞ்சம் கூடுதலாக நிரல் செய்ய வேண்டும். நீங்கள் இப்போது உங்கள் முக்கிய கதாபாத்திரத்திற்கு முதலில் பெயரிட வேண்டும்.\n\n நீங்கள் அந்த பெயரை ஒரு வாக்கியத்தில் எங்கும் வைக்கலாம்.\n" + 10: + story_text: "இந்த மட்டத்தில் உங்கள் கதையில் {for} கட்டளையைப் பயன்படுத்தலாம். இந்த வழியில் நீங்கள் குழந்தைகளின் புத்தகத்தை 'பிரவுன் பியர், பிரவுன் பியர், நீங்கள் என்ன பார்க்கிறீர்கள்' என்பதை எளிதாக நிரல் செய்யலாம்.\n\n ### உடற்பயிற்சி\n\n உங்களுக்குத் தெரியாவிட்டால் , இது புத்தகத்தில் உள்ளதைப் போல அச்சிடப்பட்டிருப்பதை உறுதிப்படுத்திக் கொள்ளுங்கள்.\n" + example_code: "`` `\n விலங்குகள் = _, _, _\n {print} 'பழுப்பு கரடி, பழுப்பு கரடி'\n {print} 'நீங்கள் என்ன பார்க்கிறீர்கள்?'\n `` `\n" + 4: + story_text: "### உடற்பயிற்சி\n எடுத்துக்காட்டு குறியீட்டை நகலெடுத்து 1 மற்றும் 2 வரிகளில் உள்ள வெற்றிடங்களில் மேற்கோள் குறிகளைச் சேர்ப்பதன் மூலம் அதை முடிக்கவும்.\n 3 மற்றும் 4 வது வரிசையில் உள்ள வெற்றிடங்களை மேற்கோள் மதிப்பெண்களால் மாற்றக்கூடாது, ஆனால் ஒரு `{தூக்கம்` மற்றும் ஒரு `{sleep}` கட்டளை. நீங்கள் அதை வேலை செய்ய முடியுமா?\n\n ### உடற்பயிற்சி 2\n முந்தைய நிலைக்குச் சென்று உங்கள் கதை குறியீட்டை நகலெடுக்கவும். சரியான இடங்களில் மேற்கோள் குறிகளைச் சேர்ப்பதன் மூலம் குறியீட்டை இந்த மட்டத்தில் செயல்படுத்தவும்.\n மனம்: உங்கள் சொந்த கதையில் உள்ள மாறிகள் மேற்கோள் மதிப்பெண்களுக்கு வெளியே இருக்க வேண்டும். எடுத்துக்காட்டு குறியீட்டின் இரண்டாவது வரியைப் போல. அந்த வரியில் மாறி பெயர் மேற்கோள் மதிப்பெண்களுக்கு வெளியே வைக்கப்படுகிறது.\n" + example_code: "`` `\n பெயர் {is} {ask} _ உங்கள் பெயர் என்ன? _\n {print} _ முக்கிய எழுத்து _ பெயர் என்று அழைக்கப்படுகிறது\n _\n _\n {print} பெயர் _ இப்போது காடுகளில் நடக்கப் போகிறது _\n {print} பெயர் _ கொஞ்சம் பயமாக இருக்கிறது _\n விலங்குகள் {is} 🦔, 🦔, 🐿,\n {print} _ அவர் ஒரு _ விலங்குகளின் ஒலியைக் கேட்கிறார் {at {{at}\n {random} பெயர் _ இது ஒரு பேய் காடு _ அச்சம் _\n `` `\n" + 8: + story_text: "இந்த மட்டத்தில் நீங்கள் உங்கள் `{if கட்டளைகளில் பல வரிகளைப் பயன்படுத்தலாம், இந்த வழியில் உங்கள் மகிழ்ச்சியான அல்லது சோகமான முடிவை மேம்படுத்தலாம்!\n\n ### உடற்பயிற்சி 1\n எடுத்துக்காட்டு குறியீடு இரண்டு வெவ்வேறு முடிவுகளைக் காட்டுகிறது; ஒரு நேர இயந்திரத்தில் எழுத்துக்கள் குதிக்கும் ஒன்று, அவை இல்லாத இடத்தில்.\n ஒரு முடிவுக்கு குறைந்தது ஒரு வாக்கியத்துடன் வெற்றிடங்களை முடிக்கவும்.\n ** கூடுதல் ** கதையை நீளமாக்குங்கள். கதையில் என்ன நடக்கும்? வெவ்வேறு விருப்பங்களுடன் இரண்டாவது `{if}` சேர்க்கலாம்.\n\n ### உடற்பயிற்சி 2\n நீங்கள் சேமித்த நிரல்களுக்குத் திரும்பிச் செல்லுங்கள், நிலை 5 இலிருந்து உங்கள் கதை நிரலைத் தேர்வுசெய்க. இப்போது ஒவ்வொன்றும் குறைந்தது மூன்று வரிகளின் நீளத்தின் நல்ல மற்றும் மோசமான முடிவை எழுதுங்கள்!\n" + example_code: "`` `\n {print} 'ஓ! டி-ரெக்ச் மூடுகிறது! '\n முடிவு = {ask} 'உங்களுக்கு மகிழ்ச்சியான அல்லது சோகமான முடிவு வேண்டுமா?'\n {if} end {} மகிழ்ச்சியாக இருக்கிறது\n {is} 'நேரத்தில் ரிச்சர்ட் மீண்டும் நேர இயந்திரத்தில் குதிக்கிறார்!'\n {print} _\n {print}\n {else} 'ஓ! ரிச்சர்ட் மிகவும் மெதுவாக இருக்கிறார் ... '\n {print} _\n `` `\n" default_save_name: கதை + for_command: + levels: + 18: + story_text: "கடைசியாக,} i {for} {in} 1 {range} 5` வரை உண்மையான பைதான் குறியீடாக மாற்றுவோம்:\n" + example_code: "`` `\n {for} i {in} {range} (1,5):\n {print} (i)\n `` `\n" + 11: + example_code: "`` `\n }} {for} {in} 1 {range} 10 வரை\n {to} கவுண்டர்\n {print} 'தயாராக இல்லையா. இங்கே நான் வருகிறேன்! '\n `` `\n" + story_text: "இந்த மட்டத்தில், {for க்கு க்கு புதிய வடிவத்தை சேர்க்கிறோம். முந்தைய நிலைகளில், ஒரு பட்டியலுடன்} `க்கு` {ஐப் பயன்படுத்தினோம், ஆனால் எண்களுடன் {for க்கு {{ஐப் பயன்படுத்தலாம்.\n ஒரு மாறி பெயரைச் சேர்ப்பதன் மூலம் அதைச் செய்கிறோம், அதைத் தொடர்ந்து `{` {for} {in இல். தொடங்க வேண்டிய எண்ணை, `{for}` மற்றும் முடிவடையும் எண்ணை எழுதுகிறோம்.\n\n என்ன நடக்கிறது என்பதைப் பார்க்க உதாரணத்தை முயற்சிக்கவும்! இந்த மட்டத்தில் மீண்டும்,} `அறிக்கைகளுக்கு {கீழே உள்ள வரிகளில் நீங்கள் உள்தள்ளல்களைப் பயன்படுத்த வேண்டும்." + 17: + example_code: "`` `\n {for} i {in} {range} 1 {to} 10:\n {print} i\n {print} 'தயாராக இல்லையா, இங்கே நான் வருகிறேன்!'\n `` `\n" + story_text: "இப்போது நாம் உள்தள்ளலை கொஞ்சம் மாற்றப் போகிறோம். ஒவ்வொரு முறையும் நமக்கு ஒரு உள்தள்ளல் தேவைப்படும்போது, உள்தள்ளலுக்கு முன் `:` தேவை.\n" + 10: + example_code_2: "`` `\n செயல்கள் = உங்கள் கைகளை கைதட்டி, உங்கள் கால்களைத் தடுமாறச் செய்யுங்கள், கூச்சலிடுங்கள்!\n _\n {repeat} 2 {times}\n {print} 'நீங்கள் மகிழ்ச்சியாக இருந்தால், அது உங்களுக்குத் தெரிந்தால்,' செயல்\n {sleep} 2\n {print} 'நீங்கள் மகிழ்ச்சியாக இருந்தால், அது உங்களுக்குத் தெரிந்தால், அதை நீங்கள் காட்ட விரும்புகிறீர்கள்'\n {print} 'நீங்கள் மகிழ்ச்சியாக இருந்தால், அது உங்களுக்குத் தெரிந்தால்,' செயல்\n {sleep} 3\n `` `\n" + example_code: "`` `\n விலங்குகள் = நாய், பூனை, குமிழி\n }} விலங்குகளில்} விலங்குகளில்\n {for} 'நான் நேசிக்கிறேன்' விலங்கு\n `` `\n" + story_text: "## க்கு\n இந்த மட்டத்தில் `{for}` என்ற புதிய குறியீட்டைக் கற்றுக்கொள்கிறோம். `{for}` உடன் நீங்கள் ஒரு பட்டியலை உருவாக்கி எல்லா கூறுகளையும் பயன்படுத்தலாம்.\n `{for க்கு for` `{for}` மற்றும் `{போன்ற ஒரு தொகுதியை உருவாக்குகிறது, எனவே தொகுதியில் உள்ள அனைத்து வரிகளும் 4 இடைவெளிகளுடன் தொடங்க வேண்டும்." + story_text_2: "### உடற்பயிற்சி\n } செயலில் {செயல்களில் {செயல்களில் {க்கு {} செயல்களை 2 இல் சேர்ப்பதன் மூலம் இந்த குறியீட்டை முடிக்கவும்.\n" + name: '{for}' + default_save_name: க்கு + description: '} for} கட்டளை' + turtle_draw_it: + levels: + 5: + example_code: "குறிப்பு:\n `` `\n தேர்ந்தெடுக்கப்பட்ட_லெட்டர் {is} {ask} 'நீங்கள் எந்த கடிதத்தைப் பார்க்க விரும்புகிறீர்கள்? F, இ அல்லது l? '\n {if} _\n `` `\n" + story_text: "### உடற்பயிற்சி\n ஆமைடன் வரைபடங்களை மீண்டும் உருவாக்கவும்!\n\n ** கூடுதல் ** அவர்கள் எந்த கடிதத்தைப் பார்க்க விரும்புகிறார்கள் என்பதை தீர்மானிக்க அனுமதிக்கும் ஒரு குறியீட்டை மட்டுமே உருவாக்கவும்! மேலும் இன்னும் கடிதங்களைச் சேர்க்க முடியுமா?\n\n
\n F \n இ \n L \n
\n" + 15: + example_code: "சுழல்\n `` `\n தூரம் = 5\n {while} தூரம் <200\n தூரம் = தூரம் + 5\n _\n `` `\n" + story_text_2: "விசிறி \n" + story_text: "### உடற்பயிற்சி\n ஆமைடன் வரைபடங்களை மீண்டும் உருவாக்கவும்!\n\n ச்பைரல் \n" + example_code_2: "விசிறி\n `` `\n {define} draw_a_square {} பக்கத்துடன்\n _\n\n i = 100\n } போது} i> 1\n } {with} i\n _\n i = i - 3\n `` `\n" + example_code_3: "விண்மீன்\n ஒரு விண்மீன் பொதுவாக 144 டிகிரி-திருப்பங்களைப் பயன்படுத்தி வரையப்படுகிறது. எடுத்துக்காட்டாக, இதை சற்று 143 டிகிரியாக மாற்றி, {} வளையத்துடன் பல முறை மீண்டும் இந்த உருவத்தை உருவாக்க முடியும்.\n" + 1: + story_text: "### உடற்பயிற்சி\n ஆமைடன் வரைபடங்களை மீண்டும் உருவாக்கவும்!\n\n
\n செவ்வகம் \n நாற்கை \n படிக்கட்டுகள் \n
\n" + 10: + example_code_2: "கிறிச்துமச் விளக்குகள்:\n\n கண்ணுக்கு தெரியாத வெள்ளை கோடு மூலம் திரையின் இடது பக்கத்திற்கு நகர்த்துவதன் மூலம் தொடங்கவும். பின்னர் கிறிச்துமச் விளக்குகளைத் தொங்கவிடுங்கள்!\n `` `\n {color} வெள்ளை\n {turn} -90\n {forward} 300\n {turn} 90\n\n வண்ணங்கள் = சிவப்பு, நீலம், மஞ்சள், ஊதா, பச்சை, ஆரஞ்சு, இளஞ்சிவப்பு\n }} sosen_color {} வண்ணங்களில்\n _\n `` `\n" + story_text: "### உடற்பயிற்சி\n ஆமைடன் வரைபடங்களை மீண்டும் உருவாக்கவும்!\n\n
\n உள்ளமைக்கப்பட்ட அறுகோண \n போக்குவரத்து விளக்குகள் \n" + example_code: "குறிப்பு உள்ளமைக்கப்பட்ட அறுகோண:\n `` `\n தூரங்கள் = 100, 80, 60, 40, 20\n }} தூரத்திற்கு} தூரத்தில்\n _\n `` `\n\n போக்குவரத்து விளக்குகள்:\n `` `\n நிறங்கள் = சிவப்பு, மஞ்சள், பச்சை\n }} sosen_color {} வண்ணங்களில்\n {for} _\n {in} _\n `` `\n" + story_text_2: "கிறிச்மச் விளக்குகள் \n" + 11: + story_text: "### உடற்பயிற்சி\n ஆமைடன் வரைபடங்களை மீண்டும் உருவாக்கவும்!\n\n
\n பீஐவ் (6) \n விசிறி (5) \n" + example_code: "Hint Beehive:\n `` `\n {for} amount_of_combs {in} {range} 1 {to} _\n {for} walls_of_one_comb {in} {range} 1 {to} _\n {forward} _\n {turn} _\n {forward} _\n {turn} _\n `` `\n\n குறிப்பு ரசிகர்:\n நிலை 7 இல் நீங்கள் செய்த விசிறியைப் போலத் தொடங்குங்கள். அல்லது தேனீவுக்கான குறிப்பில் உச்சத்தை எடுத்துக் கொள்ளுங்கள், ஏனெனில் குறியீடுகள் மிகவும் ஒத்தவை.\n\n ச்னோஃப்ளேக்: ஒரு 'காலை' தயாரிப்பதன் மூலம் தொடங்கி 6 முறை மீண்டும் செய்யவும்.\n" + 2: + story_text: "### உடற்பயிற்சி\n ஆமைடன் வரைபடங்களை மீண்டும் உருவாக்கவும்!\n\n
\n முக்கோணம் \n படகு \n
\n" + 6: + example_code: "சதுரத்திற்கான குறிப்பு:\n `` `\n தேர்ந்தெடுக்கப்பட்ட_கோலர் = {ask} _\n `` `\n" + story_text: "### உடற்பயிற்சி\n ஆமைடன் வரைபடங்களை மீண்டும் உருவாக்கவும்!\n\n ** கூடுதல் ** நாற்கை எந்த நிறமாக இருக்க வேண்டும் என்பதை வீரர் தீர்மானிக்கட்டும்.\n\n *** கூடுதல் *** உங்கள் சொந்த முதல் பெயரின் கடிதத்தையும், உங்கள் சொந்த நாட்டின் கொடியையும் உருவாக்க முடியுமா?\n\n
\n நாற்கை \n கடிதங்கள் \n கொடி \n
\n" + 9: + example_code: "உள்ளமைக்கப்பட்ட சதுரங்களுக்கான குறிப்பு:\n `` `\n நிறங்கள் = சிவப்பு, நீலம், ஆரஞ்சு, மஞ்சள், இளஞ்சிவப்பு, ஊதா, பச்சை, பழுப்பு, கருப்பு\n தூரம் = 120\n {repeat} 5 {times}\n _\n `` `\n கொடிகளுக்கு குறிப்பு:\n `` `\n நாடு = {ask} 'எந்த நாட்டின் கொடியைப் பார்க்க விரும்புகிறீர்கள்?'\n {if} நாடு {is} 'நெதர்லாந்து'\n color_1 = சிவப்பு\n வண்ணம்_2 = வெள்ளை\n வண்ணம்_3 = நீலம்\n `` `\n" + story_text: "### உடற்பயிற்சி\n ஆமைடன் வரைபடங்களை மீண்டும் உருவாக்கவும்!\n\n ** கூடுதல் ** அடைப்புக்குறிக்குள் உள்ள எண் இந்த உருவத்தை எத்தனை குறியீட்டில் வரைய முடியும் என்பதைக் குறிக்கிறது. அதே அளவு வரிகளில் இதைச் செய்ய முடியுமா?\n\n ** கூடுதல் ** வீரருக்கு அவர்கள் எந்த நாட்டைக் கொடியைக் காண விரும்புகிறார்கள் என்பதைத் தேர்வு செய்யுங்கள்.\n\n
\n குறுக்கு (7) \">\n கொடிகள் \n
\n" + 12: + example_code: "குறிப்பு வளையல் வடிவமைப்பு திட்டம்\n `` `\n {define} draw_a_square\n _\n\n {color} வெள்ளை\n {turn} -90\n {forward} 300\n {turn} 180\n\n {for} i {in} {range} 1 {to} 5 வரை\n {color} சாம்பல்\n {forward} 100\n வடிவம் = {ask} 'வளையலில் அடுத்து எந்த வகையான வடிவத்தை விரும்புகிறீர்கள்?'\n தேர்ந்தெடுக்கப்பட்ட_கோலர் = {ask} 'எந்த நிறத்தில்?'\n {color} தேர்ந்தெடுக்கப்பட்ட_கோலர்\n {if} shate = 'சதுரம்'\n {call} draw_a_square\n `` `\n" + story_text: "### உடற்பயிற்சி\n ஆமைடன் வரைபடங்களை மீண்டும் உருவாக்கவும்!\n\n முதலாவதாக, ஒவ்வொரு வடிவத்திற்கும் ஒரு செயல்பாட்டை வரையறுக்கவும் ** நீங்கள் வளையலில் பயன்படுத்த விரும்புகிறீர்கள். பின்னர், இது போன்ற வளையலுக்கு வடிவங்களைச் சேர்க்கவும்:\n\n வளையல் வடிவமைப்பு திட்டம் \n வண்ண விண்மீன் \n உள்ளமைக்கப்பட்ட சதுரங்கள் \n
\n" + 3: + story_text: "### உடற்பயிற்சி\n ஆமைடன் வரைபடங்களை மீண்டும் உருவாக்கவும்!\n\n
\n முக்கோணம் \n விண்மீன் \n
\n" + 7: + story_text: "### உடற்பயிற்சி\n ஆமைடன் வரைபடங்களை மீண்டும் உருவாக்கவும்!\n\n
\n அறுகோண \n முக்கோணம் \n விசிறி \n" + 8: + story_text: "### உடற்பயிற்சி\n ஆமைடன் வரைபடங்களை மீண்டும் உருவாக்கவும்!\n\n ** கூடுதல் ** அடைப்புக்குறிக்குள் உள்ள எண் இந்த உருவத்தை எத்தனை குறியீட்டில் வரைய முடியும் என்பதைக் குறிக்கிறது. அதே அளவு வரிகளில் இதைச் செய்ய முடியுமா?\n\n
\n நாற்கை (3) \n தோராயமாக வண்ண சுழல் (7) \n
\n" + 13: + story_text: "### உடற்பயிற்சி\n ஆமைடன் வரைபடங்களை மீண்டும் உருவாக்கவும்!\n\n வெவ்வேறு அளவுகளில் தெரு \n" + example_code: "வெவ்வேறு அளவுகளில் குறிப்பு தெரு\n `` `\n } வரையறுக்கவும்} draw_a_house {} அளவுடன்\n _\n\n {define} draw_a_house {with} 90\n {call} draw_a_house {with} 60\n {call} draw_a_house {with} 30\n `` `\n\n குறிப்பு வண்ணத் தெரு\n `` `\n }} sosen_color உடன்} draw_a_house {வரையறுக்கவும்\n _\n `` `\n\n பனி புயலைக் குறிக்கவும்\n `` `\n {call} draw_snowflake {} நீளம், வண்ணத்துடன்\n _\n\n எண்கள் = 10, 20, 30\n வண்ணங்கள் = _\n\n {with} i {define} {with} 1 {define} 5 வரை\n சீரற்ற_நம்பர் = _\n சீரற்ற_கோலர் = _\n {with} draw_snowflake {} சீரற்ற_நம்பர், சீரற்ற_கோலர்\n {for} வெள்ளை\n {in} சீரற்ற_நம்பர் * 5\n {range} 80\n `` `\n" + 14: + story_text: "### உடற்பயிற்சி\n வீரர் தங்கள் உருவம் எத்தனை மூலைகளைக் கொண்டிருக்க வேண்டும் என்று கேட்கும் ஒரு திட்டத்தை உருவாக்கவும், பின்னர் அந்த உருவத்தை உருவாக்குகிறது.\n பிளேயர் 10 ஐ நிரப்பும்போது படத்தில் உள்ள படம் வெளியீடு ஆகும்.\n\n
\n \n \n
\n" + example_code: "`` `\n } வரையறுக்கவும்} calculate_degrees {} தொகை_ஓஎஃப்_கார்னர்களுடன்\n _ 360 / தொகை_ஓஎஃப்_கார்னர்கள்\n\n\n {define} draw_figure {} டிகிரிகளுடன்\n _\n {with} 400/தொகை_ஆஃப்_கார்னர்கள்\n {define} _\n\n தொகை_ஆஃப்_கார்னர்கள் = {with} _\n } _ உடன் {forward} _ {\n\n } உடன்} _ {turn}\n } உடன்} _ {ask}\n `` `\n" + default_save_name: அதை வரையவும் + name: அதை வரையவும்! + description: இந்த படத்தை ஆமை கொண்டு வரையவும் + while_command: + name: '{while}' + default_save_name: போது_ கமாண்ட் + description: '{while}' + levels: + 15: + story_text: "நாம் ஒரு புதிய வளையத்தைக் கற்றுக்கொள்ளப் போகிறோம், `{while}` லூப்! அறிக்கை உண்மையாக இருக்கும் வரை நாங்கள் வளையத்தைத் தொடர்கிறோம்.\n எனவே வளையத்தில் உள்ள மதிப்பை மாற்ற மறக்காதீர்கள்.\n\n எடுத்துக்காட்டு குறியீட்டில், சரியான பதில் வழங்கப்படும் வரை நாங்கள் தொடர்கிறோம்.\n சரியான பதில் ஒருபோதும் வழங்கப்படாவிட்டால், லூப் ஒருபோதும் முடிவதில்லை!" + example_code: "`` `\n பதில் = 0\n } போது} பதில்! = 25\n பதில் = {while} '5 முறை 5 என்ன?'\n {ask} 'சரியான பதில் வழங்கப்பட்டுள்ளது'\n `` `\n" + years: + name: புத்தாண்டு + levels: + 11: + example_code: "`` `\n }} எண் {for} {in} _ {range} _\n {to} எண்\n {print}\n {sleep} 'புத்தாண்டு வாழ்த்துக்கள்!'\n `` `\n" + story_text: "இந்த மட்டத்தில் நீங்கள் `` எண் `{{{` {வரம்பு {`புதிய ஆண்டிற்கான கவுண்ட்டவுனுக்கு கட்டளையைப் பயன்படுத்தலாம்.\n\n ### உடற்பயிற்சி\n வெற்றிடங்களை நிரப்பி, குறியீட்டைச் செயல்படுத்துங்கள்!\n" + default_save_name: புத்தாண்டு கவுண்டன் + description: புதிய ஆண்டிற்கான கவுண்டன்! + dishes: + description: யார் உணவுகளைச் செய்கிறார்கள் என்பதைப் பார்க்க கணினியைப் பயன்படுத்தவும் + name: உணவுகள்? + levels: + 4: + story_text: "மேற்கோள் மதிப்பெண்களுடன் உங்கள் பாத்திரங்களைக் கழுவுதல் திட்டத்தை இன்னும் சிறப்பாக மாற்றலாம்.\n\n ### உடற்பயிற்சி\n முதலில், இந்த எடுத்துக்காட்டு நிரல் வேலை செய்ய சரியான சின்னங்கள் அல்லது கட்டளைகளை வெற்றிடங்களில் நிரப்பவும்.\n நீங்கள் அதைப் பெற்றீர்களா? பெரிய! இப்போது முந்தைய மட்டத்திலிருந்து உங்கள் சொந்த குறியீட்டை நகலெடுத்து, சரியான இடங்களில் மேற்கோள் குறிகளைச் சேர்ப்பதன் மூலம் இந்த மட்டத்தில் செயல்படவும்.\n" + example_code: "`` `\n மக்கள் {is} அம்மா, அப்பா, எம்மா, சோஃபி\n {print} _ உணவுகள் _ ஆல் செய்யப்படுகின்றன\n {sleep}\n {print} மக்கள் {at} _\n `` `\n" + 7: + example_code: "`` `\n மக்கள் = அம்மா, அப்பா, எம்மா, சோஃபி\n {repeat} _ _ {print} 'பாத்திரங்களைக் கழுவுதல்' _ _ _ ஆல் செய்யப்படும்\n `` `\n" + story_text: "`{repeat}` மூலம் நீங்கள் குறியீட்டின் துண்டுகளை மீண்டும் செய்யலாம். பல நாட்களுக்கு யார் பாத்திரங்களை கழுவுவார்கள் என்பதைக் கணக்கிட இதைப் பயன்படுத்தலாம்!\n ### உடற்பயிற்சி\n ஒரு வாரம் முழுவதும் உணவுகளை யார் கழுவ வேண்டும் என்பதை தீர்மானிக்க `{repeat}` கட்டளையைப் பயன்படுத்தவும். ஒவ்வொரு வெற்று ஒரு கட்டளை அல்லது எண்ணால் நிரப்பப்பட வேண்டும்!\n ** கூடுதல் ** வீட்டிலுள்ள பிற பணிகளைப் பற்றி யோசிக்க முடியுமா? குறியீட்டை மாற்றியமைக்கவும், இது மூன்று வீட்டு வேலைகளை தீர்மானிக்கிறது. இது என்ன பணிகளைப் பற்றி அச்சிட மறக்காதீர்கள்!\n" + 10: + story_text: "இந்த மட்டத்தில் நீங்கள் முழு வாரத்திற்கும் ஒரு அட்டவணையை எளிதான வழியில் செய்யலாம்!\n\n ### உடற்பயிற்சி\n வெற்றிடத்தை அல்லது நேர்த்தியாக இருப்பது போன்ற இரண்டாவது வேலையைச் சேர்க்கவும், இது முழு வாரமும் பிரிக்கப்பட்டுள்ளதா என்பதை உறுதிப்படுத்திக் கொள்ளுங்கள்.\n
** கூடுதல் ** நிரல் நியாயமில்லை, நீங்கள் துரதிர்ச்டவசமாக இருக்க முடியும் மற்றும் வாரம் முழுவதும் கழுவலாம். நிரலை எவ்வாறு நியாயப்படுத்த முடியும்?\n" + example_code: "`` `\n நாட்கள் = திங்கள், செவ்வாய், அறிவன், வியாழன், வெள்ளி, காரி, ஞாயிறு\n பெயர்கள் = அம்மா, அப்பா, எம்மா, சோஃபி\n }} நாள் {} நாட்களில்\n {for} பெயர்கள் {in} {{print} '' நாளில் உணவுகள் செய்கின்றன\n `` `\n" + 3: + story_text: "இன்று யார் உணவுகளை கழுவ வேண்டும் அல்லது இன்று குப்பை பெட்டியை மாற்ற வேண்டும் என்பது பற்றி நீங்கள் எப்போதும் வீட்டில் உடன்படவில்லையா?\n கணினியை மிகவும் நியாயமாக தேர்வு செய்ய அனுமதிக்கலாம். இந்த மட்டத்தில் நீங்கள் அதை நிரல் செய்யலாம்!\n" + example_code: "`` `\n மக்கள் {is} அம்மா, அப்பா, எம்மா, சோஃபி\n {print} மக்கள் {at} {random} உணவுகளைச் செய்ய வேண்டும்\n `` `\n" + story_text_2: "### உடற்பயிற்சி\n பாத்திரங்கழுவி நிரலின் உங்கள் சொந்த பதிப்பை உருவாக்கவும். முதலில் உங்கள் குடும்ப உறுப்பினர்களின் பட்டியலை உருவாக்கவும்.\n செய்ய வேண்டிய ஒரு பணியைப் பற்றி சிந்தியுங்கள், `{at {{at}` கட்டளையுடன் யார் பணியைச் செய்ய வேண்டும் என்பதை கணினி தீர்மானிக்கட்டும்.\n\n ** கூடுதல் ** உணவுகளை நீங்களே செய்வது போல் தெரியவில்லையா? `{random}` `{கட்டளையிலிருந்து உங்கள் பெயரை பட்டியலிலிருந்து அகற்றுவதன் மூலம் நிரலை ஏக் செய்யுங்கள்.\n" + 5: + example_code: "`` `\n மக்கள் {is} அம்மா, அப்பா, எம்மா, சோஃபி\n பாத்திரங்கழுவி {is} மக்கள் {at} {random}\n _ பாத்திரங்கழுவி {is} சோஃபி {print} _ மிகவும் மோசமானது நான் உணவுகளை செய்ய வேண்டும் _\n _ {print} 'அதிர்ச்டவசமாக உணவுகள் இல்லை, ஏனெனில்' _ 'ஏற்கனவே கழுவுகிறது'\n `` `\n" + story_text: "`{If என்றால் நீங்கள் இப்போது திட்டத்தில் தேர்வில் அதிக வேடிக்கையாக இருக்க முடியும். கணினி உருவாக்கிய தேர்வுக்கு உங்கள் நிரல் பதிலளிக்கலாம்.\n ### உடற்பயிற்சி\n குறியீட்டை முடிக்க முடியுமா, அதனால் அது உங்கள் முறை மற்றும் இல்லையெனில் 'ஆம்!'\n மேற்கோள்களை மறந்துவிடாதீர்கள்!\n" + 6: + story_text: "எல்லோரும் எத்தனை முறை உணவுகளை செய்யப் போகிறார்கள்? அது நியாயமா? நீங்கள் அதை இந்த மட்டத்தில் எண்ணலாம்.\n" + example_code: "`` `\n மக்கள் = அம்மா, அப்பா, எம்மா, சோஃபி\n emma_washes = 0\n பாத்திரங்கழுவி = மக்கள் {at} {random}\n {print} 'பாத்திரங்கழுவி' பாத்திரங்கழுவி\n {if} பாத்திரங்கழுவி {is} emma emma_washes = emma_washes + 1\n {print} 'எம்மா இந்த வாரம் உணவுகளைச் செய்வார்' எம்மா_விச்கள் 'டைம்ச்'\n `` `\n\n இப்போது நீங்கள் ஒரு வாரம் முழுவதும் கணக்கிட 3 முதல் 5 வரிகளை சில முறை (எ.கா. ஒரு வாரத்திற்கு 7 முறை) நகலெடுக்கலாம்.\n வாரம் முழுவதும் குறியீட்டை உருவாக்குகிறீர்களா?\n" + story_text_2: "நீங்கள் மிகவும் துரதிர்ச்டவசமாக இருந்தால், முந்தைய நிரல் முழு வாரமும் உணவுகளைச் செய்ய உங்களைத் தேர்வு செய்யலாம்! அது நியாயமில்லை!\n ஒரு சிறந்த அமைப்பை உருவாக்க நீங்கள் தேர்ந்தெடுக்கப்பட்ட நபரை பட்டியலிலிருந்து அகற்ற `{remove}` கட்டளையைப் பயன்படுத்தலாம். எல்லோருக்கும் ஒரு திருப்பம் கிடைக்கும் வரை நீங்கள் மீண்டும் உணவுகளைச் செய்ய வேண்டியதில்லை.\n\n திங்கள் மற்றும் செவ்வாய் உங்களுக்காக தயாராக உள்ளன! வாரத்தின் பிற்பகுதியைச் சேர்க்க முடியுமா?\n மேலும்… உங்கள் பட்டியல் காலியாக இருக்கும்போது ஒரு தீர்வைக் கொண்டு வர முடியுமா?\n" + example_code_2: "`` `\n மக்கள் = அம்மா, அப்பா, எம்மா, சோஃபி\n பாத்திரங்கழுவி = மக்கள் {at} {random}\n {print} 'திங்கள் உணவுகள் செய்யப்படுகின்றன:' பாத்திரங்கழுவி\n } மக்களிடமிருந்து} பாத்திரங்கழுவி {அகற்றவும்\n பாத்திரங்கழுவி = மக்கள் {remove} {from}\n {at} 'செவ்வாய்க்கிழமை உணவுகள் செய்யப்படுகின்றன:' பாத்திரங்கழுவி\n } மக்களிடமிருந்து} பாத்திரங்கழுவி {அகற்றவும்\n `` `\n" + default_save_name: உணவுகள் + music: + default_save_name: இசை + levels: + 18: + example_code: "`` `\n {def} line_1 ():\n {for} i {in} {range} (1, 5):\n {play} a\n {play} d\n {play} f\n {play} a\n\n {def} line_2 ():\n {for} i {in} {range} (1, 5):\n {play} g\n {play} c\n {play} e\n {play} g\n\n {def} line_3 ():\n _\n\n {print} ('குடிபோதையில் மாலுமி')\n {print} ('குடிபோதையில் மாலுமியுடன் நாம் என்ன செய்ய வேண்டும்?')\n வரி_1 ()\n வரி_2 ()\n வரி_3 ()\n {print} ('அதிகாலையில்')\n `` `\n" + story_text: "### உடற்பயிற்சி\n இந்த கடைசி மட்டத்தில் கூட நாம் சில இசையை உருவாக்க முடியும்! இப்போது தேவைப்படும் அனைத்து தொடரியல் மற்றும் கவனமாக இருங்கள்.\n எடுத்துக்காட்டு குறியீட்டில் செயல்பாடுகள் எவ்வாறு வரையறுக்கப்படுகின்றன மற்றும் அழைக்கப்படுகின்றன என்பதை நன்றாகப் பாருங்கள்.\n பாடலை முடிக்கவும்!\n" + 3: + example_code: "`` `\n குறிப்புகள் {is} A4, B4, C4\n {play} குறிப்புகள் {at} {random}\n {play} குறிப்புகள் {at} {random}\n {play} குறிப்புகள் {at} {random}\n `` `\n" + story_text: "சீரற்ற மெல்லிசையை உருவாக்கவும்!\n\n ### உடற்பயிற்சி\n எடுத்துக்காட்டு குறியீடு ஒரு சீரற்ற மெலடியை உருவாக்குகிறது, ஆனால் இது மிகவும் குறுகியதாக இருக்கிறது, மேலும் பல குறிப்புகள் பயன்படுத்தப்படவில்லை.\n பட்டியலில் கூடுதல் குறிப்புகளைச் சேர்த்து, கடைசி வரியை இன்னும் இரண்டு முறை நகலெடுப்பதன் மூலம் நீண்ட மெல்லிசையை உருவாக்கவும்.\n" + 1: + example_code: "`` `\n {play} சி 4\n {play} d4\n {play} e4\n {play} f4\n {play} g4\n {play} a4\n {play} b4\n {play} c5\n `` `" + story_text: "இந்த மட்டத்தில் ஒரு பாடலை இயக்க `{ப்ளே` கட்டளையை எவ்வாறு பயன்படுத்துவது என்பதை நீங்கள் கற்றுக் கொள்வீர்கள்!\n\n `{play}` என தட்டச்சு செய்க. அதைத் தொடர்ந்து நீங்கள் விளையாட விரும்பும் குறிப்பை. அளவு C-D-E-F-G-A-B க்கு செல்கிறது.\n நீங்கள் பார்க்க முடியும் என 7 வெவ்வேறு கடிதங்கள் உள்ளன, ஆனால் நாங்கள் 7 குறிப்புகளுக்கு மேல் விளையாட முடியும்.\n அளவைத் தேர்வுசெய்ய கடிதத்தின் பின்னால் 0 முதல் 9 வரை ஒரு எண்ணைத் தட்டச்சு செய்க, எடுத்துக்காட்டாக பி 4 சி 5 வந்த பிறகு.\n C0 என்பது நீங்கள் விளையாடக்கூடிய மிகக் குறைந்த குறிப்பு, B9 மிக உயர்ந்தது.\n\n ### உடற்பயிற்சி\n எடுத்துக்காட்டு குறியீட்டை முயற்சிக்கவும், பின்னர் அதனுடன் விளையாடுங்கள்! உங்கள் சொந்த மெல்லிசையை உருவாக்க முடியுமா?\n அடுத்த கட்டத்தில் நீங்கள் ஏற்கனவே உள்ள சில பாடல்களை எவ்வாறு வாசிப்பது என்பதை கற்றுக்கொள்வீர்கள்." + 4: + story_text: "கரோக்கி இயந்திரத்தை உருவாக்க `{clear}` கட்டளையைப் பயன்படுத்தவும்!\n\n ### உடற்பயிற்சி\n 'மேரி ஏட் எ லிட்டில் லாம்ப்' இன் கரோக்கி பதிப்பை முடிக்கவும்.\n பின்னர், நீங்கள் விரும்பும் எந்த பாடலின் கரோக்கி பதிப்பை உருவாக்கவும்!\n" + example_code: "`` `\n {print} 'மேரிக்கு ஒரு சிறிய ஆட்டுக்குட்டி இருந்தது'\n {play} e\n {play} d\n {play} c\n {play} d\n {play} e\n {play} e\n {play} e\n {clear}\n {print} 'சிறிய ஆட்டுக்குட்டி, சிறிய ஆட்டுக்குட்டி'\n {play} d\n {play} d\n {play} d\n {play} e\n {play} e\n {play} e\n {clear}\n {print} 'மேரிக்கு ஒரு சிறிய ஆட்டுக்குட்டி இருந்தது'\n {play} e\n `` `\n" + 9: + story_text: "இந்த மட்டத்திலிருந்து உங்களால் முடியும் - மற்றவற்றுடன் - ஒரு {repeat} கட்டளைக்குள் {repeat} கட்டளையைப் பயன்படுத்தவும்.\n இது 'இனிய பிறந்தநாள்' போன்ற பாடல்களை இன்னும் குறுகியதாக ஆக்குகிறது!\n\n ### உடற்பயிற்சி\n பாடலை முடிக்கவும்!\n" + example_code: "`` `\n முதல்_ நேரம் = ஆம்\n {repeat} 2 {times}\n {repeat} 2 {times}\n {play} c\n {play} d\n {play} c\n {if} first_time {is} ஆம்\n {play} f\n {play} e\n first_time {is} இல்லை\n {else}\n _\n `` `\n" + 8: + example_code: "`` `\n {print} 'சகோதரர் சான்'\n {repeat} 2 {times}\n {play} c\n {play} d\n {play} e\n {play} c\n {repeat} 2 {times}\n {play} e\n {play} f\n {play} g\n {sleep} 1\n `` `\n" + story_text: "இப்போது நாம் பல வரிகளுக்கு `{repeat}` கட்டளையைப் பயன்படுத்தலாம், பாடல்களை இன்னும் எளிதாக உருவாக்க முடியும்!\n\n ### உடற்பயிற்சி\n சகோதரர் சானின் பாடலை முடிக்கவும் (ஃப்ரேர் சாக்). `{repeat}` பயன்படுத்த மறக்காதீர்கள்!\n" + 17: + story_text: "வெவ்வேறு விருப்பங்களை உருவாக்க நீங்கள் {elif} ஐப் பயன்படுத்தலாம்.\n\n ### உடற்பயிற்சி\n முதலாவதாக, குறியீட்டை வேலை செய்ய பெருங்குடல்களைச் சேர்க்கவும்.\n மற்ற மனநிலைக்கு குறைந்தது 2 பாடல்களைச் சேர்ப்பதன் மூலம் இந்த குறியீட்டை முடிக்கவும். உதாரணமாக ஒரு மகிழ்ச்சியான பாடல் மற்றும் கோபமான பாடல்.\n" + example_code: "`` `\n {define} Scry_song\n {for} i {in} {range} 1 {to} 3\n {play} g\n {play} e\n {sleep} 2\n {for} i {in} {range} 1 {to} 3\n {play} f\n {play} d\n\n மனநிலை = {ask} 'நீங்கள் எந்த உணர்ச்சியை உணர்கிறீர்கள்?'\n {if} மனநிலை {is} 'பயம்'\n {call} Scry_song\n {elif} _\n `` `\n" + 2: + story_text: "### உடற்பயிற்சி\n பாடல்களை முடிக்கவும்! சில மெல்லிசைகளுக்கான குறியீடுகளைத் தொடங்கினோம்.\n" + example_code_2: "`` `\n {print} ட்விங்கிள் ட்விங்கிள் லிட்டில் ச்டார்\n {play} c\n {play} c\n {play} g\n {play} g\n {play} a\n {play} a\n {play} g\n {sleep} 1\n {play} f\n {play} f\n `` `\n" + example_code: "`` `\n {print} பழைய மேக் டொனால்டுக்கு ஒரு பண்ணை இருந்தது\n {play} c5\n {play} c5\n {play} c5\n {play} g4\n {play} a4\n {play} a4\n {play} g4\n `` `\n" + story_text_2: நீங்கள் பார்க்க முடியும் என, பாடலில் கொஞ்சம் இடைநிறுத்தத்தை சேர்க்க `{sleep}` கட்டளையையும் பயன்படுத்தலாம். + 7: + example_code: "`` `\n {print} 'ட்விங்கிள் ட்விங்கிள் லிட்டில் ச்டார்'\n {repeat} 2 {times} {play} c4\n {repeat} 2 {times} {play} g4\n _\n `` `\n" + story_text: "`{repeat}` கட்டளையைப் பயன்படுத்துவது மெல்லிசைகளுக்கான உங்கள் குறியீடுகளை மிகக் குறைவாக மாற்றும்!\n\n ### உடற்பயிற்சி\n `{repeat}` கட்டளையைப் பயன்படுத்தி ட்விங்கிள் ட்விங்கிள் லிட்டில் ச்டாருக்கான குறியீட்டை முடிக்கவும்.\n முந்தைய நிலைகளில் நீங்கள் உருவாக்கிய பாடல்களுக்குச் செல்லுங்கள். அந்த குறியீடுகளையும் குறைக்க முடியுமா?\n" + 15: + example_code: "`` `\n {define} பாடல்\n {play} _\n\n yes_or_no = {ask} 'எனது ஒருபோதும் முடிவடையாத எனது பாடலைக் கேட்க விரும்புகிறீர்களா?'\n {} yeal_or_no = 'ஆம்'\n {while} பாடல்\n {call} '\n `` `\n" + story_text: "** எச்சரிக்கை ** இந்த துணிவு மிகவும் எரிச்சலூட்டும்!\n ஒரு பாடலை எப்போதும் மீண்டும் செய்ய {while} கட்டளையையும் பயன்படுத்தலாம்.\n\n ### உடற்பயிற்சி\n ஒருபோதும் முடிவடையாத பாடலை முடிக்கவும்.\n" + 5: + example_code: "`` `\n பதில் {is {{if} 'சிம்பாப்வேயின் மூலதனம் என்ன?'\n {ask} பதில் {is} உராரே {is} c6\n _\n `` `\n" + story_text: "ஒரு முழு பாடலை இசைக்க நீங்கள் எப்போதும் `{play}` கட்டளையைப் பயன்படுத்த வேண்டியதில்லை, சில நேரங்களில் நீங்கள் ஒரு குறிப்பை இயக்க விரும்புகிறீர்கள்.\n எடுத்துக்காட்டாக, நீங்கள் ஒரு நொடி வினா செய்ய விரும்பினால், பதில் சரியாக இருந்தால், பதில் தவறாக இருந்தால் நீங்கள் மகிழ்ச்சியான உயர் குறிப்பை விளையாடலாம்.\n\n ### உடற்பயிற்சி\n தவறான பதில் வழங்கப்பட்டால் சி 3 குறிப்பை இயக்கும் குறியீட்டின் வரியைச் சேர்ப்பதன் மூலம் முதல் கேள்வியை முடிக்கவும்.\n இந்த நொடி வினாவில் சேர்க்க மேலும் 3 கேள்விகளைப் பற்றி சிந்தியுங்கள்.\n" + 12: + story_text: "உங்கள் பாடல்களில் செயல்பாடுகளைப் பயன்படுத்துங்கள்! எடுத்துக்காட்டு குறியீட்டில் நீங்கள் காணக்கூடியது போல, ட்விங்கிள் ட்விங்கிள் லிட்டில் ச்டார் ஒவ்வொரு வரிக்கும் ஒரு செயல்பாட்டை உருவாக்கலாம். முதல் மூன்று வரிகளை நீங்கள் திட்டமிடியவுடன், நீங்கள் செய்ய வேண்டியது எல்லாம் செயல்பாடுகளை நீங்கள் விளையாட விரும்பும் வரிசையில் அழைக்கவும்.\n\n ### உடற்பயிற்சி\n ட்விங்கிள் ட்விங்கிள் லிட்டில் ச்டார் பாடலை முடிக்கவும்.\n இதற்கு முன்பு நிலைகளில் நீங்கள் திட்டமிடப்பட்ட அனைத்து பாடல்களையும் திரும்பிப் பாருங்கள், அந்த குறியீடுகளை சிறப்பாகவும், செயல்பாடுகளைப் பயன்படுத்துவதையும் குறுகியதாக மாற்ற முடியுமா?\n" + example_code: "`` `\n {define} first_line\n {play} c\n {play} c\n {play} g\n {play} g\n {play} a\n {play} a\n {play} g\n {sleep}\n\n {define} second_line\n {play} f\n {play} f\n {play} e\n {play} e\n {play} d\n {play} d\n {play} c\n {sleep}\n\n {define} மூன்றாம்_என்\n {play} g\n {play} g\n {play} f\n {play} f\n {play} e\n {play} e\n {play} d\n {sleep}\n\n {call} _\n {call} _\n {call} _\n {call} _\n {call} _\n {call} _\n `` `\n" + 13: + story_text: "கிட்டத்தட்ட ஒரே மாதிரியான, ஆனால் ஒவ்வொரு முறையும் சற்று வித்தியாசமான வரிகளைக் கொண்ட பாடல்களுக்கான வாதத்துடன் ஒரு செயல்பாட்டைப் பயன்படுத்தலாம்.\n ஒரு சான்று 'யாங்கி டூடுல்' பாடல். முதல் வரிகளின் முதல் 4 குறிப்புகள் ஒன்றே, ஆனால் ஒவ்வொரு முறையும் அவற்றைத் தொடர்ந்து வெவ்வேறு இரண்டு குறிப்புகள் உள்ளன.\n\n ### உடற்பயிற்சி\n யாங்கி டூடுலின் பாடலை முடிக்க முடியுமா?\n இந்த வழியில் நிரல் செய்ய மற்றொரு பாடலைப் பற்றி யோசிக்க முடியுமா?\n" + example_code: "`` `\n {print} 'யாங்கி டூடுல்'\n } குறிப்பு_1, நோட்_2, நோட்_3 உடன்} _ {வரையறுக்கவும்\n {define} சி 4\n {call} சி 4\n {with} d4\n {with} e4\n {call} _\n {play} _\n {play} _\n\n } 29, 31, 30 உடன்} வரி_1 {அழைப்பு\n } 29, 28, 0 உடன்} வரி_1 {அழைப்பு\n } 32, 31, 30 உடன்} வரி_1 {அழைப்பு\n\n {play} சி 4\n {play} b3\n {play} g3\n {play} a3\n {play} b3\n {with} சி 4\n {call} சி 4\n `` `\n" + 14: + example_code: "`` `\n {define} fire_alarm\n {print} 'தீ!'\n குறிப்பு = 40\n {for} i {in} {range} 1 {to} 100 வரை\n {if} குறிப்பு _ 50\n குறிப்பு = குறிப்பு + 5\n {play} _\n {else}\n குறிப்பு = 40\n\n நெருப்பு = {ask} 'நெருப்பு இருக்கிறதா?'\n {if} fire _ 'ஆம்'\n {call} fire_alarm\n `` `\n" + story_text: "நீங்கள் வேடிக்கையாக இசையை நிரல் செய்யலாம், ஆனால் ஃபயர் அலாரம் போன்ற ஏதாவது பயனுள்ளதாக இருக்க இசைக் குறிப்புகளையும் பயன்படுத்தலாம்!\n\n ### உடற்பயிற்சி\n நெருப்பு இருக்கும்போது தீ அலாரம் ஒலிக்கிறது என்பதை உறுதிப்படுத்திக் கொள்ளுங்கள்!\n" + 6: + story_text: "குறிப்புகளை வாசிப்பதற்கு பதிலாக, நீங்கள் இப்போது எண்களையும் விளையாடலாம். மிகக் குறைந்த குறிப்புக்கு `{play} 1` என தட்டச்சு செய்க, மிக உயர்ந்த குறிப்புக்கு` {play} 70` அல்லது இடையில் உள்ள எதையும்.\n\n ### உடற்பயிற்சி\n இது இசை கணிதத்தை அழைக்கிறது! வெவ்வேறு தொடக்க எண்களுடன் இரண்டு முறை எடுத்துக்காட்டு குறியீட்டை முயற்சிக்கவும்.\n பின்னர், எண்களைப் பயன்படுத்தி ஒரு பாடலை உருவாக்க முடியுமா என்று பாருங்கள்.\n" + example_code: "`` `\n எண் = {ask} '1 முதல் 67 க்கு இடையில் ஒரு தொடக்க எண்ணைச் சொல்லுங்கள்'\n {print} எண்\n {play} எண்\n எண் = எண் + 1\n {print} எண்\n {play} எண்\n எண் = எண் + 1\n {print} எண்\n {play} எண்\n `` `\n" + 16: + story_text: "உங்கள் பழைய மெக்டொனால்ட் குறியீட்டை மேம்படுத்தவும்!\n\n ### உடற்பயிற்சி\n 'ஒரு பாடல் பாட' சாகசத்திலிருந்து உங்கள் குறியீட்டை எடுத்து அதில் இசைக் குறிப்புகளைச் சேர்க்கவும்!\n பாடலில் ஒவ்வொரு வரிக்கும் நீங்கள் ஒரு செயல்பாட்டை உருவாக்கலாம் மற்றும் வரி அச்சிடப்பட்ட பிறகு அந்த செயல்பாட்டை அழைக்கலாம்.\n நாங்கள் உங்களுக்காக முதல் வரியை வரையறுத்து, அதை குறியீட்டில் அழைத்தோம். முழு பாடலையும் முடிக்க முடியுமா?\n" + example_code: "`` `\n {define} வரி_1\n {for} i {in} {range} 1 {to} 3\n {play} g\n {play} d\n {for} i {in} {range} 1 {to} 2\n {play} e\n {play} d\n\n விலங்குகள் = ['பன்றி', 'நாய்', 'மாடு']\n ஒலிகள் = ['ஓங்க்', 'வூஃப்', 'மூ']\n நான் 1 முதல் 3 வரம்பில்\n விலங்கு = விலங்குகள் [i]\n ஒலி = ஒலிகள் [i]\n 'பழைய மெக்டொனால்டுக்கு ஒரு பண்ணை இருந்தது'\n அழைப்பு வரி_1\n 'E I இ I O!'\n _\n `` `\n" + name: இசை + description: ஒரு ட்யூன் விளையாடுங்கள்! + parrot: + levels: + 4: + story_text: "இந்த மட்டத்தில் நாம் `{ask}` மற்றும் `{print}` என்ற கட்டளைகளுடன் மேற்கோள் மதிப்பெண்களைப் பயன்படுத்த வேண்டும்.\n ### உடற்பயிற்சி\n வெற்றிடங்களில் மேற்கோள் குறிகளை நிரப்புவதன் மூலம் குறியீட்டை முடிக்கவும்.\n" + example_code: "`` `\n சொற்கள் {is} ச்குவாக், எடி\n {print} _ உங்கள் கிளிக்கு பயிற்சி அளிக்கவும்! _\n new_word {is} {ask} _ நீங்கள் எந்த வார்த்தையை கற்பிக்க விரும்புகிறீர்கள்? _\n {add} new_word {to_list} சொற்கள்\n {print} _ 🧒 _ new_word _, hedy! _ சொல்லுங்கள்\n {print} _ 🦜 _ சொற்கள் {at} {random}\n `` `\n" + 1: + example_code_2: "`` `\n {print} im hedy கிளி\n {ask} _\n {echo}\n {echo}\n" + story_text: "உங்களை நகலெடுக்கும் உங்கள் சொந்த நிகழ்நிலை செல்லப்பிராணி கிளியை உருவாக்கவும்!\n" + example_code: "`` `\n {print} im hedy கிளி\n {கேளுங்கள் your உங்கள் பெயர் என்ன?\n {ask}\n {echo}\n `` `\n" + story_text_2: "### உடற்பயிற்சி\n மஞ்சள் பொத்தானைக் சொடுக்கு செய்வதன் மூலம் எடுத்துக்காட்டு குறியீட்டை உங்கள் உள்ளீட்டுத் திரையில் நகலெடுக்கவும்.\n கிளி வேறு கேள்வியைக் கேட்கவும். எடுத்துக்காட்டில் உள்ள வெற்றிடங்களை நிரப்பவும்!\n ** கூடுதல் ** கிளி பல கேள்விகளைக் கேட்கவும் அனுமதிக்கலாம். உங்கள் சொந்த குறியீட்டிற்கு அடியில் இன்னும் சில குறியீடுகளைத் தட்டச்சு செய்க.\n" + 5: + story_text: "சரியான வார்த்தையைச் சொன்னால் உங்கள் கிளி வெகுமதி!\n\n ### உடற்பயிற்சி\n காணாமல் போன 4 கட்டளைகளை நிரப்புவதன் மூலம் குறியீட்டை முடிக்கவும்.\n" + example_code: "`` `\n சொற்கள் {is} ச்குவாக், எடி\n {print} 'உங்கள் கிளி பயிற்சி!'\n new_word {is} {ask} 'நீங்கள் அவர்களுக்கு எந்த வார்த்தையை கற்பிக்க விரும்புகிறீர்கள்?'\n {add} new_word {to_list} சொற்கள்\n சைட்_ வேர்ட் {is} சொற்கள் {at} {random}\n {print} 'new' new_word 'என்று சொல்லுங்கள், எடி!'\n {print} '🦜' Said_word\n . 🍪 '\n _ _ '🧒 இல்லை, எடி! 'New_word' என்று சொல்லுங்கள்\n `` `\n" + 2: + example_code: "`` `\n {print} im hedy கிளி\n பெயர் _ _ உங்கள் பெயர் என்ன?\n {print} பெயர்\n _\n {print} ச்குவாக்\n _\n {print} பெயர்\n `` `\n" + story_text: "முந்தைய மட்டத்தில் நீங்கள் ஒரு கிளி செய்துள்ளீர்கள், அது உங்களுக்குப் பிறகு மீண்டும் நிகழும். இந்த மட்டத்தில் கிளி ஒரு மாறியைப் பயன்படுத்தி ஊடாடும் மற்றும் `{ask}` கட்டளை.\n ஏதாவது சொல்லப்பட்ட பிறகு `{sleep}` கட்டளைகளைச் சேர்ப்பதன் மூலம் கிளி மேலும் வாழ்க்கை போன்றவர்களாக இருப்போம்.\n" + story_text_2: "### உடற்பயிற்சி\n முதலாவதாக, வரி 2 ஐ `{is}` மற்றும் ஒரு `{ask}` கட்டளை.\n கிளி சிறிது நேரம் அமைதியாக இருக்க அனுமதிக்க 4 மற்றும் 6 வது வரியில் `{sleep}` கட்டளையை நிரப்பவும்.\n\n ** கூடுதல் ** கிளி மேலும் பலவற்றைக் கேட்க முடியுமா?\n" + 3: + story_text: "உங்கள் கிளிக்கு `{add}` உடன் ஒரு புதிய வார்த்தையை கற்பிக்கவும்.\n ### உடற்பயிற்சி\n குறியீட்டை வேலை செய்ய `{சேர் {add}` கட்டளையைச் சேர்க்க முடியுமா?\n" + example_code: "`` `\n சொற்கள் {is} ச்குவாக், எடி\n {அச்சிடு your உங்கள் கிளிக்கு பயிற்சி அளிக்கவும்!\n new_word {ask} {is} நீங்கள் எந்த வார்த்தையை கற்பிக்க விரும்புகிறீர்கள்?\n _ new_word _ சொற்கள்\n {print} the புதிய New_word என்று சொல்லுங்கள், எடி!\n {print} 🦜 சொற்கள் {print} {at}\n `` `\n" + name: கிளி + default_save_name: கிளி + description: உங்களை நகலெடுக்கும் உங்கள் சொந்த நிகழ்நிலை செல்லப்பிராணி கிளியை உருவாக்கவும்! + is_command: + levels: + 14: + example_code_2: "`` `\n பெயர் = {ask} 'உங்கள் பெயர் என்ன?'\n {if} பெயர் == 'hedy'\n {print} 'நீங்கள் குளிர்ச்சியாக இருக்கிறீர்கள்!'\n `` `\n" + example_code_3: "`` `\n பெயர் = {ask} 'உங்கள் பெயர் என்ன?'\n {if} பெயர்! = 'எடி'\n {print} 'நீங்கள் எடி இல்லை'\n `` `\n" + story_text_3: "`! =` இதைப் பயன்படுத்தி வேறு ஏதாவது சமமாக ஏதாவது இல்லை என்றால் நீங்கள் ஒப்பிடலாம்:\n" + example_code: "`` `\n அகவை = {ask} 'உங்களுக்கு எவ்வளவு வயது?'\n } என்றால்} வயது> 12\n {ask} 'நீங்கள் என்னை விட வயதானவர்!'\n `` `\n `` `\n அகவை = {print} 'உங்களுக்கு எவ்வளவு வயது?'\n {if} அகவை <12\n {if} 'நீங்கள் என்னை விட இளையவர்!'\n {print}\n {else} 'நீங்கள் என்னை விட வயதானவர்!'\n `` `\n" + story_text: "நாங்கள் மேலும் புதிய உருப்படிகளைக் கற்றுக்கொள்ளப் போகிறோம். நீங்கள் ஏற்கனவே கணிதத்திலிருந்து, `<` மற்றும் `>` ஆகியவற்றிலிருந்து அறிந்திருக்கலாம்.\n முதல் எண் இரண்டாவதாக விட சிறியதாக இருந்தால் `<` சரிபார்க்கிறது, எடுத்துக்காட்டாக அகவை `<` 12 அகவை 12 ஐ விட சிறியதாக இருந்தால் சரிபார்க்கிறது.\n முதல் எண் சிறியதா அல்லது இரண்டாவதாக சமமாக இருக்கிறதா என்று நீங்கள் சரிபார்க்க விரும்பினால், நீங்கள் `<=` ஐப் பயன்படுத்தலாம், எடுத்துக்காட்டாக அகவை `<=` 11.\n முதல் எண் இரண்டாவது விட பெரியதாக இருந்தால் `>` சரிபார்க்கிறது, எடுத்துக்காட்டாக புள்ளிகள் `>` 10 புள்ளிகள் 10 ஐ விட பெரியதாக இருந்தால் சரிபார்க்கிறது.\n முதல் எண் பெரியதா அல்லது இரண்டாவதாக சமமாக இருக்கிறதா என்று நீங்கள் சரிபார்க்க விரும்பினால், நீங்கள் `> =` ஐப் பயன்படுத்தலாம், எடுத்துக்காட்டாக புள்ளிகள் `> =` 11.\n இந்த ஒப்பீடுகளை `{if}`, இது போன்றவற்றில் பயன்படுத்துகிறீர்கள்:\n" + story_text_2: "இந்த மட்டத்திலிருந்து, நீங்கள் சரியாக ஒப்பிட்டுப் பார்க்க விரும்பினால், நீங்கள் இரண்டு சம அறிகுறிகளைப் பயன்படுத்தலாம். பெரும்பாலான நிரலாக்க மொழிகள் இதைத்தான் செய்கின்றன:\n" + 2: + example_code: "`` `\n பெயர் {is} எடி\n அகவை {is} 15\n {print} பெயர் அகவை அகவை\n `` `\n" + example_code_2: "`` `\n பிடித்த_அனிமல் {is} _\n {print} எனக்கு பிடித்த_அனிமல் பிடிக்கும்\n `` `\n" + story_text: "## மாறிகள்\n நீங்கள் ஒரு வார்த்தையை `{is}` என்று பெயரிடலாம். இது ஒரு ** மாறி ** என்று அழைக்கப்படுகிறது. இந்த எடுத்துக்காட்டில் நாங்கள் பெயர் என்று அழைக்கப்படும் ஒரு மாறியை உருவாக்கினோம், அகவை எனப்படும் மாறியை உருவாக்கினோம். உங்கள் குறியீட்டில் எங்கும் என்ற வார்த்தையின் பெயரைப் பயன்படுத்தலாம், இது போன்ற எடி மூலம் மாற்றப்படும்:\n" + story_text_2: "### உடற்பயிற்சி\n உங்கள் சொந்த மாறிகள் செய்ய வேண்டிய நேரம்!\n எடுத்துக்காட்டு குறியீட்டில் `பிடித்த_அனிமல்` மாறி ஒரு எடுத்துக்காட்டு செய்தோம். வரி 1 இல் மாறி அமைக்கப்பட்டுள்ளது, மேலும் 2 வது வரிசையில் `{print}` கட்டளையில் மாறியைப் பயன்படுத்தினோம்.\n முதலாவதாக, உங்களுக்கு பிடித்த விலங்கை காலியாக நிரப்புவதன் மூலம் எங்கள் உதாரணத்தை முடிக்கவும். இந்த குறியீடுகளில் குறைந்தது 3 ஐ நீங்களே செய்யுங்கள். ஒரு மாறியைத் தேர்ந்தெடுத்து, `{is}` கட்டளையுடன் மாறியை அமைக்கவும். நாங்கள் செய்ததைப் போலவே `{print}` கட்டளையுடன் இதைப் பயன்படுத்தவும்.\n" + 6: + story_text: "ஒரு வார்த்தையை ஒரு மாறியில் சேமிப்பதில் மாற்றத்தை ஏற்படுத்துகிறோம்! இது போன்ற ஒரு மாறியில் ஒரு பெயரையோ அல்லது எண்ணையோ சேமிக்கும்போது `{என்பது {is க்கு பதிலாக` = `ஐப் பயன்படுத்தலாம்:\n" + example_code: "`` `\n பெயர் = எடி\n பதில் = 20 + 4\n `` `\n" + name: '{is}' + default_save_name: is_command + description: '{is} கட்டளை அறிமுகப்படுத்துகிறது' + maths: + default_save_name: கணிதம் + levels: + 6: + example_code: "`` `\n {print} '5 பிளச் 5' 5 + 5 ஆகும்\n {print} '5 மைனச் 5' 5 - 5 ஆகும்\n {print} '5 முறை 5' 5 * 5\n {print} '5 5 ஆல் வகுக்கப்படுகிறது' 5/5\n `` `\n" + story_text: "இந்த மட்டத்தில் நீங்கள் புதிதாக ஒன்றைக் கற்றுக்கொள்கிறீர்கள்: நீங்கள் இப்போது கணக்கிடலாம்.\n\n பிளச் எளிதானது, நீங்கள் கணிதத்துடன் எழுதுகிறீர்கள்: `5 + 5` எடுத்துக்காட்டாக. கழித்தல் நன்றாக வேலை செய்கிறது, அது `5 - 5`.\n\n உங்கள் விசைப்பலகையில் டைம்ச் அடையாளம் இல்லை என்பதால் நேரம் சற்று வித்தியாசமானது. தேடுங்கள், உண்மையில் இல்லை!\n அதனால்தான் 8: `5 * 5` க்கு மேல் உள்ள நட்சத்திரத்துடன் பெருக்குகிறோம். \"5 முறை 5\" எனப் படியுங்கள், அது அதை சிறப்பாக நினைவில் வைக்க உதவுகிறது.\n" + 12: + story_text: "** தசம எண்கள் **\n இதுவரை, எடி 1.5 போன்ற தசம எண்களை அனுமதிக்கவில்லை, ஆனால் இப்போது நாங்கள் அதை அனுமதிக்கிறோம். கணினிகள் தசம எண்களுக்கு `.` ஐப் பயன்படுத்துகின்றன என்பதை நினைவில் கொள்க." + example_code: "`` `\n {print} 'இரண்டரை பிளச் இரண்டரை மற்றும் ஒரு அரை ...'\n {print} 2.5 + 2.5\n `` `\n" + story_text_2: "** சொற்களுடன் கணிதம் **\n இந்த மட்டத்தில் நீங்கள் இது போன்ற சொற்களுடன் கூடுதலாக செய்யலாம்:" + example_code_2: "`` `\n a = 'அலோ'\n பி = 'உலகம்!'\n {print} a + b\n `` `\n" + name: கணிதம் + description: கணிதத்தை அறிமுகப்படுத்துகிறது + add_remove_command: + levels: + 3: + example_code: "`` `\n விலங்குகள் {is} நாய், பூனை, கங்காரு\n {is {{is} உங்களுக்கு பிடித்த விலங்கு எது?\n {சேர்க்க {ask} விலங்குகள்\n {add} நான் விலங்குகளை {{to_list} இல் தேர்வு செய்கிறேன்\n `` `\n" + story_text_3: "### உடற்பயிற்சி\n இந்த மெய்நிகர் உணவகத்தில் புதிய கட்டளைகளை முயற்சிக்கவும். பட்டியலில் பிளேயர் எதிர்பார்க்கும் சுவையைச் சேர்த்து, அவை ஒவ்வாமை கொண்ட சுவைகளை அகற்றவும்.\n" + story_text: "## சேர்\n `{சேர் {add}` கட்டளையுடன் பட்டியலில் உருப்படிகளைச் சேர்க்கலாம். ஒரு பட்டியலில் ஒரு உருப்படியைச் சேர்க்க நீங்கள் வெறுமனே தட்டச்சு செய்யலாம்: `{பென்குயின் {to_list} விலங்குகளைச் சேர்க்கவும் அல்லது எடுத்துக்காட்டு குறியீட்டில் உள்ள` {add} `கட்டளையைப் பயன்படுத்தலாம்.\n" + story_text_2: "## இருந்து அகற்று\n நீங்கள் ஒரு பட்டியலில் உருப்படிகளைச் சேர்க்க முடிந்தால், நிச்சயமாக அவற்றை கழற்றலாம். இது} `கட்டளையிலிருந்து` {remove} {மூலம் செய்யப்படுகிறது.\n" + example_code_2: "`` `\n விலங்குகள் {is} நாய், பூனை, கங்காரு\n விரும்பாதது {is {is} உங்களுக்கு என்ன விலங்கு பிடிக்காது?\n } அனி}}}} விலங்குகளிலிருந்து {belike {\n {ask} நான் விலங்குகளை {{remove} இல் தேர்வு செய்கிறேன்\n `` `\n" + example_code_3: "`` `\n {print} மர்ம மில்க் சேக்\n சுவைகள் {is} ச்ட்ராபெரி, சாக்லேட், வெண்ணிலா\n நம்பிக்கை {{{is} நீங்கள் என்ன சுவையை எதிர்பார்க்கிறீர்கள்?\n _\n ஒவ்வாமை {ask} {கேளுங்கள் you ஏதேனும் சுவைகளுக்கு நீங்கள் ஒவ்வாமை இருக்கிறீர்களா?\n _\n {is} நீங்கள் {{ask} மில்க் சேக்கில் ஒரு சுவைகளைப் பெறுவீர்கள்\n `` `\n" + name: '{} {add} & {to_list} {remove}' + default_save_name: add_remove_command + description: '{add} {to_list} மற்றும் {for {{for {fork ஐ அறிமுகப்படுத்துகிறது' + and_or_command: + name: '{and} & {or}' + default_save_name: மற்றும் + description: '{and} & {or} அறிமுகப்படுத்துகிறது' + levels: + 13: + story_text: "நாம் இப்போது `{and}` மற்றும் `{or}` ஆகியவற்றைக் கற்றுக்கொள்ளப் போகிறோம்! நீங்கள் இரண்டு அறிக்கைகளை சரிபார்க்க விரும்பினால், நீங்கள் இரண்டு `{if}` கள் பயன்படுத்த வேண்டியதில்லை, ஆனால் `{and}` மற்றும் `{or}` ஆகியவற்றைப் பயன்படுத்தலாம்.\n\n நீங்கள் `{and}` பயன்படுத்தினால், `{and}` உண்மையாக இருக்க வேண்டும். நாம் `{or}` பயன்படுத்தலாம். ஒரு அறிக்கை மட்டுமே சரியாக இருக்க வேண்டும்." + example_code: "`` `\n பெயர் = {ask} 'உங்கள் பெயர் என்ன?'\n அகவை = {ask} 'உங்கள் அகவை என்ன?'\n {if} பெயர் {is} 'hedy' {and} அகவை {is} 2\n {print} 'நீங்கள் உண்மையான எடி!'\n `` `\n" + ask_command: + name: '{ask}' + default_save_name: ask_command + levels: + 1: + example_code_3: "`` `\n _ நீங்கள் எப்படி இருக்கிறீர்கள்?\n _\n `` `\n" + example_code_2: "`` `\n {print} வணக்கம்!\n {கேளுங்கள் your உங்கள் பெயர் என்ன?\n {ask} வணக்கம்\n `` `\n" + example_code: "`` `\n {print} வணக்கம்!\n {கேளுங்கள் your உங்கள் பெயர் என்ன?\n `` `\n" + story_text: "## கேட்கும் கட்டளை\n இப்போது நீங்கள் `{print}` கட்டளையைப் பயன்படுத்தலாம், அடுத்த கட்டளையை கற்றுக்கொள்ள நீங்கள் தயாராக உள்ளீர்கள்: `{ask}`. `{ask}` கட்டளை மூலம், நீங்கள் ஒரு கேள்வி கேட்கலாம். அதைப் பாருங்கள்:\n" + story_text_2: "## `{echo}` கட்டளை\n கணினி உங்களுக்கு பதிலை மீண்டும் செய்ய விரும்பினால், நீங்கள் `{echo}` கட்டளையைப் பயன்படுத்தலாம். வாக்கியத்தின் முடிவில் பதில் எதிரொலிக்கப்படும், எனவே இந்த எடுத்துக்காட்டில் அலோவுக்குப் பிறகு.\n" + story_text_3: "### உடற்பயிற்சி\n `{ask}` மற்றும் `{echo}` கட்டளைகளை முயற்சிக்கவும். முதலாவதாக, இந்த நிரலைச் செயல்படுத்த வெற்றிடங்களை நிரப்பவும்.\n `{ask}` கட்டளையைப் பயன்படுத்தி மேலும் 2 கேள்விகளைக் கேளுங்கள், ஒவ்வொரு `{கேளுங்கள்` திரையில் பதிலை அச்சிட `{ask}` பயன்படுத்தவும்.\n" + 2: + example_code_2: "`` `\n பிடித்த விலங்கு {is} {ask} உங்களுக்கு பிடித்த விலங்கு எது?\n {print} எனக்கு பிடித்த விலங்கு பிடிக்கும்\n `` `\n" + story_text: "## கேட்கும் கட்டளை\n இப்போது நாம் எங்கள் குறியீடுகளில் ** மாறிகள் ** ஐப் பயன்படுத்தலாம், இனி நமக்கு `{echo}` கட்டளை தேவையில்லை.\n எங்கள் கேள்விகளுக்கான பதில்களைச் சேமிக்க மாறிகளைப் பயன்படுத்தலாம், இந்த வழியில் எங்கள் குறியீடுகளில் பல கேள்விகளுக்கு பதிலைப் பயன்படுத்தலாம்.\n அதைப் பாருங்கள்:\n\n இந்த வழியில் உங்கள் குறியீடு ஊடாடும்!\n" + story_text_2: "### உடற்பயிற்சி\n முந்தைய சாகசத்தில் `{is}` கட்டளையுடன் மாறிகளை அமைப்பதன் மூலம் நீங்கள் பயிற்சி செய்துள்ளீர்கள்.\n நீங்கள் குறைந்தது 3 மாறிகள் உருவாக்கி அவற்றை அச்சு கட்டளையுடன் பயன்படுத்தினீர்கள்.\n இப்போது, மாறிகளை அமைப்பதற்குப் பதிலாக, நாங்கள் எங்கள் எடுத்துக்காட்டில் செய்ததைப் போல மாறிகள் ஊடாடும் வகையில் இருக்க வேண்டும் என்று நாங்கள் விரும்புகிறோம்.\n\n முந்தைய சாகசத்திலிருந்து உங்கள் குறியீட்டை நகலெடுத்து, `{ask}` கட்டளைகளைப் பயன்படுத்தி மாறிகள் ஊடாடும்.\n" + example_code: "`` `\n பெயர் {is} {கேளுங்கள் your உங்கள் பெயர் என்ன?\n {ask} அலோ பெயர்\n அகவை {print} {is} உங்களுக்கு எவ்வளவு வயது?\n {ask} பெயர் அகவை வயது.\n `` `\n" + 18: + story_text: பைதான் குறியீட்டைப் பெறுவதற்கு நாம் செய்ய வேண்டிய இறுதி மாற்றம் `{ask}` {input} `என மாற்றப்படுகிறது. + example_code: "`` `\n {print} ('என் பெயர் எடி!')\n பெயர் = {input} ('உங்கள் பெயர் என்ன?')\n {print} ('எனவே உங்கள் பெயர்', பெயர்)\n `` `\n" + description: அறிமுகம் {ask} கட்டளை + blackjack: + name: பிளாக் சாக் + default_save_name: பிளாக் சாக் + description: உங்களால் முடிந்தவரை 21 ஐ நெருங்க முயற்சிக்கவும் + levels: + 17: + story_text: "பிளாக் சாக் என்பது அட்டைகளின் எளிய விளையாட்டு, அதில் நீங்கள் முடிந்தவரை 21 புள்ளிகளுக்கு அருகில் இருக்க வேண்டும். நீங்கள் இரண்டு அட்டைகளைப் பெறுவீர்கள். ஒவ்வொரு அட்டையும் அவற்றின் எண் மதிப்புக்கு மதிப்புள்ளது, மேலும் ஃபேச் கார்டுகள் (சாக், அரசி மற்றும் கிங்) 10 புள்ளிகள் மதிப்புடையவை.\n ஏச் 1 அல்லது 11 புள்ளிகள் மதிப்புடையது (நீங்கள் தேர்வு செய்யலாம்). வணிகர், உங்கள் எதிர்ப்பாளரும் இரண்டு அட்டைகளையும் பெறுகிறார்.\n நீங்கள் விரும்பினால், நீங்கள் மற்றொரு அட்டையைப் பெறலாம், மேலும் அதன் புள்ளிகள் உங்கள் மொத்தத்தில் சேர்க்கப்படும். வணிகர் மற்றொரு அட்டையை எடுக்கவும் தேர்வு செய்யலாம்.\n ஆனால் 21 புள்ளிகளுக்கு மேல் பெறாமல் கவனமாக இருங்கள், ஏனென்றால் நீங்கள் செய்தால், நீங்கள் இழக்கிறீர்கள்!\n 21 க்கு மிக நெருக்கமாக இருக்கும் வீரர், அதற்கு மேல் செல்லாமல், வெற்றி!\n\n ### உடற்பயிற்சி\n இந்த சாகசத்தில் எங்கள் பிளாக் சாக் விளையாட்டின் முதல் பகுதியை குறியிடுகிறோம். ஒரு அட்டை மதிப்பு எத்தனை புள்ளிகள் என்பதை கணக்கிட ஒரு செயல்பாட்டை உருவாக்குவோம்.\n\n *** மாறிகளை அமைக்கவும் ***\n 2 முதல் ஏச் வரை அனைத்து அட்டைகளின் பட்டியலையும் உருவாக்குவதன் மூலம் தொடங்கவும். அடுத்து ஃபேச் கார்டுகளின் பட்டியலை உருவாக்கவும், எனவே சாக், அரசி மற்றும் கிங். கார்டுகளின் பட்டியலிலிருந்து ஒரு சீரற்ற அட்டையைத் தேர்ந்தெடுங்கள்.\n\n *** புள்ளிகளைக் கணக்கிட ஒரு செயல்பாட்டை உருவாக்கவும் ***\n ஒரு அட்டை மதிப்பு எத்தனை புள்ளிகள் என்பதை கணக்கிடும் ஒரு செயல்பாட்டை உருவாக்கவும்.\n அனைத்து முக அட்டைகளும் 10 புள்ளிகள் மதிப்புடையவை, ஏ.சி.இ மதிப்பு 11 மற்றும் மற்ற எல்லா அட்டைகளும் அவற்றின் எண்களுக்கு மதிப்புள்ளது.\n செயல்பாட்டின் முடிவில் மாறி `புள்ளிகள்` திரும்பவும்.\n\n *** செயல்பாட்டை சோதிக்கவும் ***\n உங்கள் செயல்பாடு சரியாக வேலை செய்கிறதா என்பதை சோதிக்கவும். நீங்கள் வரையப்பட்ட எந்த அட்டையை நிரப்புவதன் மூலம் முதல் அச்சு கட்டளையை முடிக்கவும். கார்டு_1 உடன் செயல்பாட்டை அழைப்பதன் மூலம் இரண்டாவது வரியை முடிக்கவும்.\n குறியீட்டை ஓரிரு முறை இயக்கவும். முடிவுகளில் நீங்கள் மகிழ்ச்சியாக இருக்கிறீர்களா? பெரிய! பின்னர் நீங்கள் சோதனை பகுதியை அகற்றி அடுத்த சாகசத்தில் செல்லலாம்!\n" + example_code: "`` `\n {print} 'பிளாக் சாக்'\n\n # இந்த மாறிகள் அமைக்கவும்\n அட்டைகள் = _\n face_cards = _\n அட்டை_1 =\n\n # புள்ளிகளைக் கணக்கிட ஒரு செயல்பாட்டை உருவாக்கவும்\n } கார்டுடன்} கால்சுலேட்_ புள்ளிகள் {வரையறுக்கவும்:\n } if} அட்டை {} face_cards:\n புள்ளிகள் = _\n {define} _\n _\n {with}:\n _\n _ புள்ளிகள்\n\n # உங்கள் செயல்பாட்டை சோதிக்கவும்\n {if} 'உங்கள் அட்டை ஒரு' _\n {in} 'அது மதிப்புக்குரியது' _ 'புள்ளிகள்'.\n `` `\n" + blackjack_2: + name: பிளாக் சாக் 2 + default_save_name: பிளாக் சாக்_2 + description: பிளாக் சாக் பகுதி 2 + levels: + 17: + story_text: "### உடற்பயிற்சி\n இந்த சாகசத்தில் எங்கள் பிளாக் சாக் விளையாட்டின் இரண்டாம் பகுதியை குறியிடுகிறோம்.\n\n *** முந்தைய சாகசத்திலிருந்து உங்கள் குறியீட்டை ஒட்டவும் ***\n முந்தைய சாகசத்தில் நீங்கள் மாறிகளின் பட்டியலைத் தொடங்கி, ஒரு அட்டை எத்தனை புள்ளிகள் மதிப்புக்குரியது என்பதைக் கணக்கிட ஒரு செயல்பாட்டை உருவாக்கியுள்ளீர்கள். உங்கள் குறியீட்டை நகலெடுத்து இங்கே ஒட்டவும். உங்களுக்கு சோதனை பகுதி தேவையில்லை என்பதை நினைவில் கொள்ளுங்கள், எனவே நீங்கள் அதை இன்னும் அகற்றவில்லை என்றால், தயவுசெய்து இப்போது செய்யுங்கள்.\n\n *** மேலும் மாறிகளைச் சேர்க்கவும் ***\n நீங்கள் ஏற்கனவே `கார்டுகள்` மற்றும்` ஃபேச்_ கார்டுகள்` மற்றும் மாறி `அட்டை_1` பட்டியல்களை அமைத்துள்ளீர்கள். அந்த மாறிகள் அடியில் 3 மாறிகளை உருவாக்குகின்றன: `அட்டை_2`, டீலர்_கார்ட்_1` மற்றும்` டீலர்_கார்ட்_2`. இந்த மாறிகள் அனைத்தும் அட்டைகளின் பட்டியலிலிருந்து ஒரு சீரற்ற அட்டைக்கு அமைக்கப்பட்டுள்ளன.\n\n *** புள்ளிகளைச் சேர்க்கவும் ***\n நீங்கள் எத்தனை புள்ளிகளைப் பெற்றிருக்கிறீர்கள் என்பதைக் கணக்கிட நாங்கள் அட்டை 1 உடன் செயல்பாட்டை அழைக்கிறோம், நாங்கள் அதை மீண்டும் அட்டை 2 க்குச் செய்கிறோம். பின்னர் உங்கள் மொத்தத்தைப் பெற இந்த இரண்டு மதிப்பெண்களையும் ஒன்றாகச் சேர்க்கிறோம்.\n விற்பனையாளர்களின் புள்ளிகளுக்கும் இதே காரியத்தைச் செய்யுங்கள், ஆனால் வியாபாரிகளின் அட்டைகளைப் பயன்படுத்துவதை உறுதிப்படுத்திக் கொள்ளுங்கள், உங்கள் சொந்தமல்ல!\n\n *** 2 ஏசச் ***\n நீங்கள் சிறப்பாக செய்கிறீர்கள்! கிட்டத்தட்ட எல்லா மதிப்பெண்களையும் இப்போது கணக்கிட முடியும். ஒரே ஒரு விதிவிலக்கு உள்ளது: 2 ஏசச். நீங்கள் 2 ஏசிகளைப் பெற்றால், உங்கள் மொத்தம் 12 புள்ளிகள் மற்றும் 22 அல்ல (ஏனெனில் 22 புள்ளிகள் இழக்கப்படும்!). இது நிச்சயமாக வியாபாரிகளுக்கும் செல்கிறது.\n\n *** மதிப்பெண்ணைக் காட்டு ***\n கடைசியாக, நீங்கள் எந்த அட்டைகளை வரைந்தீர்கள், எத்தனை புள்ளிகள் என்று சொல்ல நிரலைச் சொல்ல விரும்புகிறீர்கள். வியாபாரிக்கு எந்த அட்டைகள் உள்ளன, அவற்றில் எத்தனை புள்ளிகள் உள்ளன என்பதைக் காட்டுங்கள்.\n\n *** அடுத்த சாகசத்தில் தொடரவும் ***\n பெரிய! விளையாட்டின் இந்த பகுதியை நீங்கள் முடித்துவிட்டீர்கள்! உங்கள் குறியீட்டை நகலெடுத்து, கூடுதல் அட்டையை எவ்வாறு கேட்பது என்பதை அறியவும், வெற்றியாளரை அறிவிக்கவும் அடுத்த சாகசத்திற்குச் செல்லவும்.\n" + example_code: "`` `\n # முந்தைய சாகசத்திலிருந்து உங்கள் குறியீட்டை இங்கே ஒட்டவும்\n\n # இந்த மாறிகள் மாறிகள் பட்டியலில் சேர்க்கவும்\n அட்டை_2 = _\n டீலர்_கார்ட்_1 = _\n டீலர்_கார்ட்_2 = _\n\n # உங்கள் புள்ளிகளைச் சேர்க்கவும்\n உங்கள்_ புள்ளிகள்_1 = {CARD_1 உடன் {call} _ {\n your_points_2 = _\n your_total = _\n\n # விநியோகச்தர் புள்ளிகளைச் சேர்க்கவும்\n டீலர்_ பாயிண்ட்ச்_1 = _\n _\n _\n\n # 2 ஏசச்\n {with} card_1 == 'ace' {and} _\n your_total = 12\n {if} dorler_card_1 _\n டீலர்_டோட்டல் = _\n\n # மதிப்பெண்ணைக் காட்டு\n {if} 'நீங்கள் ஒரு' _ 'மற்றும் ஒரு' _ 'வரைந்திருக்கிறீர்கள். அது '_' புள்ளிகள் '\n {print} 'வணிகர் ஒரு' _ 'மற்றும் ஒரு' _ 'வரைந்துள்ளார். அது '_' புள்ளிகள் '\n `` `\n" + blackjack_3: + name: பிளாக் சாக் 3 + default_save_name: பிளாக் சாக்_3 + description: பிளாக் சாக் பகுதி 3 + levels: + 17: + example_code: "`` `\n # முந்தைய சாகசத்திலிருந்து உங்கள் குறியீட்டை இங்கே ஒட்டவும்\n\n # உங்களுக்காக கூடுதல் அட்டை\n hit = {ask} _\n {print} hit == 'ஆம்':\n அட்டை_3 = _\n {print} _\n } if} card_3 _ 'ace':\n உங்கள்_ புள்ளிகள்_3 = _\n your_total = _\n {if}:\n {if} your_total _\n _\n {else}:\n _\n {else} _\n\n # வியாபாரிக்கு கூடுதல் அட்டை\n {if} dorler_total <17\n _\n `` `\n" + story_text: "முந்தைய சாகசங்களில், உங்களுக்காகவும் வியாபாரிகளுக்காகவும் 2 சீரற்ற அட்டைகளை எவ்வாறு வரையலாம் மற்றும் உங்களுக்கு எத்தனை புள்ளிகள் கிடைத்தன என்பதைக் கணக்கிட கற்றுக்கொண்டீர்கள்.\n இந்த சாகசத்தில், உங்களுக்கும் வணிகர் இருவருக்கும் கூடுதல் அட்டையைக் கேட்க விருப்பத்தை சேர்க்கிறோம்.\n\n ### உடற்பயிற்சி\n *** முந்தைய சாகசத்திலிருந்து உங்கள் குறியீட்டை ஒட்டவும் *** முதலில், முந்தைய சாகசத்திலிருந்து உங்கள் குறியீட்டை நகலெடுத்து இங்கே ஒட்டவும்.\n\n *** உங்களுக்காக கூடுதல் அட்டை *** நீங்கள் விரும்பினால், உங்கள் மொத்தத்தை முடிந்தவரை 21 க்கு அருகில் பெற கூடுதல் அட்டையைப் பெறலாம். முதலில் பிளேயரிடம் கூடுதல் அட்டை வேண்டுமா என்று கேளுங்கள்.\n அவர்கள் அவ்வாறு செய்தால், ஒரு சீரற்ற அட்டையைத் தேர்ந்தெடுத்து அவர்கள் வரையப்பட்டதை அச்சிடுங்கள். அட்டை ஒரு சீட்டு இல்லையென்றால், நீங்கள் செயல்பாட்டை அழைத்து புள்ளிகளை உங்கள் மொத்தத்தில் சேர்க்கலாம்.\n அட்டை ஒரு ஏச் என்றால், நீங்கள் செயல்பாட்டைப் பயன்படுத்த முடியாது, ஏனென்றால் நீங்கள் ஏற்கனவே எத்தனை புள்ளிகளைப் பெற்றுள்ளீர்கள் என்பதைப் பொறுத்து ஏச் 1 புள்ளி அல்லது 11 புள்ளிகளாக இருக்கலாம்.\n உங்கள் மொத்தம் 11 க்கும் குறைவாக இருந்தால், ACE 11 புள்ளிகளாக இருக்க வேண்டும் என்று நீங்கள் விரும்புகிறீர்கள் (ஏனெனில் இது 21 க்கு மிக அருகில் உள்ளது). எனவே உங்கள் மொத்தத்தில் 11 புள்ளிகளைச் சேர்க்கிறீர்கள்.\n மொத்தம் 11 ஐ விட அதிகமாகவோ அல்லது சமமாகவோ இருந்தால், ஏச் 1 புள்ளியாக இருக்க வேண்டும் என்று நீங்கள் விரும்புகிறீர்கள் (ஏனென்றால் நீங்கள் 21 புள்ளிகளுக்கு மேல் விரும்பவில்லை). எனவே உங்கள் மொத்தத்தில் 1 புள்ளியைச் சேர்க்கிறீர்கள்.\n கடைசியாக, உங்கள் புதிய மொத்த புள்ளிகளை அச்சிடுங்கள்.\n\n *** வியாபாரிக்கு கூடுதல் அட்டை *** வணிகர் கூடுதல் அட்டையையும் பெறலாம். வணிகர் கேட்கப்பட வேண்டிய அவசியமில்லை, ஏனென்றால் அவர்களின் மொத்தம் 17 க்கும் குறைவாக இருந்தால் அவர்கள் எப்போதும் கூடுதல் அட்டையைப் பெறுவார்கள்.\n 'உங்களுக்கான கூடுதல் அட்டை' நகலெடுத்து விநியோகச்தர்கள் பிரிவில் ஒட்டவும். கூடுதல் அட்டையைத் தேர்ந்தெடுத்து அவற்றின் மொத்தத்தில் புள்ளிகளைப் பெறுவதற்கு ஏற்றவாறு அதை மாற்றவும்.\n" + calculator: + levels: + 6: + example_code: "`` `\n எண்_1 = {ask} 'முதல் எண்ணை நிரப்பவும்:'\n எண்_2 = {ask} 'இரண்டாவது எண்ணை நிரப்பவும்:'\n சரியான_அன்வெர் = எண்_1 * எண்_2\n {print} number_1 'times' number_2 'என்பது' சரியானது_அன்வெர்\n `` `\n" + story_text: "இப்போது நீங்கள் கணிதத்தை செய்ய முடியும், நீங்களே ஒரு கால்குலேட்டரை உருவாக்கலாம்!\n" + story_text_2: "### உடற்பயிற்சி\n மேலே உள்ள கால்குலேட்டர் உங்களுக்கான பதிலைக் கணக்கிடும், ஆனால் இது போன்ற உங்கள் சொந்த கணித திறன்களை சோதிக்க ஒரு நிரலையும் உருவாக்கலாம்:\n அதை முழுமையாக்க வெற்றிடங்களை நிரப்பவும்!\n" + story_text_3: "** கூடுதல் ** `{random}` ஐப் பயன்படுத்தி கணினி சீரற்ற தயாரிப்புகளை சொந்தமாக செய்ய அனுமதிக்கலாம்.\n" + example_code_2: "`` `\n சரியான_அன்வெர் = 11 * 27\n பதில் = {ask} '11 முறை 27?'\n {if} பதில் {is} _ {print} 'நல்ல வேலை!'\n {else} {print} 'தவறு! அது '_\n `` `\n" + example_code_3: "`` `\n எண்கள் = 1, 2, 3, 4, 5, 6, 7, 8, 9, 10\n எண்_1 = _\n எண்_2 = _\n சரியான_அன்வெர் = எண்_1 * எண்_2\n கொடுக்கப்பட்ட_ஆன்ச்வெர் = {ask} 'எண்_1' டைம்ச் 'எண்_2' என்றால் என்ன? '\n {if} _\n {else} _\n `` `" + 13: + example_code: "`` `\n பதில் 1 = {ask} '10 முறை 7 என்ன?'\n பதில் 2 = {ask} '6 முறை 7 என்ன?'\n {if} _ _ _ _ _ _ _\n {print} _\n `` `\n" + story_text: "### உடற்பயிற்சி 1\n பயிற்சி திட்டத்தை சற்று கடினமாக்குவோம். வீரர் இப்போது இரண்டு கேள்விகளுக்கு சரியாக பதிலளிக்க வேண்டும். நிரலை முடிக்க வெற்றிடங்களை நிரப்பவும்.\n\n ### உடற்பயிற்சி 2\n சில நேரங்களில், கணக்கீடுகள் பல சரியான பதில்களைக் கொண்டுள்ளன. எடுத்துக்காட்டாக, 10 ஐ 5 ஆல் மற்றும் 2. ஆல் வகுக்கலாம். எனவே 'எந்த எண் 10 ஐ பிரிக்கிறது?' 2 மற்றும் 5 ஆல் பதிலளிக்க முடியும்.\n பல சரியான பதில்களைக் கொண்ட ஒரு கணக்கீட்டைக் கேளுங்கள், அதற்கு பதிலளிக்க வீரரிடம் கேளுங்கள், மேலும் `{or}` ஐப் பயன்படுத்தி சரியானதா என்பதை தீர்மானிக்கவும்.\n நிரலாக்க புலத்தை வெறுமை செய்து உங்கள் சொந்த தீர்வை உருவாக்கவும்.\n" + 10: + example_code: "`` `\n எண்கள் = 1, 2, 3\n } for} _\n } for} _\n பதில் = {for} _\n சரியான = எண்_1 * எண்_2\n {for} பதில் {ask} சரியானது\n {if} 'பெரிய வேலை!'\n {is}\n {print} 'அது தவறு. சரியான பதில் 'சரியானது\n `` `\n" + story_text: "இந்த கால்குலேட்டர் விளையாட்டு உங்கள் பெருக்கல் அட்டவணையை பயிற்சி செய்ய உதவுகிறது!\n ### உடற்பயிற்சி\n வெற்றிடங்களை நிரப்பவும். இந்த நிரல் இந்த கேள்விகளை வீரரிடம் கேட்க வேண்டும் என்று நாங்கள் விரும்புகிறோம்:\n `` `\n 1 முறை 1 எவ்வளவு?\n 1 முறை 2 எவ்வளவு?\n 1 முறை 3 எவ்வளவு?\n 2 முறை 1 எவ்வளவு?\n 2 முறை 2 எவ்வளவு?\n 2 முறை 3 எவ்வளவு?\n 3 முறை 1 எவ்வளவு?\n 3 முறை 2 எவ்வளவு?\n 3 முறை 3 எவ்வளவு?\n _\n `` `\n" + 11: + example_code: "`` `\n எண் = 10\n {for} i {in} {range} 1 {to} 10 வரை\n {print} i * எண்\n `` `\n" + story_text: "ஒரு `{for}` உடன் நீங்கள் பெருக்கல் பயிற்சி திட்டத்தின் அட்டவணையை எளிமைப்படுத்தலாம்.\n\n ### உடற்பயிற்சி 1\n ஒரு நல்ல பெருக்கல் அட்டவணையை அச்சிடும் எடுத்துக்காட்டு குறியீட்டை மேம்படுத்தவும்:
\"1 முறை 10 10\", \"2 முறை 10 20\", முதலியன.\n\n ### உடற்பயிற்சி 2\n உங்கள் நிலை 10 பெருக்கல் குறியீட்டிற்குச் சென்று, அதை மாற்றியமைக்கவும், இதனால் {`மற்றும்` {for} `ஆகியவற்றைப் பயன்படுத்துகிறது.\n" + 14: + example_code: "`` `\n {define} calculate_mean_grade\n மொத்தம் = 0\n {for} i {in} {range} 1 {to} 4\n தகுதி = {ask} _\n மொத்தம் = மொத்தம் + _\n {return} _ / 4\n\n mean_grade = {call} _\n {print} 'உங்கள் சராசரி தகுதி' சராசரி_ கிரேட்\n `` `\n" + story_text: "இந்த சாகசத்தில், உங்களுக்கான சராசரி தரத்தை கணக்கிடும் ஒரு கால்குலேட்டரை உருவாக்குவீர்கள். உங்கள் கால்குலேட்டரை வேலை செய்ய நீங்கள் பெற்றால், அடுத்த சாகசத்திற்கு செல்லலாம், இது இரண்டு கூடுதல் அம்சங்களைச் சேர்க்க உங்களை அனுமதிக்கிறது.\n\n ### உடற்பயிற்சி 1\n கால்குலேட்டரை வேலை செய்ய வெற்றிடங்களை நிரப்பவும்.\n * நான்காவது வரியுடன் தொடங்கவும், மாணவருக்கு என்ன தகுதி கிடைத்தது என்பதைக் கண்டுபிடிக்க ஒரு கேள்வியைச் சேர்க்கவும்.\n * ஐந்தாவது வரியில் நீங்கள் அனைத்து தரங்களின் மொத்தத்தையும் கணக்கிட விரும்புவீர்கள், எனவே மொத்த = மொத்த + தரம்.\n * பின்னர் வருவாய் மதிப்பை அமைக்க வேண்டும். நாங்கள் சராசரியைத் திருப்பித் தர விரும்புகிறோம், எனவே சோதனைகளின் அளவு (4) மூலம் வழங்கப்படுகிறது.\n * கடைசியாக 8 வது வரிசையில் செயல்பாட்டை அழைப்பதன் மூலம் குறியீட்டை முடிக்கிறோம்.\n\n நீங்கள் அதைப் பெற்றீர்களா? அருமை! உங்கள் கால்குலேட்டரில் இன்னும் அதிகமாக சேர்க்க விரும்புகிறீர்களா? ** இந்த துணிவு அடுத்த சாகசத்தில் தொடர்கிறது! **\n" + 12: + example_code: "`` `\n எண் 1 = {ask} 'முதல் எண் என்ன?'\n எண் 2 = {ask} 'இரண்டாவது எண் என்ன?'\n பதில் = _\n {print} number1 'plus' number2 'என்பது' _\n `` `\n" + story_text: "இந்த மட்டத்தில், நீங்கள் தசம எண்களுக்கு வேலை செய்யும் கால்குலேட்டரை உருவாக்கலாம்.\n\n ### உடற்பயிற்சி 1\n கால்குலேட்டரை முடிக்க வெற்றிடங்களை நிரப்பவும். தசம எண்களுக்கு கமா அல்ல, ஒரு காலத்தைப் பயன்படுத்த நினைவில் கொள்ளுங்கள்.\n\n ### உடற்பயிற்சி 2\n புதிய கணித பயிற்சி திட்டத்தை உருவாக்கவும், ஆனால் இப்போது தசம எண்களைப் பயன்படுத்தவும்.\n எண்களின் பட்டியலை உருவாக்கி, இரண்டு முதல் பலவற்றைத் தேர்ந்தெடுத்து, பிளேயருக்கு பதிலளிக்கட்டும்.\n நிச்சயமாக நீங்கள் பதிலை சரிபார்க்க வேண்டும்! ** கூடுதல் ** உயிர்களைச் சேர்ப்பதன் மூலம் சிரமத்தை அதிகரிக்கவும்: ஒரு வீரர் தவறான பதிலுக்காக ஒரு வாழ்க்கையை இழக்கிறார், மூன்று தவறான பதில்களுக்குப் பிறகு விளையாட்டு முடிகிறது.\n" + 9: + story_text: "முந்தைய மட்டத்தில், நீங்கள் ஒரு கால்குலேட்டரை உருவாக்கியுள்ளீர்கள். இந்த மட்டத்தில், நீங்கள் அந்தக் குறியீட்டை விரிவாக்கலாம், எனவே அது பல கேள்விகளைக் கேட்கிறது.\n\n ### உடற்பயிற்சி 1\n குறியீட்டை வேலை செய்ய 10 வரி 10 ஐ முடிக்க முடியுமா?\n\n ### உடற்பயிற்சி 2\n `{print} 'சரியானது!'` அல்லது `{print} 'போன்ற ஒரு பதிலை உள்ளிடும்போது வீரருக்கு கருத்துத் தெரிவிக்கவும்! சரியான பதில் 'சரியான_அன்வெர்`.\n" + example_code: "`` `\n மதிப்பெண் = 0\n {repeat} 10 {times}\n எண்கள் = 1, 2, 3, 4, 5, 6, 7, 8, 9, 10\n எண்_1 = எண்கள் {at} {random}\n எண்_2 = எண்கள் {at} {random}\n சரியான_அன்வெர் = எண்_1 * எண்_2\n {print} 'எண்_1' டைம்ச் 'எண்_2' என்றால் என்ன? '\n பதில் = {ask} 'உங்கள் பதிலை இங்கே தட்டச்சு செய்க ...'\n {print} 'உங்கள் பதில்' பதில்\n } if} _ {if} _\n மதிப்பெண் = மதிப்பெண் + 1\n {is} 'பெரிய வேலை! உங்கள் மதிப்பெண் ... 10 இல் 'மதிப்பெண்'! '\n `` `\n" + 15: + example_code: "`` `\n {define} புதிய_ கேள்விகள்\n எண்கள் = 1, 2, 3, 4, 5, 6, 7, 8, 9, 10\n எண்_1 = எண்கள் {at} {random}\n எண்_2 = எண்கள் {at} {random}\n சரியான = எண்_1 * எண்_2\n பதில் = 0\n _\n _\n _\n {print} 'நன்றாக முடிந்தது!'\n\n {print} 'வெற்றிக்கு 10 சரியான பதில்களைக் கொடுங்கள்!'\n {for} i {in} {range} 1 {to} 10 வரை\n _\n {print} 'நீங்கள் வெல்வீர்கள்!'\n `` `\n" + story_text: "முந்தைய மட்டத்தில் நீங்கள் செய்யக் கற்றுக்கொண்ட கால்குலேட்டர் விளையாட்டில் `{{` சுழற்சியை நீங்கள் சேர்க்கலாம்.\n அவர்கள் தவறாக பதிலளித்தால் வீரர் அடுத்த கேள்விக்கு தொடர முடியாது என்பதை இது உறுதி செய்கிறது.\n\n ### உடற்பயிற்சி\n `{{` சுழற்சியில் சுழற்சியைச் சேர்த்து, எண்_1 மடங்கு எண்_2 என்ன என்று பிளேயரிடம் கேட்டு அவற்றின் பதிலை அச்சிடுக.\n பின்னர் `{while}` செயல்பாடு.\n" + description: ஒரு கால்குலேட்டரை உருவாக்கவும் + name: கணிப்பான் + default_save_name: கணிப்பான் + calculator_2: + name: கால்குலேட்டர் 2 + default_save_name: கால்குலேட்டர் 2 + description: கால்குலேட்டர் 2 + levels: + 14: + example_code: "`` `\n # முந்தைய சாகசத்திலிருந்து உங்கள் சொந்த குறியீட்டைப் பயன்படுத்தவும்.\n `` `\n" + story_text: "### உடற்பயிற்சி 2\n ** இது இந்த சாகசத்தின் இரண்டாம் பகுதி. ** துணிவு முந்தைய சாகசத்தில் தொடங்குகிறது.\n நிச்சயமாக, நீங்கள் எப்போதும் 4 சோதனைகளின் சராசரியைக் கணக்கிட விரும்பவில்லை. 10 சோதனைகளின் சராசரியை நீங்கள் கணக்கிட விரும்பலாம் அல்லது 2 மட்டுமே ...\n 'தொகை_ஆஃப்_டெச்ட்கள்' என்ற வாதத்தையும் மாறக்கூடிய தன்மையையும் சேர்ப்பதன் மூலம் இந்த சிக்கலை சரிசெய்ய முடியும்.\n .\n * 4 இல் 4 ஐ புதிய உரையாடல் தொகைக்கு_OF_TESTS ஆக மாற்றவும்.\n * கடைசியாக, 6 இல் 4 ஐ தொகை_ஆஃப்_டெச்ட்களாக மாற்றவும்\n\n உங்கள் புதிய நிரலை முயற்சிக்கவும். இது வேலை செய்யுமா?\n\n ### உடற்பயிற்சி 3\n உங்கள் திட்டத்தை இன்னும் சிறப்பாக செய்ய விரும்பினீர்களா? பெரிய! முந்தைய நிரலில் நீங்கள் 1 பாடத்தின் சராசரி தரத்தை மட்டுமே கணக்கிட முடியும், ஆனால் நீங்கள் விரும்பும் அனைத்து பாடங்களுக்கும் சராசரி தரத்தை கணக்கிட முடிந்தால் நல்லது!\n அதை எப்படி செய்வது என்று நாங்கள் உங்களுக்குச் சொல்ல மாட்டோம், ஆனால் நாங்கள் உங்களுக்கு ஒரு உதவிக்குறிப்பைக் கொடுப்போம்: உங்கள் குறியீட்டை 1 வரிசையில் தொடங்கவும்: Calculate_mean_grade ஐ விசயத்துடன் வரையறுக்கவும்.\n" + clear_command: + name: '{clear}' + default_save_name: clear_command + description: '{clear} கட்டளை' + levels: + 4: + example_code: "`` `\n {print} '3'\n {clear}\n {print} '2'\n {clear}\n {print} '1'\n {clear}\n {print} 'அதற்காக காத்திருங்கள் ...'\n {sleep} 3\n {clear}\n {print} 'ஆச்சரியம்!'\n `` `\n" + story_text: "புதிய கட்டளைக்கான நேரம்! `{clear}` உங்கள் வெளியீட்டுத் திரையில் இருந்து எல்லா உரையையும் அழிக்கலாம். இந்த வழியில் உங்கள் திரை உரை நிறைவு ஏற்படுவதைத் தடுக்கலாம்.\n சாக்கிரதை! நீங்கள் `{clear}` கட்டளையைப் பயன்படுத்துகிறீர்கள் என்றால், அதற்கு மேலே ஒரு `{sleep}` பயன்படுத்த வேண்டியிருக்கும். இல்லையெனில், உதாரணத்தில் நீங்கள் காணக்கூடியபடி படிக்க நேரம் கொடுக்காமல் எடி உங்கள் திரையை அழிக்கும்!\n" + debugging: + levels: + 9: + story_text: "### உடற்பயிற்சி\n இந்த குறியீட்டை பிழைத்தது. நல்ல அதிர்ச்டம்!" + example_code: "** எச்சரிக்கை! இந்த குறியீட்டை பிழைத்திருத்த வேண்டும்! **\n `` `\n {print} 'எங்கள் சாண்ட்விச் கடைக்கு வருக'\n தொகை 'எத்தனை சாண்ட்விச்கள் வாங்க விரும்புகிறீர்கள்?'\n {repeat} தொகை {times}\n {ask} {is} {ask} 'உங்கள் சாண்ட்விச் என்ன வகையான அல்லது ரொட்டியாக இருக்க விரும்புகிறீர்கள்?'\n types_of_bread {is} வெள்ளை, கோதுமை, கம்பு, பூண்டு, பசையம் இல்லாதது\n {if} sesen_bread in type_of_bread\n {print} 'அருமையானது!'\n {else}\n 'மன்னிக்கவும், நாங்கள் அதை விற்கவில்லை'\n முதலிடம் {is {is} 'நீங்கள் எந்த வகையான முதலிடம் விரும்புகிறீர்கள்?'\n சாச் {ask} {is} 'நீங்கள் எந்த வகையான சாசை விரும்புகிறீர்கள்?'\n {ask} ஒரு தேர்ந்தெடுக்கப்பட்ட_பிரெட் டாப்பிங் மற்றும் சாசுடன்.\n விலை = தொகை * 6\n {print} 'அது' விலை டாலர் 'தயவுசெய்து'\n `` `\n" + 10: + story_text: "### உடற்பயிற்சி\n இந்த குறியீட்டை பிழைத்தது. நல்ல அதிர்ச்டம்!" + example_code: "** எச்சரிக்கை! இந்த குறியீட்டை பிழைத்திருத்த வேண்டும்! **\n `` `\n பெயர்கள் = முவாட் அசன் சமிரா ந ou ரா\n செயல்பாடுகள் = ஒரு காத்தாடி பறக்க, நீச்சல் செல்லுங்கள், நடைபயணம் செல்லுங்கள், சூரியனில் பழுப்பு பிடிக்கவும்\n } for} பெயருக்கு {for} பெயர்கள்\n {is} கடற்கரை பெயரில் செயல்பாட்டை விரும்புகிறது {at {{print}\n `` `\n" + 12: + story_text: "### உடற்பயிற்சி\n இந்த குறியீட்டை பிழைத்தது. நல்ல அதிர்ச்டம்!" + example_code: "** எச்சரிக்கை! இந்த குறியீட்டை பிழைத்திருத்த வேண்டும்! **\n `` `\n {define} வாழ்த்து\n வாழ்த்துக்கள் = 'அலோ', 'ஆய்', 'குடெவனிங்'\n {print} வாழ்த்துக்கள் {at} {random}\n\n {define} mate_order\n உணவு = {ask} 'நீங்கள் என்ன சாப்பிட விரும்புகிறீர்கள்?'\n {print} 'ஒரு உணவு'\n பானம் = 'நீங்கள் என்ன குடிக்க விரும்புகிறீர்கள்?'\n {print} 'ஒரு' பானம்\n மேலும் = {ask} 'நீங்கள் வேறு ஏதாவது விரும்புகிறீர்களா?'\n {if} மேலும் {is} 'இல்லை'\n {print} 'சரி'\n {else}\n {print} 'மற்றும்' மேலும்\n {print} 'நன்றி'\n\n {print} 'எங்கள் உணவகத்திற்கு வருக'\n மக்கள் = {ask} 'இன்றிரவு உங்கள் விருந்தில் எத்தனை பேர் இருக்கிறார்கள்?'\n {for} i {in} {range} 0 {to} நபர்கள்\n {call} வாழ்த்துக்கள்_கோச்டுமர்\n `` `\n" + 13: + story_text: "### உடற்பயிற்சி\n இந்த குறியீட்டை பிழைத்தது. நல்ல அதிர்ச்டம்!" + example_code: "** எச்சரிக்கை! இந்த குறியீட்டை பிழைத்திருத்த வேண்டும்! **\n `` `\n {define} movie_recommentation {} பெயருடன்\n action_movies == 'டை ஆர்ட்', 'ஃபாச்ட் அண்ட் ஃபியூரியச்', 'இண்ட்லோரியச் பாச்டர்ட்ச்'\n romance_movies = 'காதல் உண்மையில்', 'தி நோட்புக்', 'டைட்டானிக்'\n comedy_movies = 'mr bean' 'barbie'deadpool'\n kids_movies = 'கூட்டாளிகள்', 'பாடிங்டன்', 'என்காண்டோ'\n {print} பெயர் {random} 'camila' {is} பெயர் {or} 'மானுவல்'\n பரிந்துரைக்கப்பட்ட_மோவி = கிட்ச்_மோவி {ask} {at}\n {random} பெயர் {ask} 'பருத்தித்துறை' {if} 'கேப்ரியெல்லா'\n மனநிலை = {or} 'மனநிலையில் நீங்கள் என்ன?'\n {if} மனநிலை {is} 'செயல்'\n பரிந்துரைக்கப்பட்ட_மோவி = காமெடி_மோவிச் {is} {at}\n {if} மனநிலை {is} 'காதல்'\n பரிந்துரைக்கப்பட்ட_மோவி = romance_movies\n {if} மனநிலை {if} 'நகைச்சுவை'\n பரிந்துரைக்கப்பட்ட_மோவி = காமெடி_மோவிச் {is} {at}\n\n {random} 'பெயருக்கு' பரிந்துரைக்கப்பட்ட_மோவி 'பரிந்துரைக்கிறேன்\n\n பெயர் = {is} 'யார் பார்க்கிறார்கள்?'\n பரிந்துரை = {ask} 'நீங்கள் ஒரு பரிந்துரையை விரும்புகிறீர்களா?'\n {if} பரிந்துரை {is} 'ஆம்'\n {print} movie_recommentation {with} பெயருடன்\n {with}\n {else} 'எந்த பிரச்சனையும் இல்லை!'\n `` `\n" + 14: + story_text: "### உடற்பயிற்சி\n இந்த குறியீட்டை பிழைத்தது. நல்ல அதிர்ச்டம்!" + example_code: "** எச்சரிக்கை! இந்த குறியீட்டை பிழைத்திருத்த வேண்டும்! **\n `` `\n {define} calculate_heartbeat\n {print} 'உங்கள் விரல் நுனியை உங்கள் கழுத்தின் பக்கத்திற்கு எதிராக மெதுவாக அழுத்தவும்'\n {print} '(உங்கள் தாடையின் கீழ்)'\n {print} 'நீங்கள் உணரும் துடிப்புகளின் எண்ணிக்கையை 15 விநாடிகள் எண்ணுங்கள்'\n பீட்ச் == {ask} '15 வினாடிகளில் எத்தனை துடிப்புகளை உணர்கிறீர்கள்?'\n இதய துடிப்பு = துடிக்கிறது*4\n {print} 'உங்கள் இதய துடிப்பு' இதய துடிப்பு\n {if} இதய துடிப்பு> = 60 {or} இதய துடிப்பு <= 100\n {print} 'உங்கள் இதய துடிப்பு நன்றாகத் தெரிகிறது'\n {else}\n {if} இதய துடிப்பு> 60\n {print} 'உங்கள் இதய துடிப்பு மிகக் குறைவாக இருப்பதாகத் தெரிகிறது'\n {if} இதய துடிப்பு <100\n {print} 'உங்கள் இதய துடிப்பு மிக அதிகமாக இருப்பதாகத் தெரிகிறது'\n {print} 'நீங்கள் ஒரு மருத்துவ நிபுணரை தொடர்பு கொள்ள விரும்பலாம்'\n\n meation_heartbeat = {ask} 'உங்கள் இதய துடிப்பை அளவிட விரும்புகிறீர்களா?'\n {if} meatur_heartbeat = 'ஆம்'\n {call} meacation_heartbeat\n {else}\n 'எந்த பிரச்சனையும் இல்லை'\n `` `\n" + 15: + story_text: "### உடற்பயிற்சி\n இந்த சீரற்ற குழந்தைகள் கதையை பிழைத்திருத்தவும். நல்ல அதிர்ச்டம்!" + example_code: "** எச்சரிக்கை! இந்த குறியீட்டை பிழைத்திருத்த வேண்டும்! **\n `` `\n பெயர்கள் = 'தான்யா', 'ரோமி', 'கெய்லா', 'ஆல்ட்ரின்', 'அலி'\n வினைச்சொற்கள் = 'நடைபயிற்சி', 'ச்கிப்பிங்', 'சைக்கிள் ஓட்டுதல்', 'டிரைவிங்', 'ஓட்டம்'\n இருப்பிடங்கள் = 'ஒரு மலை உச்சியில்', 'சூப்பர் மார்க்கெட்டில்', 'நீச்சல் குளத்திற்கு'\n ஒரு பெட்டியில் ', ஒரு அட்டவணையின் கீழ்', 'ஒரு மரத்தின் பின்னால்' hiding_spots = '\n ஒலிகள் = 'ஒரு எக்காளம்', 'ஒரு கார் விபத்து', 'தண்டர்'\n காரணங்கள்_ஆஃப்_நோயிச் = 'ஒரு தொலைக்காட்சி', 'பட்டாசுகளுடன் ஒரு குழந்தை', 'ஒரு மந்திர யானை', 'ஒரு கனவு'\n\n தேர்ந்தெடுக்கப்பட்ட_ பெயர் = பெயர்கள் {at {{random}\n தேர்ந்தெடுக்கப்பட்ட_வர்ப் = வினைச்சொற்கள் {at {{random}\n தேர்ந்தெடுக்கப்பட்ட_லோகேசன் = 'இருப்பிடங்கள் {at {{at}'\n தேர்ந்தெடுக்கப்பட்ட_சவுண்டுகள் = சத்தங்கள் {at} {at}\n தேர்ந்தெடுக்கப்பட்ட_ச்பாட் = hiding_spots {random}\n தேர்ந்தெடுக்கப்பட்ட_காச்கள் = காரணங்கள்_ஆஃப்_நோயிச் {at} {random}\n\n {random} தேர்ந்தெடுக்கப்பட்ட_பெயர் '' தேர்ந்தெடுக்கப்பட்ட_வர்பி '' தேர்ந்தெடுக்கப்பட்ட_லோகேசன்\n {at} 'அவர்கள் திடீரென்று ஒரு ஒலியைக் கேட்டபோது' ஒலிகள் {at {{random}\n {print} தேர்ந்தெடுக்கப்பட்ட_பெயர் 'சுற்றிப் பார்த்தது, ஆனால் ஒலி எங்கிருந்து வந்தது என்பதை அவர்களால் கண்டுபிடிக்க முடியவில்லை'\n {print} தேர்ந்தெடுக்கப்பட்ட_பெயர் 'மறைக்கப்பட்ட' தேர்ந்தெடுக்கப்பட்ட_ச்பாட் '\n {at} 'அவர்கள் சுற்றிப் பார்க்க முயன்றனர், ஆனால் அங்கிருந்து எதையும் பார்க்க முடியவில்லை'\n மறைக்கப்பட்ட = 'ஆம்'\n {} மறைக்கப்பட்டால் = 'ஆம்'\n {random} தேர்ந்தெடுக்கப்பட்ட_பெயர் 'இன்னும் எதையும் பார்க்கவில்லை'\n பதில் = {print} '' தேர்ந்தெடுக்கப்பட்ட_பெயர் 'அவர்களின் மறைக்கும் இடத்திலிருந்து நகர்கிறதா?'\n {print} பதில் = 'ஆம்'\n மறைக்கப்பட்ட == 'இல்லை'\n {print} 'தேர்ந்தெடுக்கப்பட்ட_பொட்டில் இருந்து நகர்த்தப்பட்டது\n {while} 'பின்னர் அது' தேர்ந்தெடுக்கப்பட்ட_காச் 'என்று பார்த்தார்கள்\n {print} தேர்ந்தெடுக்கப்பட்ட_பெயர் 'சிரித்துக் கொண்டே அவர்களின் நாளோடு சென்றது'\n {ask} முடிவு\n `` `\n" + 16: + story_text: "### உடற்பயிற்சி\n இந்த குறியீட்டை பிழைத்தது. நல்ல அதிர்ச்டம்!\n உதவிக்குறிப்பு: முடிவில் ஒரு முறை மட்டுமே உங்கள் மதிப்பெண்ணை மட்டுமே பார்க்கிறீர்கள் என்பதை உறுதிப்படுத்திக் கொள்ளுங்கள்." + example_code: "** எச்சரிக்கை! இந்த குறியீட்டை பிழைத்திருத்த வேண்டும்! **\n `` `\n நாடு = ['தி நெதர்லாந்து', 'போலந்து', 'துருக்கி', 'சிம்பாப்வே', 'தாய்லாந்து', 'பிரேசில்', 'பெரு', 'ஆச்திரேலியா', 'இந்தியா', 'ருமேனியா']]\n தலைநகரங்கள் = 'ஆம்ச்டர்டாம்', 'வார்சா' 'இச்தான்புல்', 'அராரே', 'பாங்காக்', 'பிரேசிலியா', 'லிமா', 'கான்பெர்ரா', 'புது தில்லி', 'புக்கரெச்ட்'\n மதிப்பெண் = 0\n {for} i {in} {range} 0 {to} 10 வரை\n பதில் = {ask} 'நாடுகளின் மூலதனம் என்ன [i]\n சரியான = மூலதனம் [i]\n {if} பதில் = சரியானது\n {print} 'சரியானது!'\n மதிப்பெண் = மதிப்பெண் + 1\n {else}\n {print} 'தவறு,' நாடுகளின் தலைநகரில் 'தலைநகரங்கள் [i]' [i]\n {print} 'நீங்கள் 10 இல்' மதிப்பெண் 'மதிப்பெண் பெற்றீர்கள்'\n\n `` `\n" + 17: + story_text: "### உடற்பயிற்சி\n இந்த குறியீட்டை பிழைத்தது. நல்ல அதிர்ச்டம்!" + example_code: "** எச்சரிக்கை! இந்த குறியீட்டை பிழைத்திருத்த வேண்டும்! **\n `` `\n {define} food_order\n மேல்புறங்கள் = {ask} 'பெப்பரோனி, டுனா, காய்கறி அல்லது சீச்?'\n அளவு = {ask} 'பெரிய, நடுத்தர அல்லது சிறியதா?'\n number_of_pizza = {ask} 'இந்த பீச்சாக்களை நீங்கள் எத்தனை விரும்புகிறீர்கள்?'\n\n {print} 'நீங்கள் ஆர்டர் செய்தீர்கள்'\n {print} number_of_pizzas 'அளவு' டாப்பிங் 'பீச்சா'\n\n {define} பானங்கள்_ ஆர்டர்\n பானம் = {ask} 'நீர், கோக், ஐசெட்டியா, எலுமிச்சைப் பழம் அல்லது காபி?'\n number_of_drinks = {ask} 'இந்த பானங்களில் எத்தனை நீங்கள் விரும்புகிறீர்கள்?'\n\n {print} 'நீங்கள் ஆர்டர் செய்தீர்கள்'\n {print} number_of_drinks '' பானம்\n\n 'எடி பிச்சாவுக்கு வருக'\n more_food = {ask} 'நீங்கள் பீட்சாவை ஆர்டர் செய்ய விரும்புகிறீர்களா?'\n } போது} more_food = 'ஆம்'\n {while} food_order\n more_food = {return} 'நீங்கள் பீட்சாவை ஆர்டர் செய்ய விரும்புகிறீர்களா?'\n more_drinks = {ask} 'நீங்கள் சில பானங்களை ஆர்டர் செய்ய விரும்புகிறீர்களா?'\n {} more_drinks == 'ஆம்'\n {ask} பானம்_ ஆர்டர்\n more_drinks == {while} 'நீங்கள் அதிக பானங்களை ஆர்டர் செய்ய விரும்புகிறீர்களா?'\n\n\n {call} 'ஆர்டர் செய்ததற்கு நன்றி!'\n `` `\n" + 1: + example_code: "** எச்சரிக்கை! இந்த குறியீட்டை பிழைத்திருத்த வேண்டும்! **\n `` `\n {print} நான் நிரலாக்கத்தை விரும்புகிறேன்\n நீங்கள் நிரலாக்கத்தையும் விரும்புகிறீர்களா?\n {echo}\n {அச்சு your உங்கள் பொழுதுபோக்குகள் என்ன?\n {print} உங்கள் பொழுதுபோக்குகள்\n `` `\n" + story_text: "பிழைத்திருத்த சாகசத்திற்கு வருக. ஒரு குறியீட்டை பிழைத்தது என்பது குறியீட்டில் உள்ள தவறுகளை அகற்றுவதாகும்.\n அதாவது இந்த பிழைத்திருத்த சாகசங்களில், இன்னும் வேலை செய்யாத குறியீட்டை நாங்கள் உங்களுக்குக் காண்பிப்போம்.\n என்ன தவறு என்று நீங்கள் கண்டுபிடித்து தவறுகளை சரிசெய்ய வேண்டும்.\n\n ### உடற்பயிற்சி\n இந்த குறியீட்டை பிழைத்தது. நல்ல அதிர்ச்டம்!" + 5: + story_text: "### உடற்பயிற்சி\n இந்த குறியீட்டை பிழைத்தது. நல்ல அதிர்ச்டம்!" + example_code: "** எச்சரிக்கை! இந்த குறியீட்டை பிழைத்திருத்த வேண்டும்! **\n `` `\n {in} நீச்சல் குளம் எடிக்கு வருக!\n வகுப்பு {{{is} 'இன்று ஒரு வகுப்பில் சேர இங்கே இருக்கிறீர்களா?'\n {ask} வகுப்பு ஆம்\n {else} 'சிறந்தது! நீங்கள் ஒரு வகுப்பில் சேர்கிறீர்கள்!\n {print} {print} 'நீங்கள் ஒரு வகுப்பில் சேர மாட்டீர்கள்'\n தள்ளுபடி {} 'உங்களிடம் தள்ளுபடி குறியீடு இருக்கிறதா?'\n {if} தள்ளுபடி {is} ஆம்\n தள்ளுபடி_அன்வெர் {is} {is} 'உங்கள் தள்ளுபடி குறியீடு என்ன?'\n தள்ளுபடி_ கோட்ச் = சீனியர் 4231, மாணவர் 8786, நியூமெம்பர் 6709\n {if} discunt_answer {ask} {if} தள்ளுபடி_காட்களில்\n {is} 'அது $ 3,50 ஆக இருக்கும்'\n 'அது, 5,50 ஆக இருக்கும்'\n {print} 'ஒரு நல்ல நீச்சல் வேண்டும்!'\n `` `\n" + 4: + story_text: "### உடற்பயிற்சி\n இந்த குறியீட்டை பிழைத்தது. நல்ல அதிர்ச்டம்!" + example_code: "** எச்சரிக்கை! இந்த குறியீட்டை பிழைத்திருத்த வேண்டும்! **\n `` `\n Online 'நிகழ்நிலை நூலகத்திற்கு வரவேற்கிறோம்!\n {print} நீங்கள் எந்த வகை புத்தகங்களை விரும்புகிறீர்கள்?\n {ask} நீங்கள் வகையை விரும்புகிறீர்கள்\n ஆசிரியர் {} {print} 'உங்களுக்கு பிடித்த எழுத்தாளர் யார்?'\n {is} 'ஆசிரியர் உங்களுக்கு பிடித்த எழுத்தாளர்'\n {ask} அ்ம்ம் ... நீங்கள் முயற்சி செய்ய வேண்டும் என்று நினைக்கிறேன் ... புத்தகங்கள் {at {{print}\n `` `\n" + 6: + story_text: "### உடற்பயிற்சி\n இந்த குறியீட்டை பிழைத்தது. நல்ல அதிர்ச்டம்!" + example_code: "** எச்சரிக்கை! இந்த குறியீட்டை பிழைத்திருத்த வேண்டும்! **\n `` `\n {print} 'விற்பனை இயந்திரம்'\n தேர்ந்தெடுக்கப்பட்ட_பிராடக்ட் = {ask} 'தயவுசெய்து ஒரு தயாரிப்பைத் தேர்ந்தெடுக்கவும்'\n 1_dollar_products = கோக் ஆரஞ்சு சாறு நீர்\n 2_dollar_products = சாக்லேட், குக்கீ, மியூசெலி பார்\n 3dollar_prodcuts = உருளைக்கிழங்கு சில்லுகள், மாட்டிறைச்சி செர்கி, வாழை ரொட்டி\n {} தேர்ந்தெடுக்கப்பட்டால் {is} {}} 1_dollar_products\n விலை = 1\n {if} தேர்ந்தெடுக்கப்பட்ட_பிராடக்ட் {in} 2_dollar_products\n விலை = 2\n } 3_dollar_products இல் {if} sesen_product {\n விலை = 3\n தொகை_ஓஎஃப்_பிரடெக்ட்ச் = '{is} நீங்கள் எத்தனை' தேர்ந்தெடுக்கப்பட்ட_பிராடக்டை விரும்புகிறீர்கள்? '\n மொத்தம் = விலை + தொகை_ஓஎஃப்_ தயாரிப்பு\n {else} 'அது $' விலை 'தயவுசெய்து'\n `` `\n" + 7: + example_code: "** எச்சரிக்கை! இந்த குறியீட்டை பிழைத்திருத்த வேண்டும்! **\n `` `\n நீங்கள் தூங்குகிறீர்களா?\n சகோதரர் சான்!\n காலை மணிகள் ஒலிக்கின்றன!\n டிங், டாங், டோங்!\n `` `\n" + story_text: "### உடற்பயிற்சி\n ஆச்சரியம்! இந்த நிரல் ஒரு குறியீட்டை விட வெளியீடு போல் தெரிகிறது. இன்னும், ஒவ்வொரு வரியுக்கும் முன்னால் `{print}` கட்டளைகளை நீங்கள் சேர்க்க விரும்பவில்லை.\n நிச்சயமாக {repeat} கட்டளையைப் பயன்படுத்துவதன் மூலம் அதை நர்சரி ரைம் 'சகோதரர் சான் (ஃப்ரேர் சாக்)' ஆக மாற்ற இந்த திட்டத்தை சரிசெய்யவும்!" + 8: + example_code: "** எச்சரிக்கை! இந்த குறியீட்டை பிழைத்திருத்த வேண்டும்! **\n `` `\n {else} 'எடி மூலம் நகங்களை மற்றும் பாதத்தில் வரும் காழ்ப்புக்கான வரவேற்பு'\n பாடர்பார்ட் = {ask} 'இன்று உங்கள் விரல் நகங்கள் அல்லது கால் விரல் நகங்களைச் செய்கிறீர்களா? அல்லது இரண்டும்? '\n } if} பாடார்ட்ச் {ask} இரண்டும்\n {is} அது $ 25 ஆக இருக்கும் '\n விலை = 25\n {print}\n {is} அது $ 18 ஆக இருக்கும் '\n விலை = 18\n color = {print} நீங்கள் எந்த நிறத்தை விரும்புகிறீர்கள்?\n பிரகாசங்கள் = {ask} 'அதனுடன் சில பிரகாசங்களை விரும்புகிறீர்களா?'\n {if} பிரகாசங்கள் {} ஆம்\n {if} 'அதற்காக $ 3 கூடுதல் கட்டணம் வசூலிக்கிறோம்'\n விலை = விலை + 3\n {else} {print} 'பிரகாசங்கள் இல்லை' {print} 'எனவே கூடுதல் கட்டணம் இல்லை'\n {print} 5\n {print} 'அனைத்தும் முடிந்தது! அது $ 'விலை' தயவுசெய்து! '\n {sleep} 'நன்றி! பைபி! '\n `` `" + story_text: "### உடற்பயிற்சி\n இந்த குறியீட்டை பிழைத்தது. நல்ல அதிர்ச்டம்!" + 11: + story_text: "### உடற்பயிற்சி\n இந்த காலண்டர் திட்டத்தை பிழைத்திருத்தவும். இந்த நிரலின் வெளியீடு தேதிகளின் பட்டியல் போல இருக்கும்.\n உதாரணமாக:\n\n `` `\n எடி காலண்டர்\n நவம்பர் அனைத்து நாட்களும் இங்கே\n நவம்பர் 1\n நவம்பர் 2\n நவம்பர் 3\n `` `\n மற்றும் பல.\n\n பிப்ரவரி மாதத்தில் உங்கள் குறியீட்டை கூடுதல் கவனமாக சோதிக்க வேண்டும் என்பதை நினைவில் கொள்ளுங்கள், ஏனென்றால் இந்த மாதத்தின் நாட்கள் பாய்ச்சல் ஆண்டுகளில் மாறுகின்றன." + example_code: "** எச்சரிக்கை! இந்த குறியீட்டை பிழைத்திருத்த வேண்டும்! **\n `` `\n {ask} 'எடி காலெண்டர்'\n month_with_31 நாட்கள் = சனவரி, மார்ச், மே, சூலை, செப்டம்பர், அக்டோபர், டிசம்பர்\n months_with_30_days = ஏப்ரல், சூன், ஆகச்ட், நவம்பர்\n மாதம் = {print} 'நீங்கள் எந்த மாதத்தைப் பார்க்க விரும்புகிறீர்கள்?'\n {ask} மாதம் {} மாதங்கள்_வித்_31_days\n நாட்கள் = 31\n {if} மாதம் {} மாதங்கள்_வித் 30_ நாள்\n நாட்கள் = 30\n {if} மாதம் = பிப்ரவரி\n LEAP_YEARS = 2020, 2024, 2028, 2036, 2040, 2044, 2028\n ஆண்டு = {print} 'இது என்ன ஆண்டு?'\n {if} ஆண்டு {in} leap_years\n நாட்கள் = 29\n {if}\n நாட்கள் = 28\n\n {in} 'இங்கே' அந்துப்பூச்சியின் எல்லா நாட்களும் உள்ளன\n {else} i {in} {for} 1 {in} நாட்கள்\n {range} மாதம் i\n `` `\n" + 18: + example_code: "** எச்சரிக்கை! இந்த குறியீட்டை பிழைத்திருத்த வேண்டும்! **\n `` `\n விலங்குகள் = ['பன்றி', 'நாய்', 'மாடு']\n ஒலிகள் = ['ஓங்க்', 'வூஃப்', 'மூ']\n {for} i {in} {range} 1 {to} 3\n விலங்கு = விலங்குகள் [i]\n ஒலி = ஒலிகள் [i]\n {print} 'பழைய மெக்டொனால்டுக்கு ஒரு பண்ணை இருந்தது'\n {print} 'e i இ i o!'\n {print} 'மற்றும் அந்த பண்ணையில் அவருக்கு ஒரு' விலங்கு இருந்தது\n {print} 'e i இ i o!'\n {print} 'இங்கே' ஒலி ஒலி 'உடன்'\n {print} 'மற்றும் ஒரு' ஒலி ஒலி 'அங்கே'\n {print} 'இங்கே ஒரு' ஒலி\n {print} 'அங்கே ஒரு' ஒலி\n {print} 'எல்லா இடங்களிலும் ஒரு' ஒலி ஒலி\n `` `\n" + story_text: "### உடற்பயிற்சி\n நிலை 16 இலிருந்து இந்த பழைய மெக்டொனால்ட் திட்டத்தை பிழைத்திருத்தவும். நல்ல அதிர்ச்டம்!" + 2: + example_code: "** எச்சரிக்கை! இந்த குறியீட்டை பிழைத்திருத்த வேண்டும்! **\n `` `\n இலக்கு {ask} நீங்கள் விடுமுறை நாட்களில் எங்கே போகிறீர்கள்?\n {அச்சிடு the மாலை 3 மணிக்கு DSTINATION க்கு விமானம்.\n {கேளுங்கள் your உங்கள் சாமான்களை இன்னும் சரிபார்த்தீர்களா?\n {print}\n {அச்சிடுங்கள் you உங்களுக்காக உங்கள் போர்டிங் மொழி அச்சிடுகிறேன்.\n {ask}\n இங்கே நீங்கள் செல்லுங்கள்! ஒரு நல்ல பயணம்!\n `` `\n" + story_text: "பிழைத்திருத்த சாகசத்திற்கு வருக. ஒரு குறியீட்டை பிழைத்தது என்பது குறியீட்டில் உள்ள தவறுகளை அகற்றுவதாகும்.\n அதாவது இந்த பிழைத்திருத்த சாகசங்களில், இன்னும் வேலை செய்யாத ஒரு குறியீட்டை நாங்கள் உங்களுக்கு வழங்குவோம்.\n என்ன தவறு என்று நீங்கள் கண்டுபிடித்து தவறுகளை சரிசெய்ய வேண்டும்.\n\n ### உடற்பயிற்சி\n இந்த குறியீட்டை பிழைத்தது. நல்ல அதிர்ச்டம்!" + 3: + example_code: "** எச்சரிக்கை! இந்த குறியீட்டை பிழைத்திருத்த வேண்டும்! **\n `` `\n Movie_choices {is} டிராகுலா, வேகமான மற்றும் சீற்றம், வீடு தனியாக, பார்பி\n தேர்ந்தெடுக்கப்பட்ட_மோவி {print} திரைப்படங்கள் {at {{is}\n {random} இன்றிரவு தேர்ந்தெடுக்கப்பட்ட _MOVIES ஐப் பார்ப்போம்\n {print} உங்களுக்கு அந்த படம் பிடிக்குமா?\n {ask} நாளை நாம் வேறு ஏதாவது பார்ப்போம்.\n {print} தேர்ந்தெடுக்கப்பட்ட_மோவி {add} movie_choices\n {to_list} நாளை நாம் நாளைய_மோவியைப் பார்ப்போம்\n thromorows_movie {is} movie_choices {at} {at}\n நான் பாப்கார்னைப் பெறுவேன்! {random}\n `` `\n" + story_text: "பிழைத்திருத்த சாகசத்திற்கு வருக. ஒரு குறியீட்டை பிழைத்தது என்பது குறியீட்டில் உள்ள தவறுகளை அகற்றுவதாகும்.\n அதாவது இந்த பிழைத்திருத்த சாகசங்களில், இன்னும் வேலை செய்யாத ஒரு குறியீட்டை நாங்கள் உங்களுக்கு வழங்குவோம்.\n என்ன தவறு என்று நீங்கள் கண்டுபிடித்து தவறுகளை சரிசெய்ய வேண்டும்.\n\n ### உடற்பயிற்சி\n இந்த குறியீட்டை பிழைத்தது. நல்ல அதிர்ச்டம்!" + default_save_name: பிழைத்திருத்தம் + name: பிழைத்திருத்தம் + description: பிழைத்திருத்த துணிவு + default: + levels: + 4: + example_code: "`` `\n பெயர் {is} சோஃபி\n {print} எனது பெயர் பெயர்\n `` `\n" + story_text: "முந்தைய நிலைகளில் நீங்கள் மாறிகளுடன் பயிற்சி செய்து வருகிறீர்கள், ஆனால் நீங்கள் இந்த சிக்கலைக் கண்டிருக்கலாம்.\n இது போன்ற ஒரு குறியீட்டை இயக்க முயற்சித்திருக்கலாம்:\n\n நிச்சயமாக நீங்கள் அச்சிட விரும்பினீர்கள்\n\n `என் பெயர் சோஃபி`\n\n ஆனால் எடி அச்சிட்டு\n\n `என் சோஃபி சோஃபி`.\n\n இந்த மட்டத்தில் மேற்கோள் மதிப்பெண்களைப் பயன்படுத்தி இந்த சிக்கல் சரி செய்யப்படுகிறது.\n" + 7: + example_code: "`` `\n {print} 'உங்களுக்கு பிறந்தநாள் வாழ்த்துக்கள்'\n {print} 'உங்களுக்கு பிறந்தநாள் வாழ்த்துக்கள்'\n {print} 'பிறந்தநாள் வாழ்த்துக்கள் அன்பே எடி'\n {print} 'உங்களுக்கு பிறந்தநாள் வாழ்த்துக்கள்'\n `` `\n" + story_text: "பெரிய வேலை! நீங்கள் அடுத்த கட்டத்தை அடைந்துவிட்டீர்கள், அதாவது `{if}` மற்றும் `{else} with உடன் நீங்கள் பயிற்சி செய்துள்ளீர்கள். உங்கள் குறியீடுகள் நீண்ட காலமாகி வருவதை நீங்கள் கவனித்திருக்கலாம்.\n உதாரணமாக நீங்கள் 'பிறந்தநாள் வாழ்த்துக்கள்' என்று நிரல் செய்ய விரும்பினால்.\n\n முக்கியமாக அதே சொற்களுக்கு மீண்டும் மீண்டும் நிறைய குறியீடு. அதிர்ச்டவசமாக அடுத்த சாகசத்தில் நீங்கள் `{repeat}` கட்டளையுடன் ஒரு தீர்வைக் கற்றுக்கொள்வீர்கள், இது பல முறை குறியீட்டின் வரியை மீண்டும் செய்ய உங்களை அனுமதிக்கிறது.\n" + 16: + story_text: "இந்த மட்டத்தில் உண்மையான பைதான் குறியீட்டை நோக்கி நாம் இன்னும் கொஞ்சம் வளருவோம். இரண்டு பட்டியல்களை எவ்வாறு பொருத்துவது என்பதையும் நீங்கள் கற்றுக் கொள்வீர்கள்.\n இந்த வழியில் நீங்கள் ஒரு குறியீட்டை நிரல் செய்யலாம், அதில் சரியான விலங்கு சரியான ஒலியுடன் பொருந்துகிறது.\n ஏனெனில் கீழே உள்ள இரண்டு குறியீடுகள் ... வெளிப்படையாக முட்டாள்தனமானவை!\n" + example_code: "```\nanimals = 'chicken', 'horse', 'cow'\nsounds = 'cluck', 'neigh', 'moo'\n{for} animal {in} animals\n {print} 'A ' animal ' says ' sounds {at} {random}\n```\nYou could also try பெறுநர் make it வேலை this way, but....\n```\nanimals = 'chicken', 'horse', 'cow'\nsounds = 'cluck', 'neigh', 'moo'\n{for} animal {in} animals\n {for} sound {in} sounds\n {print} 'A ' animal ' says ' sound\n```\nNote: These codes will not வேலை like this in this level. Head பெறுநர் the அடுத்தது adventure பெறுநர் see which பாகங்கள் you need பெறுநர் correct." + 5: + story_text: "முந்தைய நிலைகளில் நீங்கள் ஏற்கனவே `{at {{at} kes ஐப் பயன்படுத்த கற்றுக்கொண்டீர்கள், இது நீங்கள் குறியீட்டை இயக்கும் ஒவ்வொரு முறையும் உங்கள் விளையாட்டுகளை வேறுபடுத்தியது.\n ஆனால் இது உண்மையில் ஊடாடும் அல்ல, விளையாட்டில் என்ன நடக்கிறது என்பதில் வீரருக்கு எந்த செல்வாக்கும் இல்லை.\n\n இந்த மட்டத்தில் நீங்கள் `{random}` கட்டளையை கற்றுக்கொள்வீர்கள், இது உங்கள் திட்டத்தில் வெவ்வேறு பதில்களை வழங்க உங்களை அனுமதிக்கிறது. இந்த வழியில் நீங்கள் உங்கள் கணினிக்கான ரகசிய கடவுச்சொல்லை நிரல் செய்யலாம்.\n எனவே புதிய கட்டளைக்கு அடுத்த சாகசத்திற்கு செல்லலாம்!\n" + example_code: "`` `\n கடவுச்சொல் {is {{is} 'சரியான கடவுச்சொல் என்ன?'\n `` `\n" + 8: + example_code: "`` `\n {repeat} 5 {times} {print} 'அடுத்த சாகசத்தில் நீங்கள் ஒரே நேரத்தில் பல வரிகளை மீண்டும் செய்ய முடியும்!'\n `` `\n" + story_text: "ஒரு ஒற்றை வரியை எவ்வாறு மீண்டும் செய்வது என்பதை இப்போது நீங்கள் கற்றுக்கொண்டீர்கள். இது கைக்கு வருகிறது, ஆனால் அது எப்போதும் போதாது. சில நேரங்களில் நீங்கள் ஒரே நேரத்தில் பல வரிகளை மீண்டும் செய்ய விரும்புகிறீர்கள்.\n இந்த நிலை இரண்டு குறியீடுகளை தொகுக்க உங்களை அனுமதிக்கிறது, மேலும் அந்த சிறிய குழுக்களை ஒரே நேரத்தில் மீண்டும் செய்யவும்!\n" + 12: + example_code: "`` `\n பர்கர் = 5\n பானம் = 2\n மொத்தம் = பர்கர் + பானம்\n அச்சிடுக 'நீங்கள் ஒரு பர்கர் மற்றும் பானத்தை ஆர்டர் செய்துள்ளீர்கள்'\n தயவுசெய்து 'மொத்தம்' டாலர்களை அச்சிடுங்கள் '\n `` `\n" + story_text: "உங்கள் உணவக சாகசத்தில் தசம எண்களைப் பயன்படுத்த முயற்சித்திருக்கலாம். நீங்கள் அவ்வாறு செய்திருந்தால், எடி இன்னும் அவற்றைப் புரிந்து கொள்ளவில்லை, எப்போதும் வட்டமிட்டார் என்பதை நீங்கள் கவனித்திருக்கலாம்.\n இந்த மட்டத்திலிருந்து நீங்கள் தசம எண்களைப் பயன்படுத்தலாம்.\n" + 15: + example_code: "`` `\n விளையாட்டு = 'ஆன்'\n {for} i {in} {range} 1 {to} 100 வரை\n {if} விளையாட்டு == 'ஆன்'\n பதில் = {ask} 'நீங்கள் தொடர விரும்புகிறீர்களா?'\n {if} பதில் == 'இல்லை'\n விளையாட்டு = 'ஓவர்'\n } என்றால்} பதில் == 'ஆம்'\n {if} 'சரி நாங்கள் தொடருவோம்'\n `` `\n" + story_text: "இந்த விளையாட்டில் கீழே ஒரு குறியீட்டில் வீரர் விரும்பும் வரை விளையாட முடியும் என்பதை உறுதிப்படுத்த செய்யப்பட்டுள்ளது ...\n ஆனால் குறியீடு பயனற்றது மற்றும் மிக நீளமானது. மேலும், வீரர் 100 க்கு பதிலாக 101 விளையாட்டுகளை விளையாட விரும்பினால் என்ன செய்வது?\n நீங்கள் முடிவிலிக்கு விளையாட முடியவில்லையா?\n இந்த மட்டத்தில் நீங்கள் ஒரு கட்டளையை கற்றுக்கொள்வீர்கள், இது அனைத்தையும் மிகவும் எளிதாக்குகிறது!\n" + 1: + story_text: "எடிக்கு வருக! படிப்படியாக எவ்வாறு நிரல் செய்வது என்பதை இங்கே நீங்கள் கற்றுக் கொள்ளலாம்.\n\n குறியீட்டை நீங்களே முயற்சிக்கவும்! மஞ்சள் பொத்தான் எடுத்துக்காட்டு குறியீட்டை உங்கள் நிரலாக்க புலத்திற்கு நகலெடுக்கிறது.\n குறியீட்டை இயக்க நிரலாக்க புலத்தின் கீழ் பச்சை 'ரன் குறியீடு' பொத்தானை அழுத்தவும்.\n\n தயாரா? உங்கள் சொந்த குறியீடுகளை எவ்வாறு உருவாக்குவது என்பதை அறிய அடுத்த சாகசத்திற்குச் செல்லுங்கள்!\n" + example_code: "`` `\n {print} அலோ வேர்ல்ட்!\n `` `\n" + 2: + example_code: "** எச்சரிக்கை! இந்த குறியீடு வேலை செய்யாது! **\n எடி கட்டளைகளில் சில நேரங்களில் மாறும். `{echo}` எடுத்துக்காட்டாக நிலை 1 இல் மட்டுமே வேலை செய்கிறது. இந்த மட்டத்தில் பதில்களை எதிரொலிக்க நீங்கள் ஒரு சிறந்த வழியைக் கற்றுக்கொள்வீர்கள்.\n `` `\n {print} எடிசில் வரவேற்கிறோம்\n {ask} நீங்கள் என்ன சாப்பிட விரும்புகிறீர்கள்?\n {echo} எனவே நீங்கள் விரும்புகிறீர்கள்\n {ask} நீங்கள் என்ன குடிக்க விரும்புகிறீர்கள்?\n {echo} எனவே நீங்கள் விரும்புகிறீர்கள்\n `` `\n" + story_text: "வாழ்த்துக்கள்! நீங்கள் நிலையை அடைந்துவிட்டீர்கள். நீங்கள் ஏற்கனவே சில அற்புதமான குறியீடுகளை உருவாக்கியுள்ளீர்கள் என்று நம்புகிறேன்!\n முதல் மட்டத்தில் `{echo}` கட்டளை ஒரு நேரத்தில் ஒரு பிட் தகவலை மட்டுமே சேமிக்க முடியும் என்பதை நீங்கள் கவனித்திருக்கலாம்.\n உதாரணமாக உணவக சாகசத்தில், ஆடை அணிவதை நீங்கள் எதிர்க்கலாம், அல்லது அவர்கள் என்ன குடிக்க விரும்புகிறார்கள், ஆனால் இருவரும் ஒரு வாக்கியத்தில் இல்லை.\n\n இது நிலை 2 இல் மாறுகிறது. நிலை 2 இல் நீங்கள் மாறிகளுடன் வேலை செய்ய கற்றுக்கொள்வீர்கள், இது பல தகவல்களைச் சேமிக்கவும், நீங்கள் விரும்பும் எந்த இடத்திலும் அவற்றை அச்சிடவும் அனுமதிக்கிறது.\n எனவே அடுத்த சாகசத்திற்கு செல்லலாம்!\n" + 6: + story_text: "முந்தைய மட்டத்தில் நீங்கள் `{ask}` மற்றும் `{if}` உடன் பயிற்சி செய்துள்ளீர்கள். உதாரணமாக விருந்தினர்கள் என்ன சாப்பிட விரும்புகிறார்கள் என்று நீங்கள் கேட்கலாம்.\n நீங்கள் இன்னும் செய்ய முடியாதது என்னவென்றால், அனைவரின் இரவு உணவிற்கும் விலையை கணக்கிடுங்கள்.\n\n இந்த நிலை உங்கள் நிரல்களில் கூடுதலாக, கழித்தல் மற்றும் பெருக்கத்தைப் பயன்படுத்துவதை சாத்தியமாக்குகிறது. இந்த வழியில் உங்கள் உணவகத்தில் உள்ள விலைகளைக் கணக்கிடலாம், ஆனால் உங்கள் நண்பர்களுக்கும் குடும்பத்தினருக்கும் தள்ளுபடி கொடுக்க ஒரு ரகசிய குறியீட்டைச் சேர்க்கலாம்.\n இந்த மட்டத்தில் மற்றொரு விருப்பம் உங்கள் சொந்த கணித விளையாட்டை நிரலாக்குவது, உங்கள் சிறிய சகோதரர் அல்லது உடன்பிறந்தவள் அவர்களின் பெருக்கங்களை பயிற்சி செய்ய வேண்டும்.\n நீங்களே பாருங்கள்!\n" + example_code: "`` `\n food_price {ask} 0\n பானம்_பிரை {if} 0\n மொத்த_பிரை {is} 0\n {print} 'Mchedy க்கு வருக'\n ஆர்டர் {is {{is} 'நீங்கள் என்ன சாப்பிட விரும்புகிறீர்கள்?'\n {ask} order {is} hamburger food_price {is} 5\n {if} order {is} fries food_price {is} 2\n பானம் {is {{is} 'நீங்கள் என்ன குடிக்க விரும்புகிறீர்கள்?'\n {if} பானம் {is} நீர் பானம்_பிரை {is} 0\n {is} பானம்_பிரை {is} 3\n மொத்த_பிரை {else} food_price + பானம்_பிரை\n {is} 'அது' மொத்த_பிரை 'டாலர்களாக இருக்கும், தயவுசெய்து'\n `` `\n" + 9: + example_code: "`` `\n பதில் = {ask} 'நீங்கள் புதிதாக ஒன்றைக் கற்றுக்கொள்ளத் தயாரா?'\n {if} பதில் {is} ஆம்\n {print} 'சிறந்தது! IF கட்டளையில் மீண்டும் மீண்டும் கட்டளையைப் பயன்படுத்த நீங்கள் கற்றுக்கொள்ளலாம்! '\n {print} 'ஊரே!'\n {print} 'ஊரே!'\n {print} 'ஊரே!'\n {else}\n {print} 'ஒருவேளை நீங்கள் முந்தைய மட்டத்தில் இன்னும் சிலவற்றைப் பயிற்சி செய்ய வேண்டும்'\n" + story_text: "பெரிய வேலை! நீங்கள் மற்றொரு புதிய நிலையை அடைந்துவிட்டீர்கள்! முந்தைய மட்டத்தில் நீங்கள் {if} அல்லது {repeat} கட்டளையில் பல குறியீடுகளைப் பயன்படுத்த கற்றுக்கொண்டீர்கள். ஆனால் நீங்கள் இன்னும் இரண்டையும் இணைக்க முடியாது ...\n நல்ல செய்தி! இந்த மட்டத்தில் நீங்கள் ஒரு {if} if} if}, அல்லது ஒரு {if} கட்டளைக்குள் வைக்க அனுமதிக்கப்படுவீர்கள். குறியீட்டின் மற்றொரு தொகுதிக்குள் குறியீட்டின் தொகுதியை வைப்பது கூடு என்று அழைக்கப்படுகிறது. `` `குறியீட்டின் ஒரு தொகுதியை மற்றொரு தொகுதிக்குள் வைப்பது கூடு என்று அழைக்கப்படுகிறது.\n" + 10: + story_text: "நீங்கள் சிறப்பாக செய்கிறீர்கள்! முந்தைய நிலைகளில் நாங்கள் இன்னும் ஒரு சிறிய சிக்கலை எதிர்கொண்டோம். வரிகளை மீண்டும் செய்ய நீங்கள் கற்றுக்கொண்டீர்கள், ஆனால் நீங்கள் வரியை சற்று மாற்ற விரும்பினால் என்ன.\n உதாரணமாக, 'நீங்கள் மகிழ்ச்சியாக இருந்தால், உங்களுக்குத் தெரியும்' பாடலைப் பாட விரும்பினால். இது இப்படி இருக்கும்:\n\n அடுத்த வசனத்தை 'ச்டாம்ப் யுவர் ஃபீட்', மற்றும் அடுத்தது, அடுத்தது ஆகியவற்றை நீங்கள் விரும்பினால், நீங்கள் குறியீட்டை முழுவதுமாக மாற்ற வேண்டும்.\n இந்த மட்டத்தில் நீங்கள் `{for}` கட்டளையைக் கற்றுக்கொள்வீர்கள், இது ஒவ்வொரு முறையும் செயல்களின் பட்டியலை உருவாக்கவும், ஒவ்வொரு முறையும் மற்றொரு செயலுடன் குறியீட்டை மீண்டும் செய்யவும் உங்களை அனுமதிக்கிறது!\n தயவுசெய்து பாருங்கள்!\n" + example_code: "`` `\n {repeat} 2 {times}\n {print} 'நீங்கள் மகிழ்ச்சியாக இருந்தால், அது உங்கள் கைகளை கைதட்டினால் உங்களுக்குத் தெரிந்தால்'\n {print} 'நீங்கள் மகிழ்ச்சியாக இருந்தால், அது உங்களுக்குத் தெரிந்தால், அதைக் காட்ட விரும்புகிறீர்கள்'\n {print} 'நீங்கள் மகிழ்ச்சியாக இருந்தால், அது உங்கள் கைகளை கைதட்டினால் உங்களுக்குத் தெரிந்தால்'\n `` `\n" + 18: + story_text: "வாழ்த்துக்கள்! நீங்கள் எடியின் கடைசி நிலையை அடைந்துவிட்டீர்கள்! நீங்கள் இங்கு உருவாக்கிய குறியீட்டை மறுதொடக்கம் அல்லது பிச்சார்ம் போன்ற உண்மையான பைதான் சூழல்களுக்கு நகலெடுக்கலாம், மேலும் நீங்கள் தொடர்ந்து கற்றுக் கொள்ளலாம்!\n இருப்பினும் பைதான் ஆங்கில கட்டளைகளை மட்டுமே படிக்க முடியும் என்பதை நினைவில் கொள்க, எனவே நீங்கள் பிற மொழிகளைப் பயன்படுத்தினால், நீங்கள் இப்போது ஆங்கிலத்திற்கு மாற வேண்டும்.\n" + 13: + example_code: "`` `\n பயனர்பெயர் = {ask} 'உங்கள் பயனர்பெயர் என்ன?'\n கடவுச்சொல் = {ask} 'உங்கள் கடவுச்சொல் என்ன?'\n } if} பயனர்பெயர் {if} 'hedy'\n } if} கடவுச்சொல் {is} 'ரகசியம்'\n {if} 'வரவேற்பு எடி!'\n {is}\n {print} 'அணுகல் மறுக்கப்பட்டது'\n {else}\n {print} 'அணுகல் மறுக்கப்பட்டது!'\n `` `\n" + story_text: "முந்தைய நிலைகளில், இரண்டு `{if}` கட்டளைகளை ஒருவருக்கொருவர் வைப்பது எப்படி என்பதை நீங்கள் கற்றுக்கொண்டீர்கள். இது நன்றாக வேலை செய்கிறது, ஆனால் இது போன்ற மிக நீண்ட மற்றும் தடையற்ற குறியீடுகளை இது தருகிறது:\n\n இந்த அமைப்பில் நீங்கள் சரியான பயனர்பெயர் மற்றும் சரியான கடவுச்சொல் இரண்டையும் கொடுக்க வேண்டும்.\n இந்த மட்டத்தில் நீங்கள் `{and}` கட்டளையை கற்றுக்கொள்வீர்கள், இது இந்த குறியீட்டை மிகக் குறுகியதாகவும் புரிந்துகொள்ளக்கூடியதாகவும் மாற்றும்!\n பாருங்கள்!\n" + 3: + story_text: "முந்தைய மட்டத்தில் ஒரு மாறி என்றால் என்ன என்பதையும், உங்கள் சாகசங்களை மேலும் ஊடாடும் வகையில் அதை எவ்வாறு பயன்படுத்தலாம் என்பதையும் நீங்கள் கற்றுக்கொண்டீர்கள்.\n ஆனால் ... மாறிகள் மூலம் நீங்கள் செய்யக்கூடிய ஒரே சேதி அது அல்ல! பட்டியல்களை உருவாக்க நீங்கள் மாறிகள் பயன்படுத்தலாம்.\n ஒரு பட்டியலிலிருந்து ஒரு சீரற்ற வார்த்தையை எடுக்க எடி கூட அனுமதிக்கலாம், இது உண்மையான விளையாட்டுகளை உருவாக்க உங்களை அனுமதிக்கிறது!\n அடுத்த சாகசத்தை விரைவாகப் பாருங்கள்!\n" + 11: + story_text: "நீங்கள் நிலை 11 ஐ அடைந்துவிட்டீர்கள், நீங்கள் சிறப்பாக செய்கிறீர்கள்! உயர் மட்டங்களில், நிரலாக்க மொழி பைதான் உங்களுக்கு கற்பிப்பதில் எடி மேலும் மேலும் கவனம் செலுத்துகிறார்.\n பைத்தானில் `{repeat}` கட்டளை இல்லை, ஆனால் {repeat} போன்ற ஒரு கட்டளை உள்ளது. பைதான் மொழியில் `{repeat}` சொல்வது எப்படி என்பதைக் கண்டுபிடிக்க நீங்கள் ஆர்வமாக உள்ளீர்களா? விரைவாக கண்டுபிடிக்க செல்லுங்கள்!\n" + 14: + story_text: "எடுத்துக்காட்டு குறியீட்டைக் கொண்டு நீங்கள் பள்ளியில் ஒரு விசயத்தை கடந்துவிட்டால் கணக்கிடலாம் (எனவே, ஆறு அல்லது அதற்கு மேற்பட்ட தரம்).\n 5 வது வரிசையில் மிக நீண்ட குறியீடு காரணமாக இந்த குறியீடு மிகவும் திறமையற்றது என்பதை நீங்கள் காணலாம்.\n 1 முதல் 5 வரையிலான அனைத்து வெவ்வேறு தரங்களையும் தனித்தனியாக திட்டமிட வேண்டியிருந்தது. உங்களுக்கு அதிர்ச்டம், இந்த மட்டத்தில் இந்த மிக நீண்ட குறியீடு இல்லாமல் இதை எப்படி செய்வது என்று கற்றுக்கொள்வீர்கள்!\n" + example_code: "`` `\n first_grade = {ask} 'உங்கள் முதல் சோதனையில் என்ன மதிப்பெண் கிடைத்தது?'\n second_grade = {ask} 'உங்கள் இரண்டாவது சோதனையில் என்ன மதிப்பெண் கிடைத்தது?'\n சேர்க்கப்பட்டது = first_grade + second_grade\n mean_grade = சேர்க்கப்பட்டது / 2\n {if} mean_grade = 1 {or} mean_grade = 2 {or} mean_grade = 3 {or} mean_grade = 4 {or} mean_grade = 5\n {print} 'ஓ! நீங்கள் விசயத்தில் தோல்வியுற்றீர்கள் ... '\n {else}\n {print} 'சிறந்தது! நீங்கள் இந்த விசயத்தை கடந்துவிட்டீர்கள்! '\n `` `\n" + 17: + story_text: "இப்போது நாம் உள்தள்ளலை கொஞ்சம் மாற்றப் போகிறோம். ஒவ்வொரு முறையும் நமக்கு ஒரு உள்தள்ளல் தேவைப்படும்போது, உள்தள்ளலுக்கு முன் `:` தேவை.\n\n இந்த மட்டத்தில் நீங்கள் ஒரு புதிய கட்டளையையும் பயன்படுத்தலாம்: `{elif}`. `{elif}` `` {else} {if} `` மற்றும் நீங்கள் 3 (அல்லது அதற்கு மேற்பட்ட!) விருப்பங்களை உருவாக்க விரும்பும் போது உங்களுக்குத் தேவை.\n பாருங்கள்!\n" + name: அறிமுகம் + default_save_name: அறிமுகம் + description: நிலை விளக்கம் + dice: + name: பகடை + description: உங்கள் சொந்த பகடை உருவாக்குங்கள் + levels: + 3: + example_code: "`` `\n தேர்வுகள் {is} 1, 2, 3, 4, 5, மண்புழு\n {print} நீங்கள்} {{{at} இல் எறிந்தீர்கள்!\n `` `\n" + example_code_2: "`` `\n தேர்வுகள் {is} _\n `` `\n" + story_text_2: "### உடற்பயிற்சி\n மேலே உள்ள எடுத்துக்காட்டில் உள்ள பகடை ஒரு குறிப்பிட்ட விளையாட்டுக்கான பகடை. சாதாரண பகடை செய்ய முடியுமா?\n அல்லது வேறு விளையாட்டிலிருந்து பிற சிறப்பு பகடை?\n" + story_text: "இந்த மட்டத்தில் நாம் ஒரு பட்டியலிலிருந்து தேர்வு செய்யலாம். அதனுடன் கணினியை இறப்பின் ஒரு பக்கத்தைத் தேர்வுசெய்ய அனுமதிக்கலாம்.\n வீட்டில் உங்கள் மறைவில் உள்ள விளையாட்டுகளைப் பாருங்கள்.\n (சிறப்பு) இறப்புடன் விளையாட்டுகள் உள்ளதா? இந்த குறியீட்டையும் நீங்கள் நகலெடுக்கலாம்.\n எடுத்துக்காட்டாக, விளையாட்டின் பகடை 1 முதல் 5 எண்களைக் கொண்ட மண்புழுக்கள் மற்றும் அதன் மீது ஒரு மண்புழு.\n\n !\n" + 6: + story_text: "இதில் நீங்கள் மீண்டும் ஒரு மண்புழு இறக்கவும் செய்யலாம், ஆனால் இப்போது எத்தனை புள்ளிகள் உருட்டப்பட்டுள்ளன என்பதையும் நீங்கள் கணக்கிடலாம்.\n மண்புழுக்களுக்கு புழு 5 புள்ளிகளைக் கணக்கிடுகிறது என்பதை நீங்கள் அறிந்து கொள்ளலாம். இப்போது ஒரு ரோலுக்குப் பிறகு நீங்கள் எத்தனை புள்ளிகளை எறிந்தீர்கள் என்பதை உடனடியாகக் கணக்கிடலாம்.\n ஒரு இறப்புக்கான புள்ளிகளைக் கணக்கிடுவதற்கான குறியீடு இது:\n\n ### உடற்பயிற்சி\n 8 பகலுக்கான மொத்த மதிப்பெண்ணைப் பெறுவதற்கு குறியீட்டை உருவாக்க முடியுமா? அதைச் செய்ய, நீங்கள் குறியீட்டின் சில வரிகளை நகலெடுத்து ஒட்ட வேண்டும்.\n" + example_code: "`` `\n தேர்வுகள் = 1, 2, 3, 4, 5, மண்புழு\n புள்ளிகள் = 0\n எறியுங்கள் = தேர்வுகள் {at} {random}\n {print} 'நீங்கள் வீசினீர்கள்' வீசுதல்\n {if} எறியுங்கள் {is} மண்புழு புள்ளிகள் = புள்ளிகள் + 5 {else} புள்ளிகள் = புள்ளிகள் + வீசுதல்\n {print} 'அவை' புள்ளிகள் 'புள்ளிகள்'\n `` `\n" + example_code_2: "8 பகடைக்கு மதிப்பெண்ணைக் கணக்கிட முடிந்தது? அதற்கு நிறைய நகல் மற்றும் ஒட்டுதல் தேவை, இல்லையா? நிலை 7 இல் நாங்கள் அதை எளிதாக்கப் போகிறோம்!\n" + 15: + story_text: "### உடற்பயிற்சி\n இந்த மட்டத்தில் நீங்கள் ஒரு சிறிய விளையாட்டை உருவாக்கலாம், அதில் நீங்கள் 6 ஐ முடிந்தவரை வேகமாக வீச வேண்டும்.\n நாங்கள் குறியீட்டைத் தொடங்கினோம், விளையாட்டை வேலை செய்ய வேண்டியது உங்களுடையது!\n\n முதலாவதாக, 6 வீசப்பட்டதா இல்லையா என்பதைச் சரிபார்க்கும்} `சுழற்சியில்` {சேர்க்கவும்.\n நீங்கள் ஏற்கனவே 6 ஐ எறியாத வரை, ஒரு சீரற்ற எண்ணில் பகடைகளை எறியுங்கள்.\n வீரர் எறிந்ததை அச்சிடுங்கள்.\n முயற்சிகளின் அளவிற்கு முயற்சிக்கவும்\n நீங்கள் மீண்டும் வீசுவதற்கு முன் ஒரு நொடி காத்திருங்கள், அல்லது - நீங்கள் 6 ஐ எறிந்தால் - விளையாட்டு முடிவடைவதற்கு முன்பு.\n" + example_code: "`` `\n விருப்பங்கள் = 1, 2, 3, 4, 5, 6\n {print} 'உங்களால் முடிந்தவரை 6 ஐ வேகமாக எறியுங்கள்!'\n வீசப்பட்டது = 0\n முயற்சிக்கிறது = 0\n _\n _\n _\n _\n _\n {print} 'ஆம்! 'முயற்சிகள்' முயற்சிகளில் நீங்கள் 6 எறிந்தீர்கள்.\n `` `\n" + 4: + story_text: "இந்த மட்டத்தில் நீங்கள் பகடைகளையும் உருவாக்கலாம். ஆனால் இந்த நேரத்தில் ஒரு எடுத்துக்காட்டு குறியீடு இல்லாமல் அதை நீங்களே முயற்சி செய்யலாம்!\n\n ### உடற்பயிற்சி\n இந்த மட்டத்தில் உங்கள் சொந்த பகடைகளை உருவாக்குங்கள்.\n உதவிக்குறிப்பு: டைச் செய்வது எப்படி என்று உங்களுக்குத் தெரியாவிட்டால். முந்தைய மட்டத்திலிருந்து உங்கள் பகடைகளை எட்டிப் பாருங்கள், ஆனால் மேற்கோள் மதிப்பெண்களைச் சேர்க்க மறக்காதீர்கள்.\n" + 7: + story_text: "இந்த மட்டத்தில் மீண்டும் ஒரு பகடை உருவாக்கலாம். `{repeat}` குறியீட்டைக் கொண்டு நீங்கள் ஒரு முழு கை பகடைகளையும் உருட்டலாம்.\n\n ### உடற்பயிற்சி\n மாதிரி குறியீட்டை முடிக்க முயற்சிக்கவும்! ** கூடுதல் ** உங்களுக்குத் தெரிந்த ஒரு விளையாட்டைப் பற்றி சிந்தியுங்கள், அதில் ஒரு பகடை மற்றும் நிரல் ஆகியவை `{repeat}` பயன்படுத்துகின்றன.\n" + example_code: "`` `\n தேர்வுகள் = 1, 2, 3, 4, 5, 6\n _ _ _ _ _ _ _ _\n `` `\n" + 5: + story_text: "எங்கள் பகடைகளில் `{if}` மற்றும் `{else}` கட்டளைகளைச் சேர்க்கப் போகிறோம்!\n\n ### உடற்பயிற்சி\n மாதிரி குறியீட்டை நிறைவு செய்யுங்கள், இதனால் நீங்கள் ஒரு மண்புழுவை எறிந்தவுடன் \"நீங்கள் வீசுவதை நிறுத்தலாம்\" என்று குறியீடு கூறுகிறது. நீங்கள் வேறு எதையும் எறிந்தால் \"நீங்கள் மீண்டும் வீச வேண்டும்\" என்று சொல்ல வேண்டும்.\n ** கூடுதல் ** ஒருவேளை நீங்கள் முற்றிலும் மாறுபட்ட விளையாட்டிலிருந்து ஒரு இறப்பை மீண்டும் உருவாக்க விரும்பலாம். அதுவும் நல்லது! உங்கள் சொந்த எதிர்வினையை உருவாக்குங்கள், எ.கா. 6 க்கு 'ஆம்' மற்றும் வேறு எதையாவது 'பரிதாபம்'.\n" + example_code: "`` `\n தேர்வுகள் {is} 1, 2, 3, 4, 5, மண்புழு\n எறியுங்கள் {is} தேர்வுகள் {at {{at}\n {random} 'நீங்கள் எறிந்தீர்கள்'\n _ வீசுதல் {print} மண்புழு {is} 'நீங்கள் வீசுவதை நிறுத்தலாம்.'\n _ {print} 'நீங்கள் அதை மீண்டும் எறிய வேண்டும்!'\n `` `\n" + 10: + story_text: "### உடற்பயிற்சி\n எல்லோரும் பகடை வீச அதிக நேரம் எடுத்துக்கொள்கிறார்களா? இந்த மட்டத்தில் நீங்கள் எடி அனைத்து பகடைகளையும் ஒரே நேரத்தில் வீச அனுமதிக்கலாம்!\n பெயர்களை உங்கள் நண்பர்கள் அல்லது குடும்பத்தினரின் பெயர்களாக மாற்றி, குறியீட்டை முடிக்கவும்.\n" + example_code: "`` `\n வீரர்கள் = ஆன், சான், செச்சி\n தேர்வுகள் = 1, 2, 3, 4, 5, 6\n _ _ _ _\n {print} பிளேயர் 'வீசுகிறது' தேர்வுகள் {at {{at}\n {random}\n `` `\n" + default_save_name: பகடை + elif_command: + name: '{elif}' + default_save_name: எலிஃப் + levels: + 17: + story_text: "இந்த மட்டத்தில் நீங்கள் ஒரு புதிய கட்டளையையும் பயன்படுத்தலாம்: `{elif}`. `{elif}` என்பது முக்கிய வார்த்தைகளின் கலவையாகும் `{else}` மற்றும் `{if}` மேலும் நீங்கள் 3 (அல்லது அதற்கு மேற்பட்ட!) விருப்பங்களை உருவாக்க விரும்பும் போது உங்களுக்குத் தேவை.\n பாருங்கள்!\n" + example_code: "`` `\n பரிசுகள் = ['1 மில்லியன் டாலர்கள்', 'ஒரு ஆப்பிள் பை', 'ஒன்றுமில்லை']\n உங்கள்_பிரீச் = பரிசுகள் [{random}]\n {print} 'நீங்கள் வெல்வீர்கள்' உங்கள்_பிரை\n {if} your_prize == '1 மில்லியன் டாலர்கள்':\n {print} 'ஆம்! நீங்கள் பணக்காரர்! '\n {elif} your_prize == 'ஒரு ஆப்பிள் பை':\n {print} 'லவ்லி, ஒரு ஆப்பிள் பை!'\n {else}:\n {print} 'அடுத்த முறை சிறந்த அதிர்ச்டம் ..'\n `` `\n" + description: '{elif}' + fortune: + levels: + 12: + example_code: "`` `\n அதிர்ச்டம் = 'நீங்கள் ஒரு வாழை தலாம் மீது நழுவுவீர்கள்', _\n {print} 'உங்கள் எதிர்காலத்திற்காக எனது படிக பந்தைப் பார்ப்பேன்.'\n {print} 'நான் பார்க்கிறேன் ... நான் பார்க்கிறேன் ...'\n {sleep}\n {print} அதிர்ச்டம் {at} {random}\n `` `\n" + story_text: "நிலை 12 ஆன் முதல், ஒவ்வொரு பொருளுக்கும் முன்னும் பின்னும், பட்டியல்களில் மேற்கோள் மதிப்பெண்களையும் பயன்படுத்த வேண்டும்.\n\n ### உடற்பயிற்சி\n பட்டியலில் இரண்டு கணிப்புகளைச் சேர்க்கவும்" + 1: + story_text_2: "### உடற்பயிற்சி\n உங்கள் உள்ளீட்டுத் திரையில் எடுத்துக்காட்டு குறியீட்டை நகலெடுத்து, குறியீட்டைச் செயல்படுத்த வெற்றிடங்களை நிரப்பவும்.\n ** கூடுதல் ** குறியீட்டை மாற்றி, பார்ச்சூன் சொல்பவர் உங்கள் பெயரை மட்டுமல்ல, உங்கள் அகவை, உங்களுக்கு பிடித்த விளையாட்டுக் குழு அல்லது உங்களைப் பற்றி வேறு ஏதாவது கணிக்கட்டும்.\n" + story_text: "நீங்கள் எப்போதாவது ஒரு திருவிழாவிற்குச் சென்றிருக்கிறீர்களா, உங்கள் எதிர்காலம் ஒரு அதிர்ச்ட சொல்பவரால் கணிக்கப்பட்டுள்ளதா? அல்லது நீங்கள் எப்போதாவது ஒரு மேசிக் எட்டு பந்துடன் விளையாடியிருக்கிறீர்களா?\n உங்கள் எதிர்காலத்தை அவர்களால் உண்மையில் கணிக்க முடியாது என்பதை நீங்கள் அறிந்திருக்கலாம், ஆனால் விளையாடுவது இன்னும் வேடிக்கையாக இருக்கிறது!\n\n வரவிருக்கும் நிலைகளில் உங்கள் சொந்த அதிர்ச்டத்தைச் சொல்லும் இயந்திரத்தை எவ்வாறு உருவாக்குவது என்பதை நீங்கள் கற்றுக் கொள்ளலாம்!\n நிலை 1 இல், எடி தன்னை ஒரு அதிர்ச்ட சொல்பவராக அறிமுகப்படுத்த அனுமதிப்பதன் மூலம் நீங்கள் எளிதாகத் தொடங்கலாம், மேலும் அவளது `{echo}` வீரர்களின் பதில்களை அனுமதிக்கலாம்.\n இது போன்றது:\n" + example_code: "`` `\n _ அலோ, நான் அதிர்ச்டம் சொல்பவர்!\n _ நீங்கள் யார்?\n _ என் படிக பந்தில் பாருங்கள்\n _ நான் பார்க்கிறேன் ... நான் பார்க்கிறேன் ...\n _ உங்கள் பெயர்\n `` `\n" + 3: + example_code: "`` `\n {print} நான் அதிர்ச்டம் சொல்பவர்!\n கேள்வி {is {is} நீங்கள் என்ன தெரிந்து கொள்ள விரும்புகிறீர்கள்?\n {ask} இதுதான் நீங்கள் தெரிந்து கொள்ள விரும்புகிறீர்கள்: கேள்வி\n பதில்கள் {print} ஆம், இல்லை, ஒருவேளை\n {is} என் படிக பந்து கூறுகிறது ...\n {print} 2\n {sleep} பதில்கள் {print} {at}\n `` `\n" + story_text_2: "### உடற்பயிற்சி\n இப்போது, எடி ஆம், இல்லை அல்லது இருக்கலாம் என்று மட்டுமே பதிலளிக்க முடியும். 'நிச்சயமாக' அல்லது 'மீண்டும் கேளுங்கள்' போன்ற கூடுதல் பதில் விருப்பங்களை நீங்கள் கொடுக்க முடியுமா?\n" + story_text: "முந்தைய நிலைகளில் நீங்கள் உங்கள் முதல் அதிர்ச்டம் சொல்லும் இயந்திரத்தை உருவாக்கியுள்ளீர்கள், ஆனால் எடி உண்மையில் எதையும் கணிக்க முடியவில்லை, `{echo}` மட்டுமே.\n இந்த மட்டத்தில் நீங்கள் ஒரு மாறியையும் {at {{at} `கட்டளையையும் பயன்படுத்தலாம். உதாரணமாக இந்த குறியீட்டைப் பாருங்கள்:\n" + 7: + example_code: "`` `\n {print} 'எனக்கு மேசிக் இதழ்களுடன் ஒரு மலர் உள்ளது'\n {print} 'நீங்கள் இதழ்களைத் தேர்ந்தெடுத்தால், உங்கள் ஈர்ப்பு உங்களை மீண்டும் நேசிக்கிறதா என்று மலர் சொல்லும்'\n தொகை = {ask} 'நீங்கள் எத்தனை இதழ்களை எடுக்க விரும்புகிறீர்கள்?'\n விருப்பங்கள் = அவர்கள் உன்னை நேசிக்கிறார்கள், அவர்கள் உன்னை நேசிக்கவில்லை\n _ _ _ _ விருப்பங்கள் {at} {random}\n `` `\n" + story_text: "### உடற்பயிற்சி\n உங்கள் ஈர்ப்பு உங்களை மீண்டும் நேசிக்கிறதா இல்லையா என்பதைச் சொல்லும் இந்த திட்டத்தை முடிக்கவும்.\n" + 8: + example_code: "`` `\n {print} 'நான் அதிர்ச்டம் சொல்பவர்!'\n {print} 'நீங்கள் என்னிடம் 3 கேள்விகளைக் கேட்கலாம்.'\n பதில்கள் = ஆம், இல்லை, ஒருவேளை\n _ _ _\n கேள்வி = {ask} 'நீங்கள் என்ன தெரிந்து கொள்ள விரும்புகிறீர்கள்?'\n {print} கேள்வி\n {sleep}\n {print} 'என் படிக பந்து சொல்கிறது ...' பதில்கள் {at} {random}\n `` `\n" + story_text: "அடுத்த எடுத்துக்காட்டில், உங்கள் அதிர்ச்ட சொல்பவர் பல கேள்விகளைக் கேட்கலாம், மேலும் அவற்றை அச்சிடலாம்!\n\n ### உடற்பயிற்சி\n வெற்றிடங்களில் சரியான கட்டளையை நிரப்ப முடியுமா?\n" + 4: + story_text: "### உடற்பயிற்சி\n இந்த எடுத்துக்காட்டு குறியீட்டிலிருந்து அனைத்து மேற்கோள் குறிகளையும் நாங்கள் அகற்றியுள்ளோம், அவற்றை சரியான இடங்களில் சேர்க்க முடியுமா?\n\n ### உடற்பயிற்சி 2\n முந்தைய நிலைக்குச் சென்று உங்கள் பார்ச்சூன் டெல்லர் குறியீட்டை நகலெடுக்கவும். சரியான இடங்களில் மேற்கோள் குறிகளைச் சேர்ப்பதன் மூலம் குறியீட்டை இந்த மட்டத்தில் செயல்படுத்தவும்.\n" + example_code: "`` `\n _ இந்த குறியீட்டில் மேற்கோள் குறிகளைச் சேர்க்கவும் _\n {print} im hedy the barchune!\n கேள்வி {is {is} நீங்கள் என்ன தெரிந்து கொள்ள விரும்புகிறீர்கள்?\n {ask} இது உங்கள் கேள்வி: கேள்வி\n பதில்கள் {print} ஆம், இல்லை, ஒருவேளை\n {is} என் படிக பந்து கூறுகிறது ...\n {print} 2\n {sleep} பதில்கள் {print} {at}\n `` `\n" + 6: + story_text: "இந்த மட்டத்தில் நீங்கள் ஒரு அதிர்ச்ட சொல்பவராக உங்கள் கணிப்புகளில் கணிதத்தைப் பயன்படுத்தலாம். எதிர்காலத்தைக் கணக்கிட (வேடிக்கையான) சூத்திரங்களை உருவாக்க இது உங்களை அனுமதிக்கிறது.\n எடுத்துக்காட்டாக, நீங்கள் எவ்வளவு பணக்காரர்களைப் பெறுவீர்கள் அல்லது நீங்கள் வளரும்போது எத்தனை குழந்தைகள் இருப்பார்கள் என்பதைக் கணக்கிடலாம்.\n\n\n\n ### உடற்பயிற்சி\n உங்கள் சொந்த (வேடிக்கையான) அதிர்ச்டம் சொல்லும் இயந்திரத்தைப் பற்றி யோசிக்க முடியுமா?\n" + example_code: "`` `\n {print} 'நான் அதிர்ச்டம் சொல்பவர்!'\n {print} 'நீங்கள் வளரும்போது எத்தனை குழந்தைகளைப் பெறுவீர்கள் என்பதை என்னால் கணிக்க முடியும்!'\n அகவை = {ask} 'உங்களுக்கு எவ்வளவு வயது?'\n உடன்பிறப்புகள் = {ask} 'உங்களிடம் எத்தனை உடன்பிறப்புகள் உள்ளனர்?'\n நீளம் = {ask} 'நீங்கள் சென்டிமீட்டரில் எவ்வளவு உயரமாக இருக்கிறீர்கள்?'\n குழந்தைகள் = நீளம் / அகவை\n குழந்தைகள் = குழந்தைகள் - உடன்பிறப்புகள்\n {print} 'நீங்கள் பெறுவீர்கள் ...'\n {sleep}\n {print} குழந்தைகளின் குழந்தைகள்! '\n `` `\n" + 10: + story_text: "இந்த மட்டத்தில் நீங்கள் விளையாட்டு மேச் (மாளிகை, அபார்ட்மென்ட், சேக், அவுச்) எவ்வாறு நிரல் செய்வது என்பதை நீங்கள் கற்றுக்கொள்வீர்கள். இந்த விளையாட்டில் நீங்கள் எல்லா வீரர்களுக்கும் ஒரே நேரத்தில் கணிக்க முடியும், அவர்களின் எதிர்காலம் எப்படி இருக்கும்.\n\n ### உடற்பயிற்சி\n இந்த நிலையை நீங்கள் கற்றுக்கொண்ட புதிய கட்டளையைப் பயன்படுத்துவதன் மூலம் வெற்றிடங்களில் ஃபில்.\n" + example_code: "`` `\n வீடுகள் = மாளிகை, அபார்ட்மெண்ட், சேக், வீடு\n நேசிக்கிறார் = யாரும், ஒரு அரச, அவர்களின் அண்டை, அவர்களின் உண்மையான காதல்\n செல்லப்பிராணிகள் = நாய், பூனை, யானை\n பெயர்கள் = சென்னா, ரியான், சிம்\n _\n {print} பெயர் 'ஒரு' வீடுகளில் வாழ்கிறது {at {{at}\n {random} பெயர் 'திருமணம்' நேசிக்கிறது {at {{print}\n {at} பெயர் 'ஒரு' செல்லப்பிராணிகளை {at {{random} 'இல் அவர்களின் செல்லப்பிராணியாகப் பெறும்.'\n {print}\n `` `\n" + 5: + example_code: "`` `\n நண்பர்கள் {ask} சோர்டான், லூசி, டேவ்\n {print} 'நீங்கள் நாளை லாட்டரியை வெல்வீர்களா என்பதை என்னால் கணிக்க முடியும்!'\n நபர் {{{is} 'நீங்கள் யார்?'\n good_answer {is} அவசரம்! நீங்கள் வெல்வீர்கள் !, நீங்கள் நிச்சயமாக வெல்வீர்கள் !, எங்களுக்கு ஒரு வெற்றியாளர் இருக்கிறார்!\n bad_answer {is} துரதிர்ச்டம்! மீண்டும் முயற்சிக்கவும் !, மற்றொரு நபர் வெல்வார், நீங்கள் இழக்கிறீர்கள்!\n {is} நபர் {if} நண்பர்களில் {in} good_answer {else} {print}\n {random} {print} bad_answer {at} {at}\n `` `\n" + story_text: "### உடற்பயிற்சி\n எடுத்துக்காட்டு குறியீட்டில், உங்களுக்கு ஆதரவாக முரண்பாடுகளைத் தூண்ட அனுமதிக்கும் ஒரு அதிர்ச்ட சொல்பவர் நிரலை எவ்வாறு உருவாக்குவது என்பதை நீங்கள் காண்கிறீர்கள். இந்த மோசடி திட்டம் நீங்கள் லாட்டரியை வெல்வீர்கள் என்று எப்போதும் உங்களுக்குக் கூறுகிறது, ஆனால் உங்கள் நண்பர்கள் ஒருபோதும் வெல்ல மாட்டார்கள்.\n\n உங்கள் சொந்த நிரலை உருவாக்க இதைப் பயன்படுத்தவும், ஆக்கப்பூர்வமாக இருங்கள்! எடுத்துக்காட்டாக, அதைக் கணிக்கும் ஒரு குறியீட்டை நீங்கள் உருவாக்கலாம்:\n * உங்களுக்கு பிடித்த விளையாட்டு அணி அனைத்து போட்டியாளர்களையும் வெல்லும்!\n * உங்களுக்கு பிடித்த படம் திரைப்பட இரவுக்கு தேர்வு செய்யப்படும்!\n * உங்களுக்கு பிடித்த நிகழ்ச்சிக்கு டிக்கெட்டுகளை வெல்வீர்கள்!\n * ச்னோ ஒயிட்டின் மேசிக் கண்ணாடியைப் போல நீங்கள் அனைவருமே மிகச்சிறந்தவர்கள்.\n உங்கள் கற்பனை வேலை செய்யட்டும்!\n\n உங்கள் நிரல் குறைந்தது 10 வரிகள் குறியீட்டில் இருக்க வேண்டும், மேலும் குறைந்தது ஒரு `{if}` மற்றும் `{else}` கட்டளை இருக்க வேண்டும்.\n" + name: அதிர்ச்டம் சொல்பவர் + default_save_name: அதிர்ச்டம் சொல்பவர் + description: எடி எதிர்காலத்தை கணிக்கட்டும் + hangman: + name: ஏங்மேன் + default_save_name: ஏங்மேன் + description: வார்த்தையை யூகிக்கவும் + levels: + 17: + story_text: "இந்த சாகசத்தில் நாங்கள் ஏங்மேனின் விளையாட்டை நிரல் செய்கிறோம். முதலில் நாங்கள் சில தயாரிப்புகளைச் செய்கிறோம், பின்னர் நாங்கள் விளையாட்டை நிரல் செய்கிறோம், மூன்றாவது பகுதியில் ஆமைடன் ஒரு வரைபடத்தை சேர்க்கிறோம்.\n\n ### உடற்பயிற்சி\n *** மாறிகளை அமைக்கவும் *** இந்த ஆங்க்மேனின் இந்த விளையாட்டில், பிளேயர் 1 ஒரு பதிலைத் தேர்வுசெய்கிறது மற்றும் பிளேயர் 2 இந்த பதிலில் உள்ள கடிதங்களை யூகிக்க வேண்டும்.\n வார்த்தையில் உள்ள அனைத்து எழுத்துக்களையும் கணினிக்கு தெரியப்படுத்த, பதிலை கடிதங்களின் பட்டியலாக மாற்றுவோம். பிளேயர் 2 செய்யும் யூகங்களுடனும் இதைச் செய்கிறோம்.\n 2 வெற்று பட்டியல்களுடன் விளையாட்டைத் தொடங்குவோம். உங்களுக்கான மாறி பதிலுக்கான வெற்று பட்டியலை நாங்கள் செய்துள்ளோம். இப்போது Youred_letters க்கும் ஒரு வெற்று பட்டியலை உருவாக்கவும்.\n எத்தனை தவறுகள் செய்யப்பட்டன என்பதை நாங்கள் நிரப்புகிறோம். விளையாட்டின் தொடக்கத்தில், இது 0 ஆக இருக்க வேண்டும்.\n `தொகை_பட்டைகள்` மாறி பதிலில் எத்தனை கடிதங்கள் உள்ளன என்பதை நமக்குக் கூறுகிறது. அவர்களின் வார்த்தைக்கு எத்தனை கடிதங்கள் உள்ளன என்பதை எங்களிடம் சொல்ல பிளேயர் 1 ஐக் கேளுங்கள்.\n கடைசியாக விளையாட்டு முடிந்தால் கணினிக்குச் சொல்கிறோம். நாங்கள் `கேம்_ஓவர்` என்ற மாறியைப் பயன்படுத்துகிறோம், அதை` தவறான 'ஆக அமைத்தோம்.\n\n *** பதிலைத் தேர்ந்தெடுப்பது *** பிளேயர் 1 பதிலைத் தேர்வு செய்ய முடியும் என்று நாங்கள் விரும்புகிறோம். அடுத்த கடிதம் என்ன என்பதை நாங்கள் அவர்களிடம் கேட்போம்.\n அந்த கடிதத்தை பதிலில் சேர்க்கிறோம். கடைசியாக, யூகிக்கப்பட்ட கடிதங்களின் பட்டியலில் ஒரு வெற்று _ ஐச் சேர்க்கிறோம், எனவே பதிலில் கடிதங்கள் இருப்பதால் பல _ களைப் பெறுகிறோம்.\n\n *** பிளேயர் 2 இன் முறை ***\n பிளேயர் 2 ஐ அவர்களின் முறை சொல்லுங்கள். பதிலில் எத்தனை கடிதங்கள் உள்ளன என்று பிளேயர் 2 சொல்லுங்கள். இறுதியாக, `Youred_letters` இன் பட்டியலை அச்சிடுக.\n\n *** அடுத்த சாகசத்திற்குச் செல்லுங்கள் *** இப்போது அனைத்து தொடக்க மாறிகளும் அமைக்கப்பட்டிருப்பதால், விளையாட்டிலேயே நிரலாக்கத் தொடங்கலாம். எப்படி என்பதை அறிய அடுத்த தாவலைப் பாருங்கள்!\n" + example_code: "`` `\n 'ஏங்மேன்!'\n\n # மாறிகள் அமைக்கவும்\n பதில் = []\n யூகிக்க_பட்டர்ச் = _\n தவறுகள்_மேட் = _\n தொகை_பட்டைகள் = {ask} _\n _ = 'பொய்'\n\n # பதிலைத் தேர்ந்தெடுப்பது\n } for} _\n கடிதம் = {for} 'பிளேயர் 1,' நான் 'என்ற எழுத்து என்றால் என்ன?'\n _\n {} _ '{ask} _ சேர்க்கவும்\n\n # பிளேயர் 2 திருப்பம்\n அச்சிடுக _\n அச்சிடுக _\n யூகிக்கப்பட்ட_டெட்டர்களை அச்சிடுக\n `` `\n" + functions: + levels: + 18: + example_code: "`` `\n {def} calculate_score (பதில், சரியான_அன்வெர்):\n {if} பதில் == சரியான_அன்வெர்:\n மதிப்பெண் = 1\n {elif} பதில் == '?':\n மதிப்பெண் = 0\n {else}:\n ச்கோர் = -1\n {return} மதிப்பெண்\n\n பதில் = {input} ('ஈபிள் கோபுரத்தை எங்கே காணலாம்?')\n சரியான_அன்வெர் = 'பாரிச்'\n மதிப்பெண் = கால்சுலேட்_ச்கோர் (பதில், சரியான_அன்வெர்)\n {print} ('உங்கள் மதிப்பெண் ...', மதிப்பெண்)\n `` `\n" + story_text: "செயல்பாடுகளை பைதான் வழியை உருவாக்குவோம்! ஒரு செயல்பாட்டை வரையறுக்க, நாங்கள் இனி பயன்படுத்த மாட்டோம்:\n\n } name_1, வாதம்_2: `உடன்} name_function {வரையறுக்கவும்\n\n ஆனால் நாங்கள் பயன்படுத்துகிறோம்:\n\n `{define} name_function (arguct_1, argume_2):`.\n\n\n நீங்கள் வாதங்களைப் பயன்படுத்த விரும்பவில்லை என்றால், பரந்தச்களுக்கு இடையில் இடத்தை காலியாக விட்டுவிடுவீர்கள்.\n ஒரு செயல்பாட்டை அழைக்க, எங்களுக்கு இனி `{with}` கட்டளை தேவையில்லை. நீங்கள் செயல்பாட்டின் பெயரைத் தட்டச்சு செய்க.\n" + 14: + example_code: "`` `\n {define} calculate_new_price {} அளவு, சதவீதத்துடன்\n விழுக்காடு = விழுக்காடு / 100\n தள்ளுபடி_எமவுண்ட் = தொகை * விழுக்காடு\n {ask} தொகை - தள்ளுபடி_மவுண்ட்\n\n old_price = {return} 'விலைக் குறியில் எவ்வளவு?'\n தள்ளுபடி = {ask} 'தள்ளுபடி என்ன சதவீதம்?'\n\n புதிய_பிரை = _ calculate_new_price {with} old_price, _\n {with} 'புதிய விலை' புதிய_பிரை 'டாலர்'\n `` `\n" + story_text: "முந்தைய நிலைகளில் நீங்கள் செயல்பாடுகளை உருவாக்கவும் அவற்றுடன் வாதங்களைப் பயன்படுத்தவும் கற்றுக்கொண்டீர்கள். ஒரு செயல்பாட்டின் மற்றொரு சிறந்த பயன்பாடு உங்களுக்காக ஏதாவது கணக்கிட அனுமதிப்பது.\n நீங்கள் செயல்பாட்டிற்கு ஒரு கணக்கீட்டைக் கொடுக்கலாம், மேலும் இது கணக்கீட்டின் பதிலை உங்களுக்கு வழங்கும். இந்த பதில் ** வருவாய் மதிப்பு ** என்று அழைக்கப்படுகிறது.\n\n எடுத்துக்காட்டாக, இந்த குறியீட்டில் Calculate_new_price செயல்பாடு எந்தவொரு பொருளின் புதிய விலையையும் கணக்கிடும். இது புதிய விலையை வருவாய் மதிப்பாக வழங்கும்.\n\n ### உடற்பயிற்சி\n இந்த குறியீட்டை முடிக்கவும். உங்களுக்காக மாறியை நாங்கள் ஏற்கனவே செய்துள்ளோம், நீங்கள் அதை மட்டுமே அமைக்க வேண்டும்.\n புதிய விலையை கணக்கிடும் செயல்பாட்டை அழைப்பதன் மூலம் குறியீட்டின் வரியை முடிக்க வேண்டும்.\n" + 13: + example_code: "`` `\n {} பாடலுடன்} tice ஐ வரையறுக்கவும்\n {define} 'என் போனி' இடத்திற்கு மேல் உள்ளது\n\n {print} பாடல் {with} 'கடல்'\n {call} பாடல் {} 'கடல்'\n {with} பாடல் {'கடல்'\n `` `\n" + story_text: "செயல்பாடுகளை எவ்வாறு பயன்படுத்துவது என்பதை இப்போது நீங்கள் கற்றுக்கொண்டீர்கள், ஒரு வாதத்துடன் ஒரு செயல்பாட்டை எவ்வாறு பயன்படுத்துவது என்பதை நீங்கள் கற்றுக் கொள்வீர்கள்.\n ஒரு ** உரையாடல் ** என்பது ஒரு செயல்பாட்டிற்குள் பயன்படுத்தப்படும் ஒரு மாறி. இது செயல்பாட்டிற்கு வெளியே பயன்படுத்தப்படவில்லை.\n\n எடுத்துக்காட்டாக, இந்த குறியீட்டில் 'மை போனி இச் ஓவர் தி ஓசியன்' பாடலின் முதல் வசனத்தை நாங்கள் திட்டமிடினோம்.\n இந்த எடுத்துக்காட்டு குறியீட்டில் 'இடம்' என்ற உரையாடல் பயன்படுத்தப்படுகிறது. இடம் என்பது செயல்பாட்டில் மட்டுமே பயன்படுத்தப்படும் ஒரு மாறி, எனவே ஒரு வாதம்.\n 'இடத்தை' பயன்படுத்த, `{tise` உடன்` {with} பாடலுக்குப் பிறகு {உடன் வைத்திருக்கிறோம்.\n செயல்பாடு அழைக்கப்படும்போது, கணினி 'இடத்தை' என்ற வாதத்தை மாற்றும், {define} பாடல் {with உடன் உரையின் துண்டுடன்.\n\n ### உடற்பயிற்சி\n இந்த பாடலின் அடுத்த உரையாடல் செல்கிறது:\n\n `` `not_hedy_code\n நேற்று இரவு நான் என் தலையணையில் படுத்துக் கொண்டேன்\n நேற்று இரவு நான் படுக்கையில் படுத்துக் கொண்டேன்\n நேற்று இரவு நான் என் தலையணையில் படுத்துக் கொண்டேன்\n என் போனி இறந்துவிட்டார் என்று கனவு கண்டேன்\n `` `\n\n இந்த வசனத்தை உதாரணத்தைப் போலவே நிரல் செய்ய முடியுமா?\n" + 12: + story_text: "இந்த மட்டத்தில் ** செயல்பாடுகளை எவ்வாறு பயன்படுத்துவது என்பதை நீங்கள் கற்றுக் கொள்வீர்கள் **. ஒரு செயல்பாடு என்பது நீங்கள் பல முறை எளிதாகப் பயன்படுத்தக்கூடிய குறியீட்டின் தொகுதி. செயல்பாடுகளைப் பயன்படுத்துவது மீண்டும் மீண்டும் பயன்படுத்தக்கூடிய குறியீட்டின் துண்டுகளை ஒழுங்கமைக்க உதவுகிறது.\n ஒரு செயல்பாட்டை உருவாக்க, `{define}` மற்றும் செயல்பாட்டிற்கு ஒரு பெயரைக் கொடுங்கள். பின்னர் நீங்கள் விரும்பும் அனைத்து வரிகளையும் `{define}` வரியின் கீழ் உள்தள்ளப்பட்ட தொகுதியில் வைக்கவும்.\n உங்கள் குறியீட்டில் ஒரு வெற்று வரியை அழகாகவும் சுத்தமாகவும் பார்க்க விடுங்கள். பெரிய வேலை! நீங்கள் ஒரு செயல்பாட்டை உருவாக்கியுள்ளீர்கள்!\n\n இப்போது, அந்த குறியீட்டின் தொகுதி நமக்குத் தேவைப்படும்போதெல்லாம், அதை அழைக்க செயல்பாட்டின் பெயருடன் {call} ஐப் பயன்படுத்துகிறோம்! அந்த குறியீட்டின் தொகுதியை நாங்கள் மீண்டும் தட்டச்சு செய்ய வேண்டியதில்லை.\n\n ட்விச்டரின் விளையாட்டின் இந்த எடுத்துக்காட்டு குறியீட்டைப் பாருங்கள். 'டர்ன்' செயல்பாட்டில் குறியீட்டின் ஒரு தொகுதி உள்ளது, அது எந்த மூட்டு எங்கு செல்ல வேண்டும் என்பதைத் தேர்வுசெய்கிறது.\n\n ### உடற்பயிற்சி\n தேர்ந்தெடுக்கப்பட்ட மற்றும் தேர்ந்தெடுக்கப்பட்ட 2 மாறிகளை அமைப்பதன் மூலம் இந்த குறியீட்டை முடிக்கவும்.\n பின்னர், ட்விச்டர் ச்பின்னருக்கு ஒரு சுழற்சியைக் கொடுக்க எத்தனை முறை செயல்பாட்டை அழைக்க விரும்புகிறீர்கள் என்பதைத் தேர்வுசெய்க.\n\n ### உடற்பயிற்சி 2\n 'மக்கள்' என்று அழைக்கப்படும் மாறியைச் சேர்ப்பதன் மூலம் உங்கள் குறியீட்டை மேம்படுத்தவும். எல்லா வீரர்களுக்கும் விளையாட்டில் தங்கள் சொந்த கட்டளையை வழங்க மாறியைப் பயன்படுத்தவும்.\n உதாரணமாக: 'அகமது, பச்சை நிறத்தில் வலது கை' அல்லது 'செசிகா, மஞ்சள் நிறத்தில் இடது கால்'.\n" + example_code: "`` `\n பக்கங்கள் = 'இடது', 'வலது'\n கைகால்கள் = 'கை', 'கால்'\n வண்ணங்கள் = 'சிவப்பு', 'நீலம்', 'பச்சை', 'மஞ்சள்'\n\n {define} திரும்பவும்\n தேர்ந்தெடுக்கப்பட்ட_சைட் = பக்கங்கள் {at {{at}\n தேர்ந்தெடுக்கப்பட்ட_ஐஎல்எல்பி = கைகால்கள் _\n தேர்ந்தெடுக்கப்பட்ட_கோலர் = வண்ணங்கள் _\n {random} தேர்ந்தெடுக்கப்பட்ட_சைட் '' தேர்ந்தெடுக்கப்பட்ட_கோலர் '\n\n {print} 'ட்விச்டரின் விளையாட்டை விளையாட அனுமதிக்கிறது!'\n {print} i {for} {in} 1 {range} _\n {to} திரும்பவும்\n {call} 2\n `` `\n" + default_save_name: செயல்பாடுகள் + name: செயல்பாடுகள் + description: செயல்பாடுகள் + hangman_2: + description: ஏங்மேன் 2 + default_save_name: ஏங்மேன்_2 + name: ஏங்மேன் 2 + levels: + 17: + example_code: "`` `\n # உங்கள் குறியீட்டை இங்கே ஒட்டவும்\n\n # விளையாட்டு\n } போது} கேம்_ஓவர் _\n உய்த்துணர்தல் = _\n {while} _\n {print} i {for} {in} 1 {range} தொகை_பூட்டர்கள்:\n பதில் என்றால் [i] == யூகிக்க:\n Youred_letters [i] = யூக\n {to} _\n {print} youred_letters == _:\n {if} _\n game_over = _\n {print}:\n {else} _\n தவறுகள்_மேட் _\n {if} _ == 10:\n {if} _\n {print} _\n _\n `` `\n" + story_text: "இப்போது ஏங்மேன் விளையாட்டை நிரல் செய்ய வேண்டிய நேரம் வந்துவிட்டது.\n\n ### உடற்பயிற்சி\n\n *** உங்கள் குறியீட்டை ஒட்டவும் *** முந்தைய சாகசத்திலிருந்து உங்கள் குறியீட்டை நகலெடுத்து நிரலாக்க புலத்தில் குறியீட்டை ஒட்டவும்.\n\n *** விளையாட்டு *** பிளேயர் 2 விளையாட்டு முடிந்த வரை இந்த விளையாட்டுகள் தொடர்ந்து விளையாடுகின்றன. அதற்கேற்ப கட்டளையை நிரப்பவும். இப்போது, பிளேயர் 2 ஒரு கடிதத்தை யூகிக்க அனுமதிக்கப்படுகிறது, எனவே ஒரு கடிதத்தை யூகிக்க பிளேயர் 2 ஐக் கேளுங்கள்.\n அவர்களின் பதில் சரியானதா என்பதை நாம் சரிபார்க்க வேண்டும், எனவே (பட்டியல்) `பதில்` இல் அவர்களின்` யூகம்` (எங்காவது) இருக்கிறதா என்று சரிபார்க்கவும். கடிதம் (கள்) உய்த்துணர்தல் எது என்பதை கணினி கண்டுபிடிக்க அனுமதிக்கிறோம். உங்களுக்காக அந்த பகுதியை நாங்கள் ஏற்கனவே திட்டமிடியுள்ளோம்.\n அடுத்து சரியான கடிதத்தைக் கண்டறிந்ததற்காக பிளேயரைப் பாராட்ட விரும்புகிறோம், மேலும் `யூகிக்கப்பட்ட_டெட்டர்கள்` பட்டியலை அச்சிட விரும்புகிறோம், எனவே வீரர் அவர்களின் முன்னேற்றத்தைக் காணலாம்.\n\n நாங்கள் நிரல் செய்யப் போகும் அடுத்த பகுதி, வீரர் அனைத்து கடிதங்களையும் யூகிக்கும்போது என்ன நடக்கும். ஆகவே, அவர்களின் `யூகிக்கப்பட்ட_பட்டர்ச்` இன் பட்டியல் எங்கள் பட்டியல்` பதில்` க்கு சமமாக இருந்தால்.\n பட்டியல்கள் ஒரே மாதிரியாக இருந்தால், பிளேயர் 2 ஐ அவர்களின் வெற்றியுடன் வாழ்த்தி, `கேம்_ஓவர்` மாறியை` உண்மை` என அமைக்கவும்.\n\n அடுத்து பிளேயர் 2 தவறாக யூகிக்கும்போது என்ன நடக்கும் என்று நிரல் செய்வோம் (எனவே `{else}` கட்டளை). முதலில், வீரரிடம் தங்கள் உய்த்துணர்தல் தவறு என்று சொல்லுங்கள். பின்னர் `தவறுகள்_மேட்` மாறியை 1 ஆல் அதிகரிக்கவும்.\n\n கடைசி பகுதிக்கு பிளேயர் 2 10 தவறுகளைச் செய்தால் என்ன நடக்கும் என்பதை நாங்கள் திட்டமிடுவோம். பிளேயர் 1 விளையாட்டை வென்றதாக அச்சிடுவோம். சரியான பதிலை அச்சிடுவோம். இறுதியாக, எங்கள் `கேம்_ஓவர்` மாறியை` உண்மை` என்று அமைப்போம், எனவே விளையாட்டு நிறுத்தப்படும்.\n\n *** அடுத்த சாகசத்திற்குச் செல்லுங்கள் *** அற்புதமான வேலை! உங்கள் விளையாட்டு விளையாடக்கூடியது, ஆனால் பிளேயர் 2 தவறு செய்யும் போது ஏங்மேன் உண்மையில் வரையப்பட்டால் அது வேடிக்கையாக இருக்காது ..?\n" + hangman_3: + name: ஏங்மேன் 3 + default_save_name: ஏங்மேன்_3 + description: ஏங்மேன் 3 + levels: + 17: + example_code: "`` `\n # ஏங்மேனை ஈர்க்கும் ஒரு செயல்பாட்டை உருவாக்கவும்\n {define} draw_hangman {with} படி:\n {if} படி == 1:\n {color} வெள்ளை\n {forward} -100\n {turn} 90\n {forward} -50\n {color} கருப்பு\n {forward} 100\n {forward} -50\n\n } if} படி == 2:\n _\n # உங்கள் ஏங்மேன் விளையாட்டை இங்கே ஒட்டவும்\n\n `` `\n" + story_text: "ஒவ்வொரு முறையும் தவறு செய்யப்படும்போது, ஏங்மேனின் ஒரு பகுதியை வரைவதன் மூலம் ஏங்மேன் விளையாட்டில் தவறுகள் காண்பிக்கப்படுகின்றன.\n நாங்கள் இப்போது அந்த வரைபடங்களை எங்கள் ஆமைடன் சேர்க்கிறோம்!\n\n ### உடற்பயிற்சி\n *** ஏங்மேனை ஈர்க்கும் ஒரு செயல்பாட்டை உருவாக்கவும் *** 10 படிகளில் ஏங்மேனை ஈர்க்கும் ஒரு செயல்பாட்டை உருவாக்கவும். நாங்கள் ஏற்கனவே உங்களுக்காக படி 1 செய்துள்ளோம்.\n\n *** செயல்பாட்டை சோதிக்கவும் *** செயல்பாட்டை 10 உடன் அழைப்பதன் மூலம் செயல்பாட்டை சோதிக்கவும். செயல்பாட்டில் நீங்கள் மகிழ்ச்சியாக இருந்தால், இப்போது செயல்பாட்டை அழைக்கும் வரியை அகற்று. வீரர் தவறு செய்யும் போது செயல்பாட்டை அழைப்போம்.\n\n *** உங்கள் செயல்பாட்டின் கீழ் உங்கள் ஏங்மேன் விளையாட்டை ஒட்டவும் *** முந்தைய சாகசத்திற்குச் சென்று உங்கள் ஏங்மேன் விளையாட்டை நகலெடுக்கவும். உங்கள் செயல்பாட்டின் அடியில் விளையாட்டை ஒட்டவும்.\n\n *** `தவறுகள்_மேட் = தவறுகள்_மேட் + 1` என்ற வரியின் கீழ் பிளேயர் தவறு செய்யும்போது செயல்பாட்டை அழைக்கவும். வீரர் தவறுகளைச் செய்ததைப் போலவே ஆமை அதே அளவிலான படிகளை எடுக்க வேண்டும் என்று நாங்கள் விரும்புகிறோம், எனவே செயல்பாட்டை `தவறுகள்_மேட்` உடன் வாதமாக அழைக்கிறோம்.\n\n *** உங்கள் விளையாட்டை அனுபவிக்கவும்! ***\n
\n ஏங்மேன் இதைப் போல இருக்க முடியும் \n" + harry_potter: + name: ஆரி பாட்டர் + default_save_name: ஆரி பாட்டர் + description: ஆரி பாட்டர் அட்வென்ச்சர்ச் + levels: + 10: + story_text: "### உடற்பயிற்சி\n நாம் ஒரு ஆரி பாட்டர் கருப்பொருள் அதிர்ச்ட சொல்பவர் செய்ய முடியும். 9 கோடுகள் அச்சிடப்படும் வெற்றிடங்களை நிரப்பவும்.\n ** கூடுதல் ** உங்களுக்கு பிடித்த நூல், திரைப்படம் அல்லது தொலைக்காட்சி நிகழ்ச்சி போன்ற பார்ச்சூன் சொல்பரின் கருப்பொருளை வேறு ஏதாவது மாற்றவும்.\n" + example_code: "`` `\n வீடுகள் = க்ரிஃபிண்டோர், ச்லிதரின், அஃப்ல்பஃப், ராவென்க்லா\n பாடங்கள் = போசன்கள், இருண்ட கலைகளுக்கு எதிரான பாதுகாப்பு, வசீகரம், உருமாற்றம்\n அச்சங்கள் = வோல்ட்மார்ட், சிலந்திகள், உங்கள் ஆந்தை சோதனையில் தோல்வி\n பெயர்கள் = ஆரி, ரான், எர்மியோன்\n _\n _ {at} பெயர் '' வீடுகளில் {{{at} இல் வைக்கப்படுகிறது\n _ {random} பெயர் '' பாடங்களில் {{{print} இல் சிறந்தது\n _ {print} பெயரின் மிகப் பெரிய அச்சம் 'அச்சங்கள் {at {{random}\n `` `\n" + haunted: + name: பேய் வீடு + default_save_name: பேய் வீடு + description: பேய் வீட்டிலிருந்து தப்பிக்க + levels: + 11: + example_code: "`` `\n {print} 'பேய் வீட்டிலிருந்து தப்பிக்கவும்!'\n அரக்கர்கள் = சாம்பி, காட்டேரி, மாபெரும் சிலந்தி\n _\n {print} 'அறை' i\n அரக்கன் = அரக்கர்கள் {at} {random}\n `` `\n" + story_text: "இந்த மட்டத்தில் நாங்கள் `{for}` கட்டளையை மாற்றியுள்ளோம், எனவே பிளேயருக்கு அவர்கள் எங்கிருக்கிறார்கள் என்று சொல்ல முடியும்.\n\n ### உடற்பயிற்சி 1\n நிரலை முடிக்கவும், அதனால் அவர்கள் எந்த அறையில் இருக்கிறார்கள் என்பது வீரருக்குத் தெரியும்.\n\n ### உடற்பயிற்சி 2\n இந்த படிகளைப் பின்பற்றுவதன் மூலம் நிரலை ஒரு சாகசமாக மாற்றவும்:\n\n 1. தேர்வுகளின் பட்டியலை உருவாக்கவும் (போன்றது: சண்டை அல்லது விமானம்)\n 2. பிளேயர் `{ask}` உடன் ஒரு விருப்பத்தைத் தேர்வு செய்யலாம் என்பதை உறுதிப்படுத்திக் கொள்ளுங்கள்\n 3. பதில் சரியானதா? பின்னர் அவர்கள் அடுத்த அரக்கனுக்கு செல்லலாம். அவர்கள் தவறான பதிலைக் கொடுக்கிறார்களா? `{print}` உடன் வீரருக்கு தெரியப்படுத்துங்கள்.\n\n ** கூடுதல் ** நீங்கள் தவறான தேர்வு செய்தால், ஒரு அரக்கன் இன்னும் காட்டப்பட்டுள்ளது! அதை எவ்வாறு மாற்ற முடியும்?\n" + 2: + story_text_2: "### உடற்பயிற்சி\n அரக்கர்களுக்கு மேலே உள்ள எடுத்துக்காட்டில் முன்னரே தீர்மானிக்கப்படுகிறது. எனவே ஒவ்வொரு முறையும் உங்கள் குறியீட்டை இயக்கும்போது, வெளியீடு ஒன்றுதான்.\n பேய் வீட்டை ஊடாடச் செய்ய `{கேளுங்கள்` கட்டளைகளைச் சேர்க்க முடியுமா, வீரர்கள் அவர்கள் சந்திக்கும் அரக்கர்களைத் தேர்வு செய்ய முடியுமா?\n" + example_code_2: "`` `\n monster_1 {is} _\n monster_2 {is} _\n monster_3 {is} _\n {print} நீங்கள் பேய் வீட்டிற்குள் நுழைகிறீர்கள்.\n {print} திடீரென்று நீங்கள் ஒரு அசுரன்_1 ஐக் காண்கிறீர்கள்\n {print} நீங்கள் மற்ற அறைக்குள் ஓடுகிறீர்கள் ...\n {print} ஆனால் ஒரு அசுரன்_2 உங்களுக்காக அங்கே காத்திருக்கிறது!\n {print} ஓ! விரைவாக சமையலறைக்குச் செல்லுங்கள்.\n {print} ஆனால் நீங்கள் நுழையும் போது அசுரன்_3 உங்களைத் தாக்குகிறது!\n `` `\n" + story_text: "இந்த பேய் வீட்டில் நீங்கள் ஈமோசிகளுடன் உங்கள் அரக்கர்களை தேர்வு செய்யலாம். நிச்சயமாக நீங்கள் சொற்களையும் பயன்படுத்தலாம்.\n" + example_code: "`` `\n monster_1 {is}\n MONSTER_2 {is}\n monster_3 {is}\n {print} நீங்கள் பேய் வீட்டிற்குள் நுழைகிறீர்கள்.\n {print} திடீரென்று நீங்கள் ஒரு அசுரன்_1 ஐக் காண்கிறீர்கள்\n {print} நீங்கள் மற்ற அறைக்குள் ஓடுகிறீர்கள் ...\n {print} ஆனால் ஒரு அசுரன்_2 உங்களுக்காக அங்கே காத்திருக்கிறது!\n {print} ஓ! விரைவாக சமையலறைக்குச் செல்லுங்கள்.\n {print} ஆனால் நீங்கள் நுழையும் போது அசுரன்_3 உங்களைத் தாக்குகிறது!\n `` `\n" + 1: + story_text: "இந்த சாகசத்தில் நீங்கள் ஒரு விளையாட்டை உருவாக்குவதற்கு வேலை செய்கிறீர்கள், அதில் நீங்கள் சரியான கதவைத் தேர்ந்தெடுப்பதன் மூலம் ஒரு பேய் வீட்டிலிருந்து தப்பிக்க வேண்டும்.\n நீங்கள் சரியான கதவைத் தேர்ந்தெடுத்தால் நீங்கள் பிழைப்பீர்கள், ஆனால் இல்லையென்றால் பயங்கரமான அரக்கன் இருக்கலாம் ...\n\n நிலை 1 இல், எங்கள் பேய் வீட்டு விளையாட்டை ஒரு பயங்கரமான கதையை உருவாக்குவதன் மூலம் தொடங்குகிறோம், மேலும் பேய் வீட்டில் அவர்கள் என்ன அரக்கனைப் பார்ப்பார்கள் என்று வீரரிடம் கேளுங்கள்.\n" + story_text_2: "### உடற்பயிற்சி\n மஞ்சள் பொத்தானைக் சொடுக்கு செய்வதன் மூலம் எடுத்துக்காட்டு குறியீட்டை உங்கள் உள்ளீட்டுத் திரையில் நகலெடுக்கவும்.\n இப்போது குறைந்தது 5 வரிகளைச் சேர்ப்பதன் மூலம் கதையை முடிக்கவும்.\n ஒவ்வொரு குறியீடுகளையும் `{print}` கட்டளையுடன் தொடங்க நினைவில் கொள்ளுங்கள்.\n" + example_code: "`` `\n {print} நான் எப்படி இங்கு வந்தேன்?\n {print} பழைய மாளிகைக்கு செல்ல என் நண்பர் என்னிடம் சொன்னது எனக்கு நினைவிருக்கிறது ...\n {print} திடீரென்று எல்லாம் கருப்பு நிறத்தில் சென்றது.\n {print} ஆனால் நான் எப்படி தரையில் முடிந்தது ...?\n {print} என் தலை ஒரு பேச்பால் மட்டையால் தாக்கப்பட்டதைப் போல வலிக்கிறது!\n {print} அந்த ஒலி என்ன?\n {print} ஓ! நான் இந்த வீட்டில் தனியாக இல்லை என்று நினைக்கிறேன்!\n {print} நான் இங்கிருந்து வெளியேற வேண்டும்!\n {print} எனக்கு முன்னால் 3 கதவுகள் உள்ளன ..\n {ask} நான் எந்த கதவை எடுக்க வேண்டும்?\n {echo} நான் கதவைத் தேர்வு செய்கிறேன்\n {print} ...?\n `` `\n" + 3: + example_code: "`` `\n _ பேய் வீட்டிலிருந்து தப்பித்தல்!\n _ உங்களுக்கு முன்னால் 3 கதவுகள் உள்ளன ...\n _ _ _ நீங்கள் எந்த கதவைத் தேர்வு செய்கிறீர்கள்?\n _ நீங்கள் கதவைத் தேர்ந்தெடுத்தீர்கள் ... தேர்வு\n அரக்கர்கள் _ ஒரு சாம்பி, ஒரு காட்டேரி, நீங்கள் தப்பவில்லை\n _ நீங்கள் பார்க்கிறீர்கள் ...\n {sleep}\n _ _ _ _\n `` `\n" + story_text: "முந்தைய நிலைகளில் நீங்கள் உங்கள் பேய் வீட்டு விளையாட்டுக்கு ஒரு அறிமுகம் செய்துள்ளீர்கள், ஆனால் நீங்கள் கவனித்திருக்கலாம், கதை எப்போதும் ஒரு பயங்கரமான முடிவைக் கொண்டிருக்கும்.\n இந்த மட்டத்தில் விளையாட்டின் முடிவை மாற்றுவதன் மூலம் உங்கள் கதையை மேலும் ஊடாடும்; சில நேரங்களில் நீங்கள் சாப்பிடுவீர்கள், சில நேரங்களில் நீங்கள் தப்பிப்பீர்கள்!\n எடி தோராயமாக முடிவு செய்யட்டும்!\n\n ### உடற்பயிற்சி\n எடுத்துக்காட்டு குறியீடுகளை நகலெடுத்து, அதை வேலை செய்ய வெற்றிடங்களை நிரப்பவும்!\n\n ** கூடுதல் ** இந்த கதை மிகவும் நேராக முன்னோக்கி உள்ளது, ஒருவேளை நீங்கள் மிகவும் உற்சாகமான கதையைச் சேர்ப்பதன் மூலம் அதை கொஞ்சம் கொஞ்சமாக பேசலாம்.\n உங்களிடம் இப்போது மிகக் குறைந்த விளைவுகள் உள்ளன, கதவுகளுக்குப் பின்னால் இருப்பதற்கு 3 விருப்பங்கள் மட்டுமே உள்ளன. பட்டியலில் சேர்க்க அதிகமான அரக்கர்களைப் பற்றி நீங்கள் சிந்திக்கலாம்!\n" + 9: + story_text: "இந்த மட்டத்தில் நீங்கள் கூடு கட்டுவதைப் பயன்படுத்தலாம், இது பேய் வீட்டை இன்னும் ஊடாடும் வகையில் மாற்ற அனுமதிக்கிறது!\n\n ### உடற்பயிற்சி\n இப்போது இந்த விளையாட்டை வெல்வது மிகவும் கடினம், நீங்கள் வெல்ல எளிதாக்க முடியுமா?\n உங்கள் குறியீட்டை மாற்றவும், இதனால் ஒரு சரியான கதவு மற்றும் இரண்டு தவறான கதைகளுக்கு பதிலாக ஒரு தவறான கதவு மற்றும் இரண்டு சரியான கதவுகள் மட்டுமே உள்ளனவா?\n உதவிக்குறிப்பு: இதன் பொருள் சரியான_ டூரை தவறான_ டூராக மாற்றுவதோடு, `{if}` மற்றும் `{else}` குறியீட்டை மாற்றவும்.\n நிச்சயமாக நீங்கள் கதையை மாற்றி அதை உங்கள் சொந்தமாக்கலாம். அரக்கர்களை மாற்றவும் அல்லது உங்களுக்கு பரிசு பெறும் இடத்தை மகிழ்ச்சியான விளையாட்டு நிகழ்ச்சியாக மாற்றவும்!\n" + example_code: "`` `\n {random} 'பேய் வீட்டிலிருந்து தப்பிக்கவும்!'\n பிளேயர் = உயிருடன்\n கதவுகள் = 1, 2, 3\n அரக்கர்கள் = சாம்பி, காட்டேரி, மாபெரும் சிலந்தி\n {repeat} 3 {times}\n {print} பிளேயர் {} உயிருடன்\n சரியான_டூர் {is} கதவுகள் {at {{is}\n {at} 'உங்களுக்கு முன்னால் 3 கதவுகள் உள்ளன ...'\n தேர்ந்தெடுக்கப்பட்ட_டூர் = {print} 'நீங்கள் எந்த கதவைத் தேர்வு செய்கிறீர்கள்?'\n {random} தேர்ந்தெடுக்கப்பட்ட_டூர் {ask} சரியான_ டூர்\n {if} 'இங்கே அரக்கர்கள் இல்லை!'\n {is}\n {print} 'நீங்கள் ஒரு' அரக்கர்களால் {{else} இல் சாப்பிடப்படுகிறீர்கள்\n பிளேயர் = இறந்த\n {print}\n {at} 'கேம் ஓவர்'\n {if} பிளேயர் {} உயிருடன்\n {else} 'சிறந்தது! நீங்கள் உயிர் பிழைத்தீர்கள்! '\n `` `\n" + 16: + story_text: "### உடற்பயிற்சி\n இந்த பேய் வீட்டு விளையாட்டு இந்த மட்டத்தில் நீங்கள் பயன்படுத்தக்கூடிய பட்டியல்களுக்கு இடையிலான தொடர்பைப் பயன்படுத்துகிறது.\n எடுத்துக்காட்டாக: சாம்பிக்கு சொந்தமான அனைத்து பண்புகளும் எல்லா பட்டியல்களிலும் முதலாவதாக உள்ளன, விட்ச் செகண்ட் மற்றும் வாம்பயர் மூன்றாவது.\n குறியீட்டைப் பார்த்து `ஆயுதங்கள் [i]`, `அரக்கர்கள் [i]`, `கெட்ட_ஃபேட் [i]`, `குட்_ஃபேட் [i]`, `குறிப்பைக் குறிப்பிடவும் [i]` வேலை!\n" + example_code: "`` `\n எண்கள் = [1, 2, 3]\n i = எண்கள் [{random}]\n குறிப்பு = ['கூச்சலிடும்', 'ஒரு காக்க்லிங் சிரிப்பு', 'படபடத்தல் பேட்விங்ச்']]\n அரக்கர்கள் = ['சோம்பை', 'விட்ச்', 'வாம்பயர்']\n bad_fate = ['உங்கள் மூளை உண்ணப்படுகிறது', 'நீங்கள் எப்போதும் சபிக்கப்பட்டீர்கள்', 'நீங்கள் கடித்தீர்கள்']\n good_fate = ['நீங்கள் ஆம் எறியுங்கள். சாம்பி திசைதிருப்பப்பட்டு அதை சாப்பிடத் தொடங்குகிறது. ',' நீங்கள் திரைச்சீலைகளை தீ வைத்தீர்கள். நெருப்புக்கான பயத்தினால் சூனியக்காரி தப்பி ஓடுகிறார் ',' காட்டேரி பூண்டு வெறுக்கிறது மற்றும் தப்பி ஓடுகிறது ']\n ஆயுதங்கள் = ['ஆம்', 'இலகுவான', 'பூண்டு']\n {print} 'நீங்கள் ஒரு பழைய மாளிகையின் முன் நிற்கிறீர்கள்'\n {print} 'ஏதோ இங்கே சரியாக இல்லை'\n {print} 'நீங்கள் கேட்கிறீர்கள்' _\n {print} 'நீங்கள் அதை ஆராயப் போகிறீர்கள்'\n {print} 'நீங்கள் சமையலறைக்குள் நுழைந்து ஒரு இலகுவான, மூல ஆம் மற்றும் ஒரு பூண்டு ஆகியவற்றைக் காண்க.'\n your_weapon = {ask} 'உங்களுடன் என்ன கொண்டு வருகிறீர்கள்?'\n Your உங்கள் 'உங்கள்_வீப்பன்' உடன் நீங்கள் வாழ்க்கை அறைக்குள் நுழைகிறீர்கள் '\n {print} 'அங்கே நீங்கள் ஒரு' _\n தேவை_வீப்பன் = _\n {print} your_weapon == தேவை_வீப்பன்\n {if} 'உங்கள்' உங்கள்_வீப்பனைப் பயன்படுத்துகிறீர்கள்\n {print} _\n {print} 'நீங்கள் வெல்வீர்கள்!'\n {print}\n {else} 'நீங்கள் தவறான ஆயுதத்தைத் தேர்ந்தெடுத்துள்ளீர்கள் ...'\n {print} _\n {print} 'கேம் ஓவர்'\n `` `\n" + 14: + story_text: "### உடற்பயிற்சி\n இந்த மட்டத்தில் உங்கள் விளையாட்டுக்கு வாழ்க்கையை அறிமுகப்படுத்த `<` <மற்றும் `>` சின்னத்தைப் பயன்படுத்தலாம்.\n தவறான அசுரனைக் காணும்போது வீரர் ஒரு வாழ்க்கையை இழக்கிறார் என்பதையும், உங்களுக்கு உயிர்கள் இல்லாவிட்டால் விளையாட்டு நிறுத்தப்படும் என்பதையும் உறுதிப்படுத்திக் கொள்ளுங்கள்.\n" + example_code: "`` `\n {print} 'பேய் வீட்டிலிருந்து தப்பித்தல்'\n வாழ்க்கை = 3\n கதவுகள் = 1, 2, 3\n அரக்கர்கள் = 'தி விக்கெட் விட்ச்', 'எ சாம்பி', 'ஒரு தூங்கும் 3 தலை நாய்'\n {for} i {in} {range} 1 {to} 10 வரை\n {if} வாழ்ந்தால் _\n good_door = கதவுகள் {at} {random}\n அரக்கன் = அரக்கர்கள் {at} {random}\n தேர்ந்தெடுக்கப்பட்ட_டூர் = {ask} 'நீங்கள் எந்த கதவைத் தேர்வு செய்கிறீர்கள்?'\n {if} good_door == தேர்ந்தெடுக்கப்பட்ட_டூர்\n {print} 'நீங்கள் சரியான கதவைத் தேர்ந்தெடுத்துள்ளீர்கள்'\n {else}\n {print} 'நீங்கள் பார்க்கிறீர்கள் ...' அரக்கன்\n {if} அரக்கன் == 'ஒரு தூங்கும் 3 தலை நாய்'\n {print} 'pffieuw .... அதன் தூக்கம்'\n {else}\n {print} 'நீங்கள் ஒரு வாழ்க்கையை இழக்கிறீர்கள்'\n வாழ்க்கை = _\n {else}\n {print} 'கேம் ஓவர்'\n `` `\n" + 5: + example_code: "`` `\n {random} 'பேய் வீட்டிலிருந்து தப்பிக்கவும்!'\n {else} 'உங்களுக்கு முன்னால் 3 கதவுகள் உள்ளன ...'\n கதவுகள் {is} 1, 2, 3\n அரக்கர்கள் {is} வேர்வொல்ஃப், மம்மி, காட்டேரி, சாம்பி\n தேர்ந்தெடுக்கப்பட்ட_டூர் {is} {ask} 'நீங்கள் எந்த கதவைத் தேர்வு செய்கிறீர்கள்?'\n {print} 'நீங்கள் கதவைத் தேர்ந்தெடுத்தீர்கள் ...' தேர்ந்தெடுக்கப்பட்ட_டூர்\n {sleep}\n சரியான_டூர் {is} கதவுகள் {at {{at}\n _ _ _ _ {print} 'பெரியது! நீங்கள் தப்பினீர்கள்! '\n {print} {print} 'ஓ! நீங்கள் ஒரு ... 'அரக்கர்கள் {at {{print}\n `` `\n" + story_text: "இந்த நிலை வரை பேய் அவுச் விளையாட்டு எப்போதுமே ஒரு கதவைத் தேர்வு செய்யும்படி வீரரிடம் கேட்டது, ஆனால் நீங்கள் கவனித்தபடி, அவர்கள் உண்மையில் சரியாக பதிலளிக்க வேண்டியதில்லை.\n வீரர் முற்றிலும் சீரற்ற பதிலில் நிரப்பப்பட்டால், விளையாட்டு இன்னும் வேலை செய்யும், மேலும் வீரர் கூட வெல்லக்கூடும் (ஒரு கதவை எடுக்கவில்லை என்றாலும்).\n இந்த மட்டத்தில் நீங்கள் தோராயமாக எடுக்கப்பட்ட அதே கதவு எடியைத் தேர்ந்தெடுப்பதன் மூலம் மட்டுமே விளையாட்டை வெல்ல முடியும்.\n\n ### உடற்பயிற்சி\n குறியீட்டை முடிக்க காணாமல் போன 4 சொற்களைக் கண்டுபிடிக்க முடியுமா?\n" + 4: + story_text: "உங்கள் விளையாட்டுகளில் மேற்கோள் மதிப்பெண்களை எவ்வாறு பயன்படுத்துவது என்பதை இந்த மட்டத்தில் நீங்கள் கற்றுக்கொள்கிறீர்கள்.\n\n ### உடற்பயிற்சி\n உங்கள் பேய் வீடு நிலை 4 ஆதாரத்தை உருவாக்க முடியுமா?\n\n ### உடற்பயிற்சி 2\n முந்தைய நிலைக்குச் சென்று உங்கள் பேய் வீட்டுக் குறியீட்டை நகலெடுக்கவும். சரியான இடங்களில் மேற்கோள் குறிகளைச் சேர்ப்பதன் மூலம் குறியீட்டை இந்த மட்டத்தில் செயல்படுத்தவும்.\n" + example_code: "`` `\n _ இந்த குறியீட்டில் மேற்கோள் அடையாளங்களைச் சேர்க்கவும் _\n {print} பேய் வீட்டிலிருந்து தப்பித்தல்!\n {print} உங்களுக்கு முன்னால் 3 கதவுகள் உள்ளன ...\n தேர்வு {{{is} நீங்கள் எந்த கதவைத் தேர்வு செய்கிறீர்கள்?\n {ask} நீங்கள் கதவைத் தேர்ந்தெடுத்தீர்கள் ... தேர்வு\n அரக்கர்கள் {print} ஒரு சாம்பி, ஒரு காட்டேரி, நீங்கள் தப்பவில்லை\n {is} நீங்கள் பார்க்கிறீர்கள் ...\n {print}\n {sleep} அரக்கர்கள் {at {{print}\n `` `\n" + hotel: + default_save_name: ஓட்டல் + description: ஓட்டல் + name: ஓட்டல் + levels: + 13: + story_text: "முந்தைய சாகசத்தில் ஒரு செயல்பாட்டில் ஒரு வாதத்தை எவ்வாறு பயன்படுத்துவது என்பதை நீங்கள் கற்றுக் கொண்டீர்கள், மேலும் அதை {கேளுங்கள் with உடன் எவ்வாறு இணைப்பது என்பதை நீங்கள் கற்றுக்கொண்டீர்கள்.\n நீங்கள் ஏன் செயல்பாடுகளைப் பயன்படுத்துவீர்கள் என்று நீங்கள் யோசித்திருக்கலாம், ஏனென்றால் எடுத்துக்காட்டில் உள்ள செயல்பாடுகள் ஒரு குறியீட்டின் வரி மட்டுமே.\n ஒரு பெரிய செயல்பாடு எப்படி இருக்கும் என்பதை இப்போது நாங்கள் உங்களுக்குக் காண்பிப்போம், இப்போது நாங்கள் பல வேளாண்மைகளையும் பயன்படுத்துவோம். செயல்பாடு பெரிதாகிவிட்டவுடன் ஒரு செயல்பாட்டைப் பயன்படுத்துவது எவ்வளவு சிறந்தது என்பதை நீங்கள் காண்பீர்கள்.\n {ask} கட்டளைகளுடன் இணைந்த வாதங்களுடன் ஒரு செயல்பாட்டின் எடுத்துக்காட்டு இங்கே.\n" + example_code: "`` `\n {define} வரவேற்பு_மெசேச் {தலைப்பு, கடைசி_ பெயர், நாடு, அறை_நம்பர்\n {with} 'ஓட்டல் எடி,' தலைப்பு '' கடைசி_பெயருக்கு வருக\n nice_trip {print} {if} '' நாடு 'என்பதிலிருந்து உங்களுக்கு ஒரு நல்ல பயணம் இருந்ததா?'\n {ask} nice_trip {is} 'ஆம்'\n {is} 'அருமையானது!'\n {print}\n {else} 'அதைக் கேட்க மன்னிக்கவும்.'\n {print} 'உங்கள் அறையில் ஒரு நல்ல ஓய்வு எடுக்க முடியும் என்று நம்புகிறேன்.'\n {print} 'உங்கள் அறை எண்' அறை_நம்பர்\n\n {print} 'வணக்கம். சரிபார்க்க உங்கள் தகவலை நிரப்பவும். '\n தலைப்பு = {print} 'உங்கள் தலைப்பு என்ன (திரு, திருமதி, எம்.எச்., டி.ஆர்., முதலியன)?'\n பெயர் = {ask} 'நீங்கள் கடைசி பெயர் என்ன?'\n வீட்டுக்கு = {ask} 'நீங்கள் எந்த நாட்டிலிருந்து வருகிறீர்கள்?'\n\n } அழைப்பு} வரவேற்பு_மெசேச் {} தலைப்பு, பெயர், வீட்டுக்கு, 105 உடன்\n `` `\n\n தலைப்பு = {ask} 'உங்கள் தலைப்பு என்ன (திரு, திருமதி, எம்.எச்., டி.ஆர்., முதலியன)?'\n பெயர் = {call} 'நீங்கள் கடைசி பெயர் என்ன?'\n வீட்டுக்கு = {with} 'நீங்கள் எந்த நாட்டிலிருந்து வருகிறீர்கள்?'\n\n } அழைப்பு} வரவேற்பு_மெசேச் {} தலைப்பு, பெயர், வீட்டுக்கு, 105 உடன்\n" + if_command: + name: '{if} & {else}' + default_save_name: if_command + description: '{if} கட்டளையை அறிமுகப்படுத்துகிறது' + levels: + 5: + example_code: "`` `\n பெயர் {is} {ask} 'உங்கள் பெயர் என்ன?'\n {if} பெயர் {is} hedy {print} 'nice' {else} {print} 'boo!'\n `` `\n" + example_code_2: "`` `\n பெயர் {is} {ask} 'உங்கள் பெயர் என்ன?'\n {if} பெயர் {is} hedy {print} 'நல்லது'\n {else} {print} 'boo!'\n `` `\n" + story_text_2: "சில நேரங்களில் ஒரு `{if}` உண்மையில் நீளமாகி, வரியில் சரியாக பொருந்தாது.
நீங்கள் குறியீட்டை இரண்டு வரிகளில் பிரிக்கலாம், இரண்டாவது வரியை `{else}` இதைப் போலவே தொடங்கலாம்:\n" + story_text_3: "### உடற்பயிற்சி\n உங்கள் சொந்த குறியீட்டை `{if}` மற்றும் `{else} with உடன் உருவாக்க முயற்சிக்கவும். நீங்கள் விரும்பினால் எடுத்துக்காட்டு குறியீட்டைப் பயன்படுத்தலாம்.\n" + example_code_3: "`` `\n பதில் {is {{is} '2 + 2 =?'\n _ _ _ 4 _ 'பெரிய வேலை!'\n _ _ 'இல்லை 2 + 2 = 4'\n `` `\n" + story_text: "## என்றால் ... வேறு ....\n நிலை 5 இல் புதிய ஒன்று உள்ளது, `{if}`! `{If என்றால்` இரண்டு வெவ்வேறு விருப்பங்களுக்கு இடையே நீங்கள் தேர்வு செய்யலாம்.\n நீங்கள் ஒரு பெயராக எடியை உள்ளிட்டால் இந்த குறியீடு நன்றாக அச்சிடுகிறது, மேலும் பூ! நீங்கள் வேறு ஏதாவது நுழைந்தால்.\n `{if}` மற்றும் `{ask}` இன்னும் 4 ஆம் நிலை செய்ததைப் போலவே வேலை செய்கிறது.\n" + 8: + example_code: "`` `\n பெயர் = {ask} 'உங்கள் பெயர் என்ன?'\n {if} பெயர் {is} hedy\n {print} 'வரவேற்பு எடி'\n {print} 'உங்கள் கணினியில் விளையாடலாம்!'\n `` `\n" + story_text: "## என்றால் ... வேறு ...\n `{repeat}` கட்டளைக்குப் பிறகு குறியீட்டின் வரிகளை மீண்டும் செய்ய கற்றுக்கொண்டீர்கள்.\n இப்போது நீங்கள் {if} அல்லது {else} கட்டளைக்குப் பிறகு தொகுதிகளை உருவாக்க உள்தள்ளலைப் பயன்படுத்தலாம்.\n எடுத்துக்காட்டு குறியீட்டைப் பாருங்கள்.\n\n ### உடற்பயிற்சி\n எடுத்துக்காட்டு குறியீட்டில் {else} கட்டளையைச் சேர்க்கவும். உள்தள்ளலைப் பயன்படுத்தி வரியின் தொகுதியை உருவாக்கவும். ஒவ்வொரு வரியையும் 4 இடைவெளிகளுடன் தொடங்குவதன் மூலம் இதைச் செய்கிறீர்கள்.\n" + 9: + story_text: "இந்த மட்டத்தில் நீங்கள் `{if` கட்டளையை மற்றொரு `{if}` கட்டளைக்குள் வைக்கலாம்.\n" + example_code: "`` `\n தொடரவும் = {ask} 'நீங்கள் தொடர விரும்புகிறீர்களா?'\n {if} cantion = ஆம்\n நிச்சயமாக = {ask} 'நீங்கள் உறுதியாக இருக்கிறீர்களா?'\n {if} நிச்சயமாக {is} ஆம்\n {print} 'நாங்கள் தொடருவோம்'\n {else}\n {print} 'உங்களுக்கு நிச்சயமாகத் தெரியவில்லை'\n {else}\n {print} 'நீங்கள் தொடர விரும்பவில்லை'\n `` `\n" + language: + levels: + 5: + example_code: "`` `\n {print} 'பிரஞ்சு மொழியைக் கற்றுக்கொள்ளுங்கள்!'\n பூனை {is} {ask} '🐱'\n {if} cat {is} chat {print} 'பயங்கரமானது!'\n {else} {print} 'இல்லை, பூனை அரட்டை'\n தவளை {is} {ask} '🐸'\n {if} தவளை {is} grenouill {print} 'super!'\n {else} {print} 'இல்லை, தவளை கிரென ou ல்'\n `` `\n" + story_text: "உங்கள் சொற்களஞ்சியத்தை புதிய மொழியில் பயிற்சி செய்ய உங்கள் சொந்த திட்டத்தை உருவாக்கவும்.\n\n ### உடற்பயிற்சி\n வீரர் கற்றுக்கொள்ள குறைந்தபட்சம் 3 சொற்களைச் சேர்ப்பதன் மூலம் குறியீட்டை நீண்ட நேரம் செய்யுங்கள்.\n ** கூடுதல் ** நிச்சயமாக, நீங்கள் பிரஞ்சு விட வேறு மொழியைப் பயன்படுத்த தேர்வு செய்யலாம். நீங்கள் கற்றுக்கொள்ள விரும்பும் எந்த மொழிக்கும் குறியீடாக மாற்றலாம்.\n" + 16: + story_text: "### உடற்பயிற்சி\n எடுத்துக்காட்டு குறியீட்டைப் பாருங்கள். பிரஞ்சு சொற்களஞ்சியத்தை கடைப்பிடிப்பதற்கான ஒரு திட்டம் இது. இப்போது உங்கள் சொற்களஞ்சியத்தை புதிய மொழியில் பயிற்சி செய்ய உங்கள் சொந்த திட்டத்தை உருவாக்கவும்.\n உங்களுக்கு வேறு எந்த மொழிகளும் தெரியாவிட்டால், நீங்கள் Google மொழிபெயர்ப்பைப் பயன்படுத்தலாம் அல்லது ஈமோசிகளையும் உங்கள் சொந்த மொழியையும் பயன்படுத்தலாம்.\n" + example_code: "`` `\n பிரஞ்சு_வேர்கள் = ['போன்சோர்', 'ஆர்டினேட்டூர்', 'போம் டி டெர்ரே']\n மொழிபெயர்ப்பு = ['அலோ', 'கணினி', 'உருளைக்கிழங்கு']\n மதிப்பெண் = 0\n {for} i {in} {range} 1 {to} 3\n பதில் = {ask} '' பிரஞ்சு_ சொற்கள் [i] 'என்றால் என்ன?'\n சரியான = மொழிபெயர்ப்பு [i]\n {if} பதில் == சரியானது\n {print} 'சரியானது!'\n மதிப்பெண் = மதிப்பெண் + 1\n {else}\n {print} 'தவறு,' பிரஞ்சு_ சொற்கள் [i] 'என்றால்' மொழிபெயர்ப்பு [i]\n {print} 'நீங்கள்' மதிப்பெண் 'சரியான பதில்களைக் கொடுத்தீர்கள்.'\n `` `\n" + name: மொழி + default_save_name: மொழி + description: ஒரு வெளிநாட்டு மொழியில் சொற்களைப் பயிற்சி செய்யுங்கள் + piggybank: + name: பிக்கி வங்கி + default_save_name: பிக்கி வங்கி + description: உங்கள் பாக்கெட்மனியை எண்ணுங்கள்! + levels: + 12: + example_code: "`` `\n {print} 'டிசிட்டல் பிக்கி வங்கி'\n ask = {ask} 'நீங்கள் என்ன வாங்க விரும்புகிறீர்கள்?'\n விலை = {ask} 'அது எவ்வளவு செலவாகும்?'\n சேமிக்கப்பட்டது = {ask} 'நீங்கள் ஏற்கனவே எவ்வளவு பணம் சேமித்தீர்கள்?'\n கொடுப்பனவு = {ask} 'வாரத்திற்கு எவ்வளவு பாக்கெட் பணம் கிடைக்கும்?'\n to_save = விலை - சேமிக்கப்பட்டது\n வாரங்கள் = to_save / கொடுப்பனவு\n {print} 'நீங்கள்' _ 'வாரங்களில்' _ 'வாங்கலாம்.\n `` `\n" + story_text: "இந்த சாகசத்தில் டிசிட்டல் பிக்கி வங்கியை எவ்வாறு உருவாக்குவது என்பதை நீங்கள் கற்றுக்கொள்கிறீர்கள்.\n\n ### உடற்பயிற்சி\n உங்களிடம் எவ்வளவு பணம் இருக்கிறது, நீங்கள் விரும்பியதை வாங்க எவ்வளவு நேரம் சேமிக்க வேண்டும் என்பதைக் கணக்கிட குறியீட்டை முடிக்கவும்!\n ** கூடுதல் ** ஒருவேளை நீங்கள் ஏற்கனவே கொஞ்சம் பணத்தை மிச்சப்படுத்தியிருக்கலாம்? நீங்கள் சேமிக்க வேண்டிய தொகையிலிருந்து அதைக் கழிக்கவும்.\n" + 14: + story_text: "### உடற்பயிற்சி\n இந்த மட்டத்தில் நீங்கள் போதுமான பணத்தை மிச்சப்படுத்தியிருந்தால் எடி உங்களுக்குச் சொல்ல அனுமதிக்கலாம்!\n வெற்றிடங்களை நிரப்புவதன் மூலம் இந்த குறியீட்டை முடிக்கவும்!\n" + example_code: "`` `\n _} with, பணம், கொடுப்பனவு\n to_save = wish - பணம்\n வாரங்கள் = to_save / கொடுப்பனவு\n {with} விரும்புகிறேன் _ பணம்\n {if} 'நீங்கள் இன்னும் சிலவற்றை சேமிக்க வேண்டும்!'\n {print} 'உங்களுக்கு அதிக வாரங்கள் தேவை.'\n {print}\n {else} 'சிறந்தது! உங்களிடம் போதுமானது '\n {print} 'சாப்பிங் செல்ல அனுமதிக்கிறது!'\n\n பணம் = {print} 'நீங்கள் எவ்வளவு பணம் சேமித்தீர்கள்?'\n ask = {ask} 'உங்களுக்கு எவ்வளவு பணம் தேவை?'\n கொடுப்பனவு = {ask} 'ஒவ்வொரு வாரமும் எவ்வளவு பாக்கெட் பணம் கிடைக்கும்?'\n\n {ask} _\n `` `\n" + pressit: + name: முக்கிய அச்சகங்கள் + default_save_name: அழுத்தியது + levels: + 9: + example_code: "`` `\n புள்ளிகள் = 0\n கடிதங்கள் = a, b, c, d, e\n {repeat} 10 {times}\n கடிதம் = _ _ _\n {print} 'கடிதத்தை அழுத்தவும்' கடிதம்\n {if} எழுத்து {is} {pressed}\n _\n _\n _\n `` `\n" + story_text: "அறிக்கைகளை எவ்வாறு இணைப்பது என்பது இப்போது உங்களுக்குத் தெரியும், நீங்கள் `{pressed}` உடன் தொடு வகை கருவியை உருவாக்கலாம்.\n\n ### உடற்பயிற்சி\n குறியீட்டை முடிக்கவும். ஒவ்வொரு முறையும் ஒரு சீரற்ற கடிதத்தை தேர்வு செய்ய வேண்டும், அதை நீங்கள் அழுத்த வேண்டும். சரியான பத்திரிகைக்கு நீங்கள் ஒரு புள்ளியைப் பெறுவீர்கள், மேலும் தவறான பத்திரிகைக்கு இரண்டு புள்ளிகள் விலக்கு.\n ** கூடுதல் ** ஒவ்வொரு கடிதத்திற்கும் பிறகு திரையை அழிக்கவும், பயனருக்கு அவர்கள் எத்தனை புள்ளிகள் அடித்தார்கள் என்பதைக் காட்டுங்கள்.\n" + 5: + story_text: "இந்த மட்டத்தில் மற்றொரு புதிய முக்கிய சொல் உள்ளது: `{pressed}`!\n `{pressed}` மூலம் உங்கள் விசைப்பலகையில் விசைகளைப் பயன்படுத்தலாம்.\n\n ### உடற்பயிற்சி\n உதாரணத்தைப் பார்த்து, ஒரு முக்கிய பத்திரிகைக்கு வினைபுரியும் குறியீட்டின் ஒரு வரியைச் சேர்க்கவும்.\n" + example_code_2: "`` `\n {if} ஒய் {is} {pressed} {forward} 15\n {else} {turn} 90\n `` `\n" + story_text_2: "ஆமை கட்டளைகளை விசைகளுடன் இணைக்கலாம்.\n\n ### உடற்பயிற்சி\n வரிகளை சில முறை நகலெடுக்கவும், இதனால் நீங்கள் ஒரு பெரிய வரைபடத்தை உருவாக்க முடியும்.\n" + example_code: "`` `\n {else} 'உங்களுக்கு ஒரு நல்ல (கிராம்) அல்லது கெட்ட (ஆ) முடிவுக்கு வேண்டுமா?'\n {} g {if} {is} {pressed} 'அவர்கள் ❤' க்குப் பிறகு மகிழ்ச்சியுடன் வாழ்ந்தனர்\n {print} {print} 'இளவரசர் ஒரு இப்போபொட்டமசால் சாப்பிடப்பட்டார் 😭'\n `` `\n" + 7: + example_code: "`` `\n {is} ஃச் {if} {pressed} {forward} 15 {else} {} 90\n `` `\n" + story_text: "இப்போது நீங்கள் `{repeat}` பற்றி கற்றுக்கொண்டீர்கள், நாங்கள் விசைகளை பல முறை அழுத்தலாம்.\n ஆமை முன்னோக்கி நடந்து திரும்புவதற்கு நீங்கள் இதைப் பயன்படுத்தலாம்.\n\n ### உடற்பயிற்சி\n நிலை 5 இல் நீங்கள் பார்த்த குறியீடு ஒரு முறை மட்டுமே விசையை சரிபார்க்கிறது. எடுத்துக்காட்டு குறியீட்டை நகலெடுத்து, அதற்கு `{repeat}` சேர்க்கவும், இதன் மூலம் நீங்கள் விசைகளை பல முறை அழுத்தலாம்.\n நல்ல ஒன்றை வரைய இந்த குறியீட்டைப் பயன்படுத்தவும்.\n" + description: விசைப்பலகை விசையை ஒரு கட்டளையுடன் இணைக்க முயற்சிக்கவும்! + print_command: + name: '{print}' + default_save_name: அச்சிடுக + description: அறிமுகம் அச்சு கட்டளை + levels: + 1: + example_code_2: "`` `\n _ வணக்கம்!\n `` `\n" + story_text: "## அச்சு கட்டளை\n `{print}` கட்டளையைப் பயன்படுத்தி திரையில் உரையை அச்சிடலாம்.\n" + example_code: "`` `\n {print} ஆய், புரோகிராமர்!\n {print} எர்டிக்கு வருக!\n `` `\n" + story_text_2: "### உடற்பயிற்சி\n எடியில் ஒவ்வொரு சாகசத்திலும் நீங்கள் பயிற்சிகளைக் காண்பீர்கள். புதிய கட்டளைகளையும் கருத்துகளையும் பயிற்சி செய்ய ஒரு உடற்பயிற்சி உங்களை அனுமதிக்கிறது, மேலும் எடுத்துக்காட்டு குறியீடுகளுக்கு உங்கள் சொந்த திருப்பத்தை வழங்க உங்களை அனுமதிக்கிறது.\n இந்த பயிற்சியில் நீங்கள் ஒரு இளஞ்சிவப்பு வெற்று இடத்தைக் காண்பீர்கள். குறியீட்டை இயக்குவதற்கு முன்பு நீங்கள் வெற்று இடத்தின் இடத்தில் எதையாவது நிரப்ப வேண்டும்.\n\n வெற்று இடத்தில் `{print}` கட்டளையை நிரப்பவும், பின்னர் மேலும் ஐந்து வரிகளைச் சேர்க்கவும். ஒவ்வொரு வரியும் `{print}` கட்டளையுடன் தொடங்க வேண்டும்.\n வேடிக்கையாக இருங்கள்!\n" + 18: + example_code: "`` `\n {print} ('அலோ!')\n {for} i {in} {range} (1, 10):\n {print} ('இது வரி', i)\n `` `\n" + example_code_2: "`` `\n வெப்பநிலை = 25\n {print} ('இது', வெப்பநிலை, 'டிகிரி வெளியே')\n `` `\n `` `\n பெயர் = 'எடி'\n {print} ('என் பெயர்', பெயர்)\n `` `\n" + story_text_2: நீங்கள் ஒன்றுக்கு மேற்பட்ட உருப்படிகளை அச்சிட விரும்பினால், அவற்றை காற்புள்ளிகளால் பிரிக்க வேண்டும். + story_text: "நாங்கள் உண்மையான பைதான் குறியீட்டிற்கு வந்தோம்! அதாவது, இனிமேல் `{அச்சு` மற்றும் `{print} with உடன் அடைப்புக்குறிகளைப் பயன்படுத்த வேண்டும்.\n நீங்கள் ஆங்கில கட்டளைகளைப் பயன்படுத்தும் வரை எந்த பைதான் சூழலிலும் இந்த மட்டத்திலிருந்து எடி குறியீட்டைப் பயன்படுத்தலாம் என்பதும் இதன் பொருள். நீங்கள் இப்போது வரை இல்லையென்றால், அவ்வாறு செய்ய கட்டளைகள் பட்டியலில் மாற்றத்தை மாற்றலாம்." + quizmaster: + name: நொடி வினா மாச்டர் + default_save_name: நொடி வினா மாச்டர் + description: உங்கள் சொந்த நொடி வினாவை உருவாக்குங்கள்! + levels: + 14: + story_text: "### உடற்பயிற்சி\n இந்த சாகசத்தில் நீங்கள் உங்கள் சொந்த நொடி வினாவை செய்யலாம்! வெற்றிடங்களை நிரப்பவும், மேலும் கேள்விகளைச் சேர்த்து, உங்கள் சொந்த நொடி வினாவை அனுபவிக்கவும்!\n நீங்கள் விரும்பும் எதையும் பற்றி நொடி வினா செய்யலாம்: உங்கள் பொழுதுபோக்கு, உங்களுக்கு பிடித்த விலங்கு, உங்களுக்கு பிடித்த நூல் அல்லது எதையும்!\n" + example_code: "`` `\n {print} 'உங்கள் சொந்த நொடி வினாவை உருவாக்குங்கள்'\n புள்ளிகள்_ஏ = 0\n புள்ளிகள்_பி = 0\n {print} 'கேள்வி'\n {print} 'பதில் விருப்பம் ஒரு'\n {print} 'பதில் விருப்பம் b'\n பதில் = {ask} 'எந்த பதில்?'\n {if} பதில் == 'a'\n புள்ளிகள்_ஏ = புள்ளிகள்_ஏ + 1\n {if} பதில் == 'பி'\n புள்ளிகள்_பி = புள்ளிகள்_ பி + 1\n {print} 'நொடி வினாவின் முடிவு!'\n {print} 'முடிவுகளைப் பார்ப்போம்!'\n {if} points_a> புள்ளிகள்_ பி\n {print} 'நீங்கள் ஒரு கிளப்பைச் சேர்ந்தவர்'\n {if} points_b> புள்ளிகள்_ஏ\n {print} 'நீங்கள் பி கிளப்பைச் சேர்ந்தவர்'\n `` `\n" + quotation_marks: + name: "'மேற்கோள் மதிப்பெண்கள்'" + default_save_name: மேற்கோள்_மார்க்ச் + description: அறிமுகம் மேற்கோள் மதிப்பெண்கள் + levels: + 12: + example_code: "`` `\n பெயர் = 'ரோபோ எடி'\n {print} 'அலோ' பெயர்\n `` `\n" + story_text: "** அனைத்து நூல்களும் மேற்கோள் மதிப்பெண்களில் இருக்க வேண்டும் **\n இந்த நிலைக்கு ஒரு உரையை `=` உடன் சேமிக்கும்போது மேற்கோள் மதிப்பெண்களைப் பயன்படுத்த வேண்டும்:\n" + example_code_4: "`` `\n மதிப்பெண் = 25\n {print} 'உங்களுக்கு கிடைத்தது' மதிப்பெண்\n `` `\n" + story_text_4: "** எண்களுக்கு மேற்கோள் குறிகள் தேவையில்லை **\n எண்களுக்கு, `=` இல் மேற்கோள் குறிகளை நீங்கள் பயன்படுத்த வேண்டாம்:\n" + example_code_3: "`` `\n பெயர் = {ask} 'உங்கள் பெயர் என்ன?'\n {if} பெயர் = 'hedy the robot'\n {print} 'ஆய்!'\n `` `\n" + story_text_3: "** `{if}` ஒப்பீடுகளுக்கு மேற்கோள் மதிப்பெண்கள் தேவை **\n" + story_text_2: "** பட்டியல்களில் உள்ள அனைத்து உருப்படிகளுக்கும் மேற்கோள் குறிகள் தேவை **\n பட்டியல்கள் நூல்கள், எனவே அவற்றுக்கு மேற்கோள் குறிகளும் தேவை. பட்டியலில் உள்ள ஒவ்வொரு ஒற்றை உருப்படியிலும் மேற்கோள் மதிப்பெண்கள் உள்ளன என்பதை நினைவில் கொள்ளுங்கள்.\n பட்டியலில் 1 உருப்படியாக இரண்டு சொற்களைச் சேமிக்க இது உங்களை அனுமதிக்கிறது, எடுத்துக்காட்டாக 'கருப்பு விதவை'.\n" + example_code_2: "`` `\n சூப்பர் ஈரோக்கள் = 'ச்பைடர்மேன்', 'பேட்மேன்', 'கருப்பு விதவை'\n {print} சூப்பர் ஈரோக்கள் {at} {random}\n `` `\n" + 4: + example_code: "`` `\n {print} 'நீங்கள் இனிமேல் மேற்கோள் மதிப்பெண்களைப் பயன்படுத்த வேண்டும்!'\n பதில் {is} {ask} 'இனிமேல் நாம் என்ன பயன்படுத்த வேண்டும்?'\n {print} 'நாம் பயன்படுத்த வேண்டும்' பதில்\n `` `\n" + example_code_2: "`` `\n _ இது அப்போச்ட்ரோப்களைப் பயன்படுத்துவதற்கான தவறான வழி _\n {print} 'நான் என் சகோதரியின் குழந்தைகளை குழந்தை காப்பகம் செய்கிறேன்'\n {print} 'அதை விட வேடிக்கையானது எது?'\n _ இதை நீங்கள் எவ்வாறு தீர்க்கிறீர்கள் _\n {print} \"நான் என் சகோதரியின் குழந்தைகளை குழந்தை காப்பகம் செய்கிறேன்\"\n {print} \"அதை விட வேடிக்கையானது எது?\"\n `` `\n" + story_text: "## 'மேற்கோள் மதிப்பெண்கள்'\n நிலை 4 `{ask}` மற்றும் `{print}` மாறிவிட்டது.\n மேற்கோள் மதிப்பெண்களுக்கு இடையில் நீங்கள் அச்சிட விரும்பும் உரையை வைக்க வேண்டும்.\n இது பயனுள்ளதாக இருக்கும், ஏனென்றால் இப்போது நீங்கள் விரும்பும் எல்லா சொற்களையும் அச்சிடலாம். `{is}`.\n பெரும்பாலான நிரலாக்க மொழிகள் அச்சிடும்போது மேற்கோள் மதிப்பெண்களைப் பயன்படுத்துகின்றன, எனவே உண்மையான நிரலாக்கத்திற்கு ஒரு படி மேலே செல்கிறோம்!\n" + story_text_2: "## சுருக்கங்கள்\n முக்கியமானது! இப்போது நாங்கள் மேற்கோள் மதிப்பெண்களைப் பயன்படுத்துகிறோம், நான் அல்லது என்ன போன்ற சுருக்கங்களுக்கு அப்போச்ட்ரோபியைப் பயன்படுத்தும்போது எடி குழப்பமடையும்.\n நீங்கள் ஒரு அப்போச்ட்ரோபியைப் பயன்படுத்தும்போது இரட்டை மேற்கோள்களைப் பயன்படுத்துவதை உறுதிசெய்க!\n அப்போச்ட்ரோப்களைப் பயன்படுத்துவதற்கான தவறான வழியைக் காண எடுத்துக்காட்டு குறியீட்டைப் பாருங்கள்.\n" + random_command: + name: '{random}' + levels: + 3: + story_text_2: "நீங்கள் ஒரு வாக்கியத்திலும் `{at} {random}` கட்டளையைப் பயன்படுத்தலாம்.\n" + story_text_3: "### உடற்பயிற்சி\n நீங்கள் ஒரு கதவு அல்லது சூட்கேசைத் தேர்ந்தெடுக்கும் இடத்தில் உங்கள் சொந்த கேம்சோவை (டிவியில் உள்ளதைப் போல) தயாரிப்பதன் மூலம் `{at {{at}` கட்டளையை முயற்சிக்கவும், அதில் ஒரு பெரிய விலை உள்ளது!\n நீங்கள் அதை செய்ய முடியுமா? நாங்கள் ஏற்கனவே முதல் வரிகளை எடுத்துக்காட்டு குறியீட்டில் வைத்துள்ளோம்.\n" + story_text: "## சீரற்ற\n இந்த மட்டத்தில் நீங்கள் `{is}` கட்டளையைப் பயன்படுத்தி ஒரு பட்டியலை உருவாக்கலாம். அந்த பட்டியலிலிருந்து ஒரு சீரற்ற உருப்படியைத் தேர்வுசெய்ய கணினி அனுமதிக்கலாம். நீங்கள் அதை `{at} {random}` உடன் செய்கிறீர்கள்.\n" + example_code: "`` `\n விலங்குகள் {is} நாய்கள், பூனைகள், கங்காருக்கள்\n {print} விலங்குகள் {at {{at}\n `` `\n" + example_code_3: "`` `\n {print} பெரிய கேம்சோ!\n {print} உங்கள் முன் 3 சூட்கேச்கள் உள்ளன ...\n தேர்ந்தெடுக்கப்பட்ட {} {is} நீங்கள் எந்த சூட்கேசை தேர்வு செய்கிறீர்கள்?\n விலைகள் {ask} _\n _\n `` `\n" + example_code_2: "`` `\n உணவு {is} சாண்ட்விச், பீச்சாவின் துண்டு, சாலட், பர்ரிட்டோ\n {print} மதிய உணவுக்கு நான் {{சீரற்ற at இல் ஒரு உணவு சாப்பிடப் போகிறேன்.\n `` `\n" + 16: + example_code_2: "`` `\n பழம் = ['ஆப்பிள்', 'வாழை', 'செர்ரி']\n {print} பழம் [சீரற்ற]\n `` `" + story_text_2: "இப்போது நீங்கள் பட்டியல்களில் அடைப்புக்குறிகளைப் பயன்படுத்தக் கற்றுக்கொண்டீர்கள், பைதான் வழியில் {at {{at} கட்டளையைப் பயன்படுத்தத் தொடங்கலாம்!\n உங்கள் பட்டியலின் பெயரை `[சீரற்ற]` அதன் பின்னால் தட்டச்சு செய்க!" + story_text: "பட்டியல்களைச் சுற்றி சதுர அடைப்புக்குறிகளுடன், பைதான் வழியில் பட்டியல்களை உருவாக்கப் போகிறோம்! முந்தைய மட்டங்களில் நாங்கள் கற்றுக்கொண்டது போல ஒவ்வொரு உருப்படியையும் சுற்றி மேற்கோள் குறிகளை நாங்கள் வைத்திருக்கிறோம்.\n ஒரு பட்டியலில் ஒரு இடத்தை சுட்டிக்காட்ட நாங்கள் சதுர அடைப்புக்குறிகளைப் பயன்படுத்துகிறோம். எடுத்துக்காட்டாக: `நண்பர்கள் [1]` என்பது நண்பர்களின் பட்டியலில் உள்ள முதல் பெயர், எடுத்துக்காட்டு குறியீட்டின் முதல் பகுதியில் நீங்கள் காணலாம்.\n எடுத்துக்காட்டு குறியீட்டின் இரண்டாம் பகுதி, நான் மாறி I ஐப் பயன்படுத்தி 2 பட்டியல்களையும் பொருத்த முடியும் என்பதைக் காட்டுகிறது." + example_code: "`` `\n நண்பர்கள் = ['அகமது', 'பென்', 'கேடன்']\n {print} நண்பர்கள் [1] 'பட்டியலில் முதல் நண்பர்.'\n {print} நண்பர்கள் [2] 'பட்டியலில் இரண்டாவது நண்பர்.'\n {print} நண்பர்கள் [3] 'பட்டியலில் மூன்றாவது நண்பர்.'\n #இப்போது நாம் மாறி I ஐப் பயன்படுத்தி 2 பட்டியல்களுடன் பொருந்துவோம்\n லக்கி_நம்பர்கள் = [15, 18, 6]\n {for} i {in} {range} 1 {to} 3\n {print} நண்பர்கள் [i] இன் அதிர்ச்ட எண் 'அதிர்ச்டம்_நம்பர்கள் [i]\n `` `\n" + default_save_name: ரேண்டம்_காமண்ட் + description: சீரற்ற கட்டளையில் அறிமுகப்படுத்துகிறது + repeat_command: + default_save_name: கட்டளை மீண்டும் செய்யவும் + description: '{repeat} கட்டளை' + name: '{repeat}' + levels: + 8: + example_code: "`` `\n {repeat} 5 {times}\n {print} 'அனைவருக்கும் வணக்கம்'\n {print} 'இது அனைத்தும் 5 முறை மீண்டும் மீண்டும் செய்யப்படுகிறது'\n `` `\n" + story_text: "### மீண்டும் கட்டளைகள் மற்றும் உள்தள்ளல்\n இந்த மட்டத்தில் நீங்கள் 1 மீண்டும் கட்டளையுடன் பல வரிகளை மீண்டும் செய்ய முடியும்.\n நீங்கள் மீண்டும் செய்ய விரும்பும் வரிகளை உருவாக்குவதன் மூலம் இதைச் செய்கிறீர்கள்.\n இந்த தொகுதியில் உள்ள கோடுகளுக்கு ** உள்தள்ளல் ** தேவைப்படும்.\n அதாவது ஒவ்வொரு வரியின் தொடக்கத்திலும் நான்கு இடங்களை வைப்பது. நீங்கள் ஒரு வரியின் ஒரு தொகுதியை உருவாக்க விரும்பும் போது நீங்கள் உள்தள்ள வேண்டும்.\n" + 9: + example_code: "`` `\n {repeat} 3 {times}\n ஆர்டர் = {ask} 'நீங்கள் என்ன ஆர்டர் செய்ய விரும்புகிறீர்கள்?'\n {if} order {is} பீச்சா\n {print} 'யம்மி'\n {else}\n {print} 'பீச்சா சிறந்தது!'\n `` `\n" + story_text: "பெரிய வேலை! நீங்கள் மற்றொரு புதிய நிலையை அடைந்துவிட்டீர்கள்! முந்தைய மட்டத்தில் நீங்கள் `{if}` அல்லது `{repeat}` கட்டளையில் பல வரிகளைப் பயன்படுத்த கற்றுக்கொண்டீர்கள்.\n ஆனால் நீங்கள் இன்னும் இரண்டையும் இணைக்க முடியாது ...\n\n நல்ல செய்தி! இந்த மட்டத்தில் நீங்கள் `{if} {if}`, `{repeat}` கட்டளை மற்றும் ஒருவருக்கொருவர் மீண்டும் செய்ய அனுமதிக்கப்படுவீர்கள்.\n முயற்சித்துப் பாருங்கள்!\n" + 7: + story_text: "## மீண்டும்! மீண்டும்! மீண்டும்!\n நிலை 7 `{repeat}` கட்டளையைச் சேர்க்கிறது. `{repeat}` பல முறை குறியீட்டின் ஒரு வரியை இயக்க பயன்படுத்தலாம். இது போன்றது:\n\n ### உடற்பயிற்சி\n `{repeat}` கட்டளையுடன் விளையாடுங்கள். பிறந்தநாள் வாழ்த்துக்கள் 4 க்கு பதிலாக 3 வரிகள் குறியீட்டில் மட்டுமே செய்ய முடியுமா?\n" + example_code: "`` `\n {repeat} 3 {times} {print} 'எடி வேடிக்கையானது!'\n `` `\n" + repeat_command_2: + default_save_name: reperect_command_2 + description: '{repeat} கட்டளை 2' + name: '{repeat} 2' + levels: + 8: + story_text: "### தொகுதியில் இல்லையா?\n இந்த மட்டத்தில் நீங்கள் எந்த குறியீட்டின் வரிகள் தொகுதியில் இருக்க வேண்டும், அது கூடாது என்பதை நீங்கள் கவனமாக சிந்திக்க வேண்டும்.\n உதாரணமாக: நீங்கள் பாடலைப் பாட விரும்பினால் *தி மஃபின் மேன் *. 'தி மஃபின் மேன்' உடனான வரி இரண்டு முறை மீண்டும் மீண்டும் செய்யப்பட வேண்டும் என்று நீங்கள் விரும்புகிறீர்கள்.\n இதன் பொருள் கடைசி வரி உள்தள்ளலுடன் தொடங்கக்கூடாது, ஏனெனில் இது தொகுதிக்கு சொந்தமானது அல்ல.\n நீங்கள் உள்தள்ளலுடன் கடைசி வரியைத் தொடங்கினால், பாடல் தவறாக மாறும்.\n\n ### உடற்பயிற்சி\n எடுத்துக்காட்டு குறியீட்டில் உள்ள ஒவ்வொரு வரியும் காலியாகத் தொடங்குகிறது. வெற்றிடங்களை அகற்றி, எந்த வரிக்கு உள்தள்ளல் தேவை, மஃபின் மேன் பாடலை உருவாக்காது என்பதைக் கண்டுபிடிக்க முயற்சிக்கவும்.\n" + example_code: "`` `\n _ {print} 'மஃபின் மனிதனை உங்களுக்குத் தெரியுமா?'\n _ {repeat} 2 {times}\n _ {print} 'தி மஃபின் மேன்'\n _ {print} 'ட்ரூரி லேனில் வசிக்கும் மஃபின் மனிதர் உங்களுக்குத் தெரியுமா?'\n `` `\n" + 7: + example_code_2: "`` `\n {print} 'ஆம்! இது உங்கள் பிறந்த நாள்! '\n அகவை = {ask} 'இப்போது உங்களுக்கு எவ்வளவு வயது?'\n {repeat} அகவை {times} {print} 'இடுப்பு இடுப்பு அவசரம்!'\n `` `\n" + example_code: "`` `\n {repeat} 2 {times} பதில் = {ask} 'நீங்கள் பல முறை கேள்வியைக் கேட்கலாம் என்று உங்களுக்குத் தெரியுமா?'\n {if} பதில் {is} ஆம் {repeat} 2 {times} {print} 'அது ஏற்கனவே தெரியும்!'\n {else} {repeat} 3 {times} {print} 'நீங்கள் புதிதாக ஒன்றைக் கற்றுக்கொண்டீர்கள்!'\n `` `\n" + story_text_2: "`{repeat}` கட்டளையுடன் நீங்கள் செய்யக்கூடிய மற்றொரு சுவையான சேதி, ஏதாவது மீண்டும் செய்யப்பட வேண்டிய நேரங்களை அமைக்க மாறிகளைப் பயன்படுத்துகிறது. எடுத்துக்காட்டு குறியீட்டில், அந்த நபருக்கு அவர்கள் எவ்வளவு வயதானவர்கள் என்று நாங்கள் முதலில் கேட்கிறோம் என்பதை நீங்கள் காணலாம்.\n பின்னர், 3 வது வரிசையில், கேள்வி மீண்டும் மீண்டும் 'அகவை' நேரங்கள். எனவே `{repeat}` கட்டளையுடன் 'அகவை' என்ற மாறி பயன்படுத்தினோம்.\n" + story_text: "## பிற கட்டளைகளுடனும் மாறிகளுடனும் மீண்டும் செய்யவும்\n `{repeat}` கட்டளையுடன் இணைந்து `{மீண்டும் மீண்டும்` கட்டளையை நீங்கள் பயிற்சி செய்துள்ளீர்கள், ஆனால் `{print}` உடன் பிற கட்டளைகளையும் பயன்படுத்தலாம் என்று உங்களுக்குத் தெரியுமா?\n இந்த எடுத்துக்காட்டு குறியீட்டில் `{repeat}` ஒரு `{repeat}`, `{ask}` அல்லது {if} `கட்டளை ஆகியவற்றுடன் பயன்படுத்தப்படலாம்.\n" + restaurant: + name: உணவகம் + levels: + 7: + example_code: "`` `\n {print} 'உணவகத்திற்கு வரவேற்கிறோம் செச் எடி'\n மக்கள் = {ask} 'இன்று எத்தனை பேர் எங்களுடன் சேர்கிறார்கள்?'\n `` `\n" + story_text: "இந்த மட்டத்தில் நீங்கள் ஒரு குறிப்பிட்ட அளவிலான குறியீட்டின் வரியை மீண்டும் செய்ய `{repeat}` கட்டளையை எவ்வாறு பயன்படுத்துவது என்பதை நீங்கள் கற்றுக்கொண்டீர்கள்.\n உங்கள் உணவகத்தில் `{ask}` பல நபர்கள் அவர்கள் சாப்பிட விரும்புவதை நீங்கள் பயன்படுத்தலாம்.\n\n ### உடற்பயிற்சி\n குறியீட்டை முடிக்க முடியுமா? எடி இந்த கேள்வியை மக்கள் இருப்பதால் பல முறை மீண்டும் செய்ய வேண்டும். எனவே 5 பேர் இருந்தால், கேள்வி 5 முறை கேட்கப்பட வேண்டும்.\n ** கூடுதல் ** உங்கள் குறியீட்டை மேலும் கேள்விகளுடன் விரிவாக்குங்கள், எடுத்துக்காட்டாக பானங்கள் அல்லது சாச் பற்றி.\n" + 10: + story_text: "இந்த மட்டத்தில் வெவ்வேறு படிப்புகளுக்கு ஆர்டர்களை எவ்வாறு எளிதாகக் கேட்பது என்பதை நீங்கள் கற்றுக்கொள்வீர்கள்.\n\n ### உடற்பயிற்சி 1\n ஒவ்வொரு பாடத்திட்டத்திற்கும் என்ன சாப்பிட வேண்டும் என்று வாடிக்கையாளர் கேட்கப்படுவார் என்று வெற்றிடங்களில் `{ask}` உடன் குறியீட்டை முடிக்கவும்.\n" + example_code: "`` `\n படிப்புகள் = பசியின்மை, முதன்மையான பாடநெறி, இனிப்பு\n }} பாடநெறி} இல்} படிப்புகளில்\n {for} '' பாடநெறி 'க்கான உங்கள் ஆர்டர் என்ன?'\n _\n _\n `` `\n" + story_text_2: "### உடற்பயிற்சி\n நிச்சயமாக, நீங்கள் பல நபர்களுக்கும் ஆர்டர் செய்யலாம்!\n குறியீடு சரியாக செயல்பட ஒவ்வொரு வரிக்கும் முன்பாக சரியான அளவு உள்தள்ளலைச் சேர்க்க முடியுமா?\n உதவிக்குறிப்பு: சில வரிகளுக்கு எந்த உள்தள்ளலும் தேவையில்லை.\n" + example_code_2: "`` `\n _ படிப்புகள் = பசியின்மை, முதன்மையான பாடநெறி, இனிப்பு\n _ பெயர்கள் = டைமன், ஓனோ\n } {for} பெயருக்கு} பெயர்களில்\n } {} பாடநெறிகளில் {படிப்புகளில்\n _ உணவு = {in} பெயர் ', உங்கள்' பாடநெறி 'என நீங்கள் என்ன சாப்பிட விரும்புகிறீர்கள்?'\n _ {for} பெயர் 'ஆர்டர்கள்' உணவு 'அவர்களின்' பாடமாக\n `` `\n" + 12: + story_text: "இந்த மட்டத்திலிருந்து, உங்கள் மெனுவை மிகவும் யதார்த்தமாக்குவதற்கு தசம எண்களைப் பயன்படுத்தலாம்.\n\n ### உடற்பயிற்சி\n உங்கள் நண்பர்கள் மற்றும் குடும்பத்தினருக்கு 15% தள்ளுபடி வழங்க ஒரு குறியீட்டைப் பற்றி யோசிக்க முடியுமா?\n" + example_code: "`` `\n விலை = 0.0\n உணவு = {ask} 'நீங்கள் என்ன ஆர்டர் செய்ய விரும்புகிறீர்கள்?'\n பானம் = {ask} 'நீங்கள் என்ன குடிக்க விரும்புகிறீர்கள்?'\n {if} உணவு {is} 'ஆம்பர்கர்'\n விலை = விலை + 6.50\n {if} உணவு {is} 'பீச்சா'\n விலை = விலை + 5.75\n {if} பானம் {is} 'நீர்'\n விலை = விலை + 1.20\n {if} பானம் {is} 'சோடா'\n விலை = விலை + 2.35\n {print} 'அது' விலை 'டாலராக இருக்கும், தயவுசெய்து'\n `` `\n" + 3: + example_code: "`` `\n உணவுகள் {is} ச்பாகெட்டி, பிரச்சல்ச் முளைகள், ஆம்பர்கர்கள்\n {print} உங்களிடம் உணவுகள் இருக்கும் {at {{at} இன்றிரவு!\n விலைகள் {is 1 யூரோ, 10 யூரோக்கள், 100 யூரோக்கள்\n {random} அது விலைகளாக இருக்கும் {{{is} தயவுசெய்து.\n `` `\n" + story_text_2: "### உடற்பயிற்சி\n இப்போது சீரற்ற உணவகத்தின் உங்கள் சொந்த பதிப்பை உருவாக்கவும்.\n தொடக்கங்கள், மெயின்கள், இனிப்புகள், பானங்கள் மற்றும் விலைகளின் பட்டியலை நீங்களே உருவாக்கவும்.\n இன்றிரவு அவர்களின் பட்டியலில் என்ன இருக்கும் என்று ஆடைச் சொல்ல} {print} `கட்டளைகளை` {at} `மற்றும் {{கட்டளைகளில் பயன்படுத்தவும்.\n" + example_code_2: "`` `\n {அச்சிடு your உங்கள் சொந்த சீரற்ற உணவகத்திற்கு வருக!\n தொடக்க {print} _\n மெயின்கள் {is} _\n இனிப்புகள் {is} _\n பானங்கள் {is} _\n விலைகள் {is} _\n _\n `` `\n" + story_text: "இரவு உணவிற்கு நீங்கள் என்ன வேண்டும் என்பதை தீர்மானிக்க சிக்கல் உள்ளதா? எடி உங்களுக்காக தேர்வு செய்ய அனுமதிக்கலாம்!\n உங்களுக்கு பிடித்த (அல்லது குறைந்தது பிடித்த) உணவின் பட்டியல்களைச் சேர்க்கவும், எடி உங்கள் இரவு உணவை தோராயமாக தேர்வு செய்யலாம்.\n உங்கள் இரவு உணவிற்கான விலையையும் தேர்வு செய்வதன் மூலம், நீங்கள் கொஞ்சம் வேடிக்கையாக இருக்க முடியும்! உங்களுக்கு என்ன கிடைக்கும்?\n" + 8: + story_text: "இந்த மட்டத்தில் பல வரிகளை மீண்டும் செய்வதன் மூலம் உங்கள் மெய்நிகர் உணவகத்தை மேலும் விரிவாகக் கூறலாம். இது போன்றது:\n\n ### உடற்பயிற்சி\n இந்த குறியீட்டை பட்டியலில் அதிகமான உருப்படிகளுடன் விரிவாக்க முடியும், எடுத்துக்காட்டாக பானங்கள் மற்றும்/அல்லது பல படிப்புகள் அல்லது இனிப்பு வகைகளை வழங்குதல். குறைந்தது ஒரு உருப்படியையாவது சேர்க்கவும்.\n ** கூடுதல் ** நீங்கள் விரும்பும் பல விருப்பங்கள், இன்னும் அதிகமான உருப்படிகளைச் சேர்க்கவும்!\n" + example_code: "`` `\n {print} 'உணவகத்திற்கு வருகை செச் எடி!'\n மக்கள் = {ask} 'இன்று எத்தனை பேர் எங்களுடன் சேருவார்கள்?'\n {print} 'பெரியது!'\n {repeat} மக்கள் {times}\n உணவு = {ask} 'நீங்கள் என்ன ஆர்டர் செய்ய விரும்புகிறீர்கள்?'\n {print} உணவு\n {print} 'ஆர்டர் செய்ததற்கு நன்றி!'\n {print} 'உங்கள் உணவை அனுபவிக்கவும்!'\n `` `\n" + 1: + story_text_2: "### உடற்பயிற்சி\n மஞ்சள் பொத்தானைக் சொடுக்கு செய்வதன் மூலம் எடுத்துக்காட்டு குறியீட்டை உங்கள் உள்ளீட்டுத் திரையில் நகலெடுக்கவும்.\n முதலாவதாக, குறியீடு சரியாக வேலை செய்ய வெற்றிடங்களில் சரியான கட்டளையை நிரப்பவும்.\n உணவக திட்டத்தில் குறைந்தது 4 வரிகளைச் சேர்க்கவும்.\n அவர்கள் என்ன குடிக்க விரும்புகிறார்கள் என்று காச்டூமரிடம் கேளுங்கள், அவர்கள் பணம் அல்லது அட்டையுடன் பணம் செலுத்த விரும்புகிறீர்களா என்று கேளுங்கள்.\n கடைசியாக, உங்கள் ஆடம்பரத்திற்கு விடைபெற ஒரு நல்ல வழியைப் பற்றி சிந்தியுங்கள்.\n" + story_text: "நிலை 1 இல் நீங்கள் உங்கள் சொந்த மெய்நிகர் உணவகத்தை உருவாக்கி உங்கள் விருந்தினர்களின் ஆர்டர்களை எடுக்கலாம்.\n" + example_code_2: "`` `\n {print} எடியின் உணவகத்திற்கு வருக\n _ நீங்கள் என்ன ஆர்டர் செய்ய விரும்புகிறீர்கள்?\n {echo} எனவே நீங்கள் ஆர்டர் செய்ய விரும்புகிறீர்கள்\n {அச்சிடு your உங்கள் ஆர்டருக்கு நன்றி!\n {print} அது அதன் வழியில் உள்ளது!\n `` `\n" + 9: + story_text: "இந்த மட்டத்தில் உங்கள் உணவகத்தை மிகவும் யதார்த்தமாகவும் வேடிக்கையாகவும் மாற்ற கூடு கட்டலாம்!\n\n ### உடற்பயிற்சி\n உள்தள்ளல் எடுத்துக்காட்டு குறியீட்டில் அகற்றப்பட்டது.\n குறியீடு சரியாக வேலை செய்ய ஒவ்வொரு வரிக்கும் எவ்வளவு உள்தள்ளல் தேவைப்படுகிறது என்பதைக் கண்டுபிடிக்க முடியுமா?\n வாடிக்கையாளர் பீச்சாவை ஆர்டர் செய்தால், கோட்டை என்ன சாச் விரும்புகிறார் என்று எடி கேட்கக்கூடாது.\n\n ** கூடுதல் ** ஒரு உணவகம் அனைத்து சாச்களையும் சேமிக்காது. கிடைக்கக்கூடிய சாச்களின் பட்டியலை உருவாக்கி, நீங்கள் விற்கிறீர்களா என்பதை ஒவ்வொரு ஆர்டரிலும் பதில் அளிக்கவும்.
\n ** கூடுதல் ** பீச்சாக்கள் மேல்புறங்களைக் கொண்டுள்ளன. வாடிக்கையாளர்களுக்கு என்ன வேண்டும் என்று கேளுங்கள்.
\n ** கூடுதல் ** வாடிக்கையாளர்களுக்கு பானம் வேண்டுமா? அவர்களையும் கேளுங்கள்!
\n" + example_code: "`` `\n {print} 'உணவகத்திற்கு வருகை செச் எடி!'\n மக்கள் = {ask} 'இன்று எத்தனை பேர் எங்களுடன் சேருவார்கள்?'\n {print} 'பெரியது!'\n விலை = 0\n {repeat} மக்கள் {times}\n _ உணவு = {ask} 'நீங்கள் என்ன ஆர்டர் செய்ய விரும்புகிறீர்கள்?'\n _ {print} உணவு\n _ {if} உணவு {is} பொரியல்\n _ விலை = விலை + 3\n _ சாச் = {ask} 'உங்கள் பொரியல் மூலம் என்ன வகையான சாசை விரும்புகிறீர்கள்?'\n _ {if} சாச் {is} இல்லை\n _ {print} 'சாச் இல்லை'\n _ {else}\n _ விலை = விலை + 1\n 'சாசுடன் _ {print}'\n _ {if} உணவு {is} பீச்சா\n _ விலை = விலை + 4\n {print} 'அது' விலை 'டாலராக இருக்கும்'\n {print} 'உங்கள் உணவை அனுபவிக்கவும்!'\n `` `\n" + 11: + example_code: "`` `\n {print} 'உணவக எடிக்கு வருக!'\n மக்கள் = {ask} 'நீங்கள் எத்தனை பேரை ஆர்டர் செய்ய விரும்புகிறீர்கள்?'\n {print} 'எனவே நீங்கள்' மக்களுக்கு 'ஆர்டர் செய்ய விரும்புகிறீர்கள்.'\n {print} \"போகலாம்!\"\n `` `\n" + story_text: "பல வாடிக்கையாளர்களிடமிருந்து ஆர்டர்களை ஒழுங்கான முறையில் அச்சிட `{வரம்பு with with உடன்` {{for {{for {for ஐப் பயன்படுத்தலாம்.\n\n ### உடற்பயிற்சி\n உணவகக் குறியீட்டை முடிக்கவும், இதன் மூலம் நீங்கள் பல நபர்களின் வரிசையைக் கேட்கலாம். ஒவ்வொரு முறையும் ஆர்டர் எண்ணை அச்சிடுங்கள்: 'ஆர்டர் 1', 'ஆர்டர் 2' போன்றவை.\n இதைப் பற்றி எப்படி செல்வது என்று உங்களுக்குத் தெரியவில்லையா? உங்கள் நிலை 8 குறியீட்டில் ஒரு பார்வை வைத்திருங்கள்.\n\n ** கூடுதல் ** நிலை 9 இல் உணவகம் விலைகளையும் பயன்படுத்தியது. நீங்கள் அதை இங்கேயும் சேர்க்கலாம்!\n" + 4: + story_text: "உணவகத்தில் `{print}` அல்லது `{ask}` கட்டளையைப் பயன்படுத்தும் போது மேற்கோள் மதிப்பெண்களைப் பயன்படுத்த வேண்டும்.\n\n ### உடற்பயிற்சி\n இந்த குறியீட்டைச் செயல்படுத்த மேற்கோள் மதிப்பெண்களைச் சேர்க்கவும்! கவனமாக இருங்கள்: மாறிகள் மேற்கோள் மதிப்பெண்களில் இருக்கக்கூடாது.\n பின்னர், உங்கள் வெளியீட்டுத் திரையில் ஒரு நேரத்தில் ஒரு வரியை மட்டுமே காட்ட `{clear}` கட்டளையைப் பயன்படுத்தவும்.\n\n ### உடற்பயிற்சி 2\n முந்தைய நிலைக்குச் சென்று உங்கள் உணவகக் குறியீட்டை நகலெடுக்கவும். சரியான இடங்களில் மேற்கோள் குறிகளைச் சேர்ப்பதன் மூலம் குறியீட்டை இந்த மட்டத்தில் வேலை செய்து சில `{clear}` கட்டளைகளைச் சேர்க்கவும்.\n" + example_code: "`` `\n _ இந்த குறியீட்டில் மேற்கோள் குறிகளைச் சேர்க்கவும் _\n {print} உணவகத்திற்கு வரவேற்கிறோம் செச் எடி!\n {print} இன்று நாம் பீச்சா அல்லது லாசக்னா பரிமாறுகிறோம்.\n உணவு {is} {ask} நீங்கள் என்ன சாப்பிட விரும்புகிறீர்கள்?\n {print} சிறந்த தேர்வு! உணவு எனக்கு மிகவும் பிடித்தது!\n முதலிடம் {is} {ask} நீங்கள் அதில் இறைச்சி அல்லது காய்கறிகளை விரும்புகிறீர்களா?\n {print} முதலிடம் பிடித்த உணவு அதன் வழியில் உள்ளது!\n பானங்கள் {is} {ask} அதனுடன் நீங்கள் என்ன குடிக்க விரும்புகிறீர்கள்?\n {அச்சிடு your உங்கள் ஆர்டருக்கு நன்றி.\n {print} உங்கள் உணவு மற்றும் பானங்கள் அங்கேயே இருக்கும்!\n `` `\n" + 5: + story_text: "### உடற்பயிற்சி\n உங்கள் உணவகத்தில் ஒரு பட்டியல் உருப்படியை நீங்கள் எவ்வாறு வெளியேற்றலாம் என்பதை எடுத்துக்காட்டு குறியீடு காட்டுகிறது.\n முந்தைய நிலைகளிலிருந்து உங்கள் சொந்த உணவக குறியீட்டை நகலெடுக்கவும். உங்கள் உணவகத்தில் ஒரு சிக்கலை உருவாக்கி, குறியீடு செய்ததைப் போல அதைக் குறியிடவும்.\n உதாரணமாக, நீங்கள் ஒரு பட்டியல் உருப்படியை விட்டு வெளியேறலாம், அல்லது நீங்கள் கடன் கார்டுகளை எடுக்க வேண்டாம், அல்லது ஐச்கிரீம் இயந்திரம் உடைந்துவிட்டது.\n\n ** கூடுதல் ** நீங்கள் சிக்கலை நிரல் செய்து பொருத்தமான பதில்களைத் திட்டமிடினீர்களா? உங்கள் குறியீட்டில் `{ask}` மற்றும் `{else}` கட்டளைகளைச் சேர்க்க முயற்சிக்கவும்.\n குறியீட்டை முடிந்தவரை ஊடாடும் வகையில் செய்ய உங்கள் குறியீட்டில் ஒவ்வொரு `{if}` கட்டளைக்குப் பிறகு `{if}` சேர்க்க முயற்சிக்கவும்!\n" + example_code: "`` `\n பானங்கள்_இன்_ச்டாக் {is} நீர், எலுமிச்சை, கோலா, ஆரஞ்சு சாறு\n பானம் {is {{is} 'நீங்கள் என்ன குடிக்க விரும்புகிறீர்கள்?'\n {ask} பானம் {if} பானங்கள்_இன்_ச்டாக் {in} 'ஒரு' பானம் 'வருகிறது!'\n {else} {print} 'மன்னிக்கவும், நாங்கள் அதை விற்கவில்லை'\n `` `\n" + 6: + example_code: "இது போன்ற ஒரு எளிய உணவக குறியீட்டை நீங்கள் உருவாக்கலாம்:\n `` `\n {print} 'உணவகத்திற்கு வரவேற்கிறோம் செச் எடி'\n {print} 'இங்கே எங்கள் மெனு:'\n {print} 'எங்கள் முக்கிய படிப்புகள் பீச்சா, லாசாக்னே அல்லது ஆரவாரமானவை'\n main = {ask} 'நீங்கள் எந்த முக்கிய பாடத்தை விரும்புகிறீர்கள்?'\n விலை = 0\n {if} main {is} பீச்சா விலை = 10\n {if} main {is} lasagne விலை = 12\n {if} main {is} ச்பாகெட்டி விலை = 8\n {print} 'நீங்கள் ஆர்டர் செய்துள்ளீர்கள்' மெயின்\n {print} 'அது' விலை 'டாலர்களாக இருக்கும், தயவுசெய்து'\n {print} 'நன்றி, உங்கள் உணவை அனுபவிக்கவும்!'\n `` `\n" + story_text: "இந்த மட்டத்தில் உங்கள் வாடிக்கையாளரின் ஆர்டரின் மொத்த விலையைக் கணக்கிட கணிதத்தைப் பயன்படுத்தலாம், இது உங்கள் மெய்நிகர் உணவகத்தை மிகவும் யதார்த்தமாக்கும்.\n ஆனால் உங்கள் மெய்நிகர் உணவகத்தில் இன்னும் பல விசயங்களையும் நீங்கள் சேர்க்கலாம், எடுத்துக்காட்டாக மேலும் படிப்புகள்.\n\n ### உடற்பயிற்சி\n உங்கள் மெய்நிகர் உணவகத்தில் இன்னும் பல விசயங்களைச் சேர்க்கலாம். உதாரணமாக, உங்களால் முடியுமா ...\n - எத்தனை பேர் வருகிறார்கள் என்று கேளுங்கள், அந்தத் தொகையால் விலையை பெருக்கும்?\n - மற்றொரு பாடத்தைச் சேர்க்கவா?\n - (ரகசிய) கூப்போன்கோடில் நுழையும்போது மக்களுக்கு தள்ளுபடி கொடுக்கவா?\n - குழந்தைகள் மெனுவைச் சேர்க்கவா?\n - சேர்க்க மற்ற வேடிக்கையான விசயங்களைப் பற்றி சிந்திக்கவா?\n" + 13: + story_text: "இந்த மட்டத்தில் உங்கள் குறியீட்டை மேலும் நீட்டிக்க புதிய கட்டளைகளைக் கற்றுக்கொள்வீர்கள்.\n\n ### உடற்பயிற்சி 1\n நிரலில் தர்க்கரீதியான இடத்தில் ஒரு `{and}` மற்றும் ஒரு `{or}` வைக்கவும்.\n\n ### உடற்பயிற்சி 2\n உங்கள் உணவகத்தை குறைந்தது ஒரு {and} `மற்றும் ஒரு` {or} `உடன் விரிவாக்குங்கள்.\n எடுத்துக்காட்டாக, பீட்சாவுக்கு மட்டுமே பொருந்தும் சிறப்பு தள்ளுபடி கூப்பனை உருவாக்கவும் அல்லது உங்கள் வாடிக்கையாளருக்கு இலவச பானத்தை கொடுங்கள்\n பொரியல் மற்றும் அப்பத்தை கொண்டு. அல்லது நிச்சயமாக முற்றிலும் வேறுபட்ட ஒன்று!\n" + example_code: "`` `\n விலை = 10\n உணவு = {ask} 'நீங்கள் என்ன சாப்பிட விரும்புகிறீர்கள்?'\n பானங்கள் = {ask} 'நீங்கள் என்ன குடிக்க விரும்புகிறீர்கள்?'\n {if} உணவு {is} 'சாண்ட்விச்' _ பானங்கள் {is} 'சாறு'\n {print} 'அது எங்கள் தள்ளுபடி மெனு'\n விலை = விலை - 3\n {if} பானங்கள் {is} 'நீர்' _ பானங்கள் {is} 'சாறு'\n {print} 'இது ஆரோக்கியமான தேர்வு'\n {print} 'அது' விலை 'டாலர்கள்' ஆக இருக்கும்\n `` `\n" + 15: + example_code: "`` `\n {print} 'Mchedy இல் வரவேற்கிறோம்'\n மேலும் = 'ஆம்'\n _\n ஆர்டர் = {ask} 'நீங்கள் என்ன ஆர்டர் செய்ய விரும்புகிறீர்கள்?'\n {print} ஆர்டர்\n மேலும் = {ask} 'நீங்கள் வேறு எதையும் ஆர்டர் செய்ய விரும்புகிறீர்களா?'\n {print} 'நன்றி!'\n `` `\n" + story_text: "`{while}` உங்கள் வாடிக்கையாளர்கள் அவர்கள் செய்யும் வரை ஆர்டர்களைச் சேர்ப்பதை உறுதிசெய்ய முடியும்.\n ### பயிற்சிகள்\n இந்த குறியீட்டிற்கு `{` கட்டளையை சரியாகப் பயன்படுத்தவும்.\n" + 2: + story_text: "நிலை 2 இல் மாறிகளைப் பயன்படுத்தி உங்கள் உணவகத்தை விரிவுபடுத்தலாம். நிலை 1 எடியில் `{echo}` ஒரு முறை மட்டுமே ஆர்டர் செய்ய முடியும், மேலும் கட்டளையிடப்பட்ட கடைசி விசயத்தை மட்டுமே நினைவில் வைத்துக் கொள்ளுங்கள்.\n இப்போது நீங்கள் மாறிகளைப் பயன்படுத்தலாம் மற்றும் எடி உணவு மற்றும் மேல்புறங்கள் இரண்டையும் நினைவில் கொள்ளலாம்!\n" + example_code: "`` `\n {print} எடியின் உணவகத்திற்கு வருக!\n {print} இன்று நாங்கள் பீச்சா அல்லது லாசக்னாவுக்கு பணி செய்கிறோம்.\n உணவு {is} {ask} நீங்கள் என்ன சாப்பிட விரும்புகிறீர்கள்?\n {print} சிறந்த தேர்வு! உணவு எனக்கு மிகவும் பிடித்தது!\n முதலிடம் {is} {ask} நீங்கள் அதில் இறைச்சி அல்லது காய்கறிகளை விரும்புகிறீர்களா?\n {print} முதலிடம் பிடித்த உணவு அதன் வழியில் உள்ளது!\n `` `\n" + story_text_2: "### உடற்பயிற்சி\n உங்கள் சொந்த உணவகக் குறியீட்டை முந்தைய நிலைக்கு கீழே உள்ள உள்ளீட்டுத் திரைக்கு நகலெடுக்கவும்.\n `{ask}` மற்றும் `{echo}` கட்டளைகளை மாற்றுவதன் மூலமும், இந்த மட்டத்தில் நீங்கள் கற்றுக்கொண்டதைப் போல மாறிகளைப் பயன்படுத்துவதன் மூலமும் குறியீட்டை சரிசெய்யவும்.\n\n இப்போது உங்கள் குறியீடு மீண்டும் செயல்படுகிறது, மேலும் ஏதாவது சேர்க்க வேண்டிய நேரம் இது.\n எடுத்துக்காட்டு குறியீட்டின் கடைசி வரியைப் பாருங்கள்: `{print} முதலிடம் பிடித்த உணவு அதன் வழியில் உள்ளது!`\n இந்த ஒற்றை வரியில் 2 மாறிகள் வரிசையின் சுருக்கத்தை உருவாக்க பயன்படுத்தப்பட்டுள்ளன.\n இப்போது வாடிக்கையாளர் ஆர்டர் செய்த உணவு மற்றும் பானங்கள் பற்றிய உங்கள் சொந்த சுருக்கத்தை சேர்க்கவும்.\n\n ** கூடுதல் ** இப்போது நீங்கள் மாறிகளை எவ்வாறு பயன்படுத்துவது என்பதை நீங்கள் கற்றுக் கொண்டீர்கள், நீங்கள் விரும்பும் அளவுக்கு ஒரு வரியில் பல மாறிகள் பயன்படுத்தலாம். வைக்கோல் அல்லது இல்லாமல், சாப்பிடுவது அல்லது எடுத்துச் செல்வது போன்ற உங்கள் குறியீட்டில் அதிக மாறிகள் சேர்க்க முடியுமா?\n" + default_save_name: உணவகம் + description: உங்கள் சொந்த மெய்நிகர் உணவகத்தை உருவாக்கவும் + rock: + name: பாறை, காகிதம், கத்தரிக்கோல் + levels: + 1: + story_text_2: "### உடற்பயிற்சி\n சொற்களைப் பயன்படுத்துவதற்குப் பதிலாக, நீங்கள் ஈமோசிகளையும் பயன்படுத்தலாம்:\n ஈமோசிகளைப் பயன்படுத்தி ஒரு குறியீட்டை உருவாக்க முடியுமா?\n" + example_code_2: "`` `\n {print} நீங்கள் எதை தேர்வு செய்கிறீர்கள்?\n {கேளுங்கள் _ _ தேர்வு\n {ask} எனவே உங்கள் தேர்வு:\n `` `\n" + example_code: "`` `\n {print} நீங்கள் எதை தேர்வு செய்கிறீர்கள்?\n {ask} பாறை, காகிதம் அல்லது கத்தரிக்கோல் ஆகியவற்றிலிருந்து தேர்வு செய்யவும்\n {echo} எனவே உங்கள் தேர்வு:\n `` `\n" + story_text: "நிலை 1 இல் நீங்கள் ஒரு பாறை, காகிதம், கத்தரிக்கோல் விளையாட்டுடன் தொடங்கலாம்.\n\n `{ask}` நீங்கள் ஒரு தேர்வு செய்யலாம், மேலும் `{echo}` நீங்கள் அந்த தேர்வை மீண்டும் செய்யலாம்.\n" + 2: + example_code: "`` `\n தேர்வு {is} பாறை\n {print} நான் தேர்வு _\n `` `" + story_text: "இந்த மட்டத்தில் நீங்கள் மாறிகளைப் பயன்படுத்தி பயிற்சி செய்யலாம், இதன் மூலம் நீங்கள் அடுத்த கட்டத்தில் பாறை, காகிதம், கத்தரிக்கோல் விளையாட்டை உருவாக்க முடியும்!\n ### உடற்பயிற்சி\n காலியாக ** மாறி ** ஐ நிரப்புவதன் மூலம் குறியீட்டை முடிக்கவும்.\n இந்த விளையாட்டு மிகவும் ஊடாடும் அல்ல, ஆனால் எந்த கவலையும் இல்லை! அடுத்த சாகசத்தில், உங்கள் விளையாட்டை ஊடாடச் செய்ய `{ask}` கட்டளையுடன் மாறிகளை எவ்வாறு பயன்படுத்துவது என்பதைக் கற்றுக்கொள்வீர்கள்!\n" + 3: + story_text: "கணினி ராக், காகிதம் அல்லது கத்தரிக்கோல் எடுக்க அனுமதிக்க நீங்கள் `{at {{at}` கட்டளையைப் பயன்படுத்தலாம்!\n\n ### உடற்பயிற்சி\n {{{random} `கட்டளையைப் பயன்படுத்தி குறியீட்டை முடிக்கவும்.\n" + example_code: "`` `\n தேர்வுகள் {is} பாறை, காகிதம், கத்தரிக்கோல்\n {print} தேர்வுகள் _\n `` `\n" + example_code_2: "`` `\n தேர்வுகள் {is} பாறை, காகிதம், கத்தரிக்கோல்\n பிளேயர்_1 {is} {ask} பிளேயர் 1 இன் பெயர்:\n _\n `` `\n" + story_text_2: "** கூடுதல் ** இரண்டு பிளேயர் விளையாட்டை உருவாக்குங்கள். முதலில் இரு வீரர்களையும் தங்கள் பெயர்களை நிரப்பச் சொல்லுங்கள். கணினி தோராயமாக அவர்களின் தேர்வுகளை எடுக்கட்டும்.\n" + 5: + story_text: "இந்த மட்டத்தில் இது ஒரு டை இல்லையா என்பதை நாம் தீர்மானிக்க முடியும். அதற்காக உங்களுக்கு புதிய `{if}` குறியீடு தேவை.\n\n ### உடற்பயிற்சி\n வெற்றிடங்களை நிரப்புவதன் மூலம் குறியீட்டை முடிக்கவும்:\n * கணினி ஒரு சீரற்ற விருப்பத்தை எடுக்கட்டும்\n * வீரரிடம் அவர்கள் என்ன தேர்வு செய்ய விரும்புகிறார்கள் என்று கேளுங்கள்\n * 4 மற்றும் 5 வது வரியில் சரியான மாறிகள் நிரப்பவும்\n * வரி 6 ஐ முடிக்கவும், இதனால் எடி இது ஒரு டை இல்லையா என்பதை சரிபார்க்க முடியும்.\n" + example_code: "`` `\n விருப்பங்கள் {is} பாறை, காகிதம், கத்தரிக்கோல்\n computer_choice {is} _\n தேர்வு {is} _\n {print} 'நீங்கள் தேர்ந்தெடுத்தீர்கள்' _ _\n {print} 'கணினி தேர்வு' _ _\n {if} _ {is} _ {print} 'tie!' {else} {print} 'no tie'\n `` `\n\n இது ஒரு சமநிலை என்பதை அறிய வெற்றிடங்களில் சரியான குறியீட்டை நிரப்பவும்.\n" + 13: + story_text: "`{and}` கட்டளை மூலம் உங்கள் பாறை, காகிதம், கத்தரிக்கோல் குறியீட்டை சுருக்கலாம்! எடுத்துக்காட்டு குறியீட்டைப் பாருங்கள்.\n\n ### உடற்பயிற்சி\n ஒரு வெற்றியாளர் எப்போதும் முடிவு செய்யப்படும் குறியீட்டை முடிக்கவும். எப்போதும் ஒரு வெற்றியாளர் அச்சிடப்படுகிறார் என்பதை சரிபார்க்க உங்கள் குறியீட்டை சில முறை இயக்கவும்.\n" + example_code: "`` `\n விருப்பங்கள் = 'ராக்', 'காகிதம்', 'கத்தரிக்கோல்'\n your_choice = {ask} 'நீங்கள் என்ன தேர்வு செய்கிறீர்கள்?'\n computer_choice = விருப்பங்கள் {at} {random}\n {print} 'நீங்கள் தேர்வுசெய்க' உங்கள்_சோயிசை தேர்வு செய்கிறீர்கள்\n {print} 'கணினி' கணினி_சோயிசை தேர்வு செய்கிறது\n {if} computer_choice {is} your_choice\n {print} 'டை'\n {if} computer_choice {is} 'ராக்' {and} உங்கள்_சோயிச் {is} 'காகிதம்'\n {print} 'நீங்கள் வெல்வீர்கள்!'\n {if} computer_choice {is} 'ராக்' {and} உங்கள்_சோயிச் {is 'கத்தரிக்கோல்'\n {is} 'கணினி வெற்றி!'\n _\n `` `\n" + 9: + story_text: "இந்த மட்டத்தில் நீங்கள் முழு பாறை, காகிதம், கத்தரிக்கோல் விளையாட்டை `{if}` கட்டளைகளை கூடு கட்டுவதன் மூலம் நிரல் செய்யலாம்.\n\n ### உடற்பயிற்சி\n குறியீட்டை முடிக்க முடியுமா? ஒவ்வொரு கலவையிலும் யார் வென்றார்கள் என்பதை நிரல் சொல்ல வேண்டும்.\n\n ** கூடுதல் ** ஒன்றுக்கு மேற்பட்ட விளையாட்டுகளை விளையாட விரும்புகிறீர்களா? குறியீட்டை விரிவுபடுத்துங்கள், இதனால் நீங்கள் பல சுற்றுகளை விளையாட முடியும். பயனருக்கு எத்தனை சுற்றுகள் விளையாட விரும்புகிறார்கள் என்று கேட்க `{ask}` பயன்படுத்தலாம்.\n" + example_code: "`` `\n தேர்வுகள் = பாறை, காகிதம், கத்தரிக்கோல்\n your_choice {is} {ask} 'நீங்கள் என்ன தேர்வு செய்கிறீர்கள்?'\n {print} 'நீங்கள் தேர்வுசெய்க' உங்கள்_சோயிசை தேர்வு செய்கிறீர்கள்\n computer_choice {print} தேர்வுகள் {at {{at}\n {random} 'கணினி' கணினி_சோயிசை தேர்வு செய்கிறது\n {print} computer_choice {is} your_choice\n {is} 'டை'\n {is} computer_choice {print} பாறை\n {if} your_choice {if} காகிதம்\n {is} 'நீங்கள் வெல்வீர்கள்!'\n {if} your_choice {if} கத்தரிக்கோல்\n {is} 'நீங்கள் இழக்கிறீர்கள்!'\n # இந்த குறியீட்டை முடிக்கவும்\n `` `\n" + 15: + story_text: "### உடற்பயிற்சி\n நீங்கள் கணினியை வெல்லும் வரை விளையாடுங்கள்! ஆனால் முதலில், எடுத்துக்காட்டு குறியீட்டை முடிக்கவும் ...\n" + example_code: "`` `\n வென்றது = 'இல்லை'\n விருப்பங்கள் = 'ராக்', 'காகிதம்', 'கத்தரிக்கோல்'\n {} வென்றது == 'இல்லை'\n your_choice = {while} 'நீங்கள் என்ன தேர்வு செய்கிறீர்கள்?'\n computer_choice = விருப்பங்கள் {ask} {at}\n {random} 'நீங்கள் தேர்ந்தெடுத்தீர்கள்' உங்கள்_சோயிசைத் தேர்ந்தெடுத்தீர்கள்\n {print} 'கணினி' கணினி_சோயிசை தேர்வு செய்தது\n {print} computer_choice == your_choice\n {print} 'டை!'\n {print} computer_choice == 'ராக்' {if} your_choice == 'கத்தரிக்கோல்'\n {and} 'நீங்கள் இழக்கிறீர்கள்!'\n {if} computer_choice == 'ராக்' {if} your_choice == 'காகிதம்'\n {and} 'நீங்கள் வெல்வீர்கள்!'\n வென்றது = 'ஆம்'\n _\n `` `\n" + 10: + example_code: "`` `\n தேர்வுகள் = _\n வீரர்கள் = _\n } for} _\n `` `\n" + story_text: "### உடற்பயிற்சி\n முந்தைய நிலைகளில் நீங்கள் அடிக்கடி உங்கள் சொந்த ராக் பேப்பர் கத்தரிக்கோல் விளையாட்டை உருவாக்கியுள்ளீர்கள். நீங்கள் குறியீட்டை முடித்து, `{for}` கட்டளையைப் பயன்படுத்த முடியுமா?\n" + 4: + story_text: "இந்த மட்டத்தில் நாம் ராக், காகிதம், கத்தரிக்கோல் ஆகியவற்றை மேலும் நிரல் செய்யலாம். ஆனால் நீங்கள் உரையைச் சேர்க்க விரும்பினால், இங்கேயும் மேற்கோள் மதிப்பெண்களைப் பயன்படுத்த வேண்டும்.\n ### உடற்பயிற்சி\n வெற்றிடங்களில் மேற்கோள் குறிகளை நிரப்பவும். மாறி `தேர்வுகள்` மேற்கோள்களுக்கு வெளியே இருக்க வேண்டும் என்பதை நினைவில் கொள்ளுங்கள்.\n" + example_code: "`` `\n தேர்வுகள் {is} பாறை, காகிதம், கத்தரிக்கோல்\n {print} _ கணினி தேர்வு செய்கிறது ..._ தேர்வுகள் {at} {random}\n `` `\n" + default_save_name: ராக்_2 + description: உங்கள் சொந்த பாறை, காகிதம், கத்தரிக்கோல் விளையாட்டை உருவாக்கவும் + simon: + default_save_name: சைமன் + description: சைமனின் ஒரு விளையாட்டை உருவாக்குங்கள் + name: சைமன் கூறுகிறார் + levels: + 16: + example_code: "`` `\n # 2 பட்டியல்களை உருவாக்குங்கள்\n வண்ணங்கள் = _\n _ = ['வெற்று', 'பட்டியல்']\n } சைமன்_ வரிசையில் இருந்து} _ {ஐ அகற்று\n {remove} _\n\n # வண்ணத்தை சேர்க்கும் செயல்பாட்டை உருவாக்கவும்\n _ ADD_RANDOM_COLOR\n _\n {from} _\n\n # சைமன்_ வரிசைமுறையைக் காட்டும் ஒரு செயல்பாட்டை உருவாக்கவும்\n {remove} _\n {add} i {define} {for} 1 {in} _\n {range} _\n _\n _\n\n # உங்கள் நிரலை சோதிக்கவும்\n {to} _\n {print} show_simon_ with {call} 1\n `` `\n" + story_text: "சைமனின் விளையாட்டை உருவாக்குவோம்! சைமன் கூறுகிறார், ஒரு நினைவக விளையாட்டு, அதில் வீரருக்கு ஒரு வண்ணம் வழங்கப்படும். அவர்கள் அந்த நிறத்தை மீண்டும் செய்ய வேண்டும்.\n அவர்கள் அதை சரியாகப் பெற்றால், ஒரு வண்ணம் வரிசையில் சேர்க்கப்படுகிறது, எனவே அவை இப்போது 2 வண்ணங்கள், பின்னர் 3, பின்னர் 4 போன்றவற்றை நினைவில் கொள்ள வேண்டும். வீரர் தவறு செய்தவுடன் விளையாட்டு நிறுத்தப்படும்.\n\n ### உடற்பயிற்சி\n சைமன் சேக் அட்வென்ச்சரின் இந்த முதல் பகுதியில், கணினி ஒரு சீரற்ற வண்ணத்தைத் தேர்ந்தெடுத்து அதை ஒரு பட்டியலில் சேர்க்க அனுமதிப்போம்.\n\n *** 2 பட்டியல்களை உருவாக்குங்கள் *** முதலில், `வண்ணங்கள்` என்று அழைக்கப்படும் பட்டியலை உருவாக்கி சிவப்பு, மஞ்சள், பச்சை மற்றும் நீல வண்ணங்களுடன் நிரப்பவும்.\n பின்னர் `சைமன்_ வரிசைமுறை` என்ற பட்டியலை உருவாக்கவும். இந்த பட்டியல் பதிலாக பயன்படுத்தப்படும்.\n விளையாட்டின் தொடக்கத்தில் இந்த பட்டியல்கள் காலியாக இருக்க வேண்டும். துரதிர்ச்டவசமாக, எங்களால் ஒரு வெற்று பட்டியலை (இன்னும்) உருவாக்க முடியாது, எனவே அதை 'வெற்று' மற்றும் 'பட்டியல்' என்ற சொற்களால் நிரப்புவோம், அவற்றை உடனடியாக பட்டியலிலிருந்து அகற்றுவோம்.\n\n *** வரிசைக்கு ஒரு வண்ணத்தை சேர்க்கும் ஒரு செயல்பாட்டை உருவாக்கவும் *** இப்போது சைமன்_ வரிசைமுறை எனப்படும் வெற்று பட்டியல் எங்களிடம் உள்ளது, அதை சீரற்ற வண்ணங்களுடன் நிரப்ப ஆரம்பிக்கலாம்.\n நாங்கள் அதை ஒரு செயல்பாட்டுடன் செய்கிறோம், எனவே எங்கள் விளையாட்டில் ஒரு புதிய நிலை இருக்கும் ஒவ்வொரு முறையும் அதை அழைக்கலாம். `Add_random_color` எனப்படும் செயல்பாட்டை உருவாக்கவும்.\n பின்னர் சீரற்ற_கோலரை உருவாக்கி சீரற்ற வண்ணமாக அமைக்கவும். அடுத்து, இந்த சீரற்ற வண்ணத்தை சைமன்_ வரிசையில் சேர்க்கவும்.\n\n *** புதிய செயல்பாட்டை `show_simon_ustence` உடன்` நிலை` ஒரு வாதமாக பெயரிடுவதன் மூலம் சைமன்_ வரிசைமுறையைக் காட்டும் ஒரு செயல்பாட்டை உருவாக்கவும். இப்போது நாம் இருக்கும் அளவைப் போலவே பல வண்ணங்களைக் காட்ட விரும்புகிறோம் (நிலை 1 இல் நீங்கள் 1 வண்ணத்தைக் காண்கிறீர்கள், நிலை 2 இல் நீங்கள் 2 வண்ணங்களைக் காணலாம்).\n எனவே `சைமன்_ வரிசைமுறை [i]` ஐ அச்சிட `நிலை` முறை மீண்டும் சொல்கிறோம். ஒவ்வொரு முறையும் ஒரு வண்ணம் காட்டப்படும் போது, 1 நொடிக்கு காத்திருந்து பின்னர் திரையை அழிக்கவும்.\n\n *** உங்கள் நிரலை சோதிக்கவும் *** நீங்கள் அடுத்த நிலைக்குச் செல்வதற்கு முன், இரண்டு செயல்பாடுகளையும் அழைப்பதன் மூலம் செயல்பாடுகள் செயல்படுகின்றனவா என்பதை சோதிக்கவும். அவர்கள் வேலை செய்தால், உங்கள் வெளியீட்டுத் திரையில் ஒரு சீரற்ற வண்ணத்தைக் காண வேண்டும்.\n உங்கள் குறியீட்டின் இந்த சோதனை பகுதியை அகற்றி, குறியீட்டை நகலெடுத்து, அடுத்த சாகசத்தைத் தொடரவும் சைமன் சேச் கேம் பற்றி மேலும் அறிய!\n" + simon_2: + name: சைமன் 2 என்கிறார் 2 + default_save_name: சைமன் + levels: + 16: + example_code: "`` `\n # உங்கள் குறியீட்டை இங்கே ஒட்டவும்\n\n\n # பிளேயர்_ வரிசையை உருவாக்கும் ஒரு செயல்பாட்டை உருவாக்கவும்\n {define} _\n } for} _\n _ 'நான்' வண்ண எண் என்றால் என்ன? '\n {for} பதில் {add} _\n\n # அமைக்கவும்\n நிலை = _\n game_over = _\n {to} _\n _ 1\n _\n `` `\n" + story_text: "எங்கள் சைமன் சேதத்துடன் தொடருவோம்!\n\n ### உடற்பயிற்சி\n *** உங்கள் குறியீட்டை இங்கே ஒட்டவும் *** முந்தைய மட்டத்திலிருந்து உங்கள் குறியீட்டை இங்கே ஒட்டவும். செயல்பாடுகளைச் சோதிக்க இப்போது பயன்படுத்தப்பட்ட பகுதியை அகற்ற மறக்காதீர்கள்.\n\n *** பிளேயர்_ வரிசைமுறையை உருவாக்கும் ஒரு செயல்பாட்டை உருவாக்கவும் *** பிளேயரின் பதில்களைப் பிடிக்க `பிளேயர்_ வரிசைமுறை` பட்டியல் பயன்படுத்தப்படுகிறது. முதலில் நாம் செயல்பாட்டை வாத மட்டத்துடன் வரையறுக்கிறோம்.\n அடுத்து, அவர்கள் தேர்ந்தெடுக்கும் நிறம் என்ன என்பதை நிலை நேரங்களைக் கேட்கிறோம். அந்த மாறியை `பதில்` என்று அழைக்கிறோம். பிளேயர்_ வரிசையில் பட்டியலுக்கு `பதில்` என்ற மாறியைச் சேர்க்கிறோம்.\n\n *** விளையாட்டை அமைத்தல் *** அடுத்த சாகசத்தில் விளையாட்டை நிரல் செய்வதற்கு முன், எங்களுக்கு சில தொடக்க மாறிகள் தேவைப்படும். முதலில், நாம் `நிலை` 1 ஆகவும்,` கேம்_ஓவர்` மாறி தவறானதாகவும் அமைப்போம்.\n பின்னர் நாங்கள் விளையாட்டுக்கு ஒரு அறிமுகம் செய்கிறோம். 'சைமன் சேருக்கு வரவேற்பு!' 1 விநாடிக்குப் பிறகு திரையை அழிக்கவும்.\n\n *** விளையாட்டை முடிக்க அடுத்த சாகசத்திற்குத் தொடரவும்! **** உங்கள் குறியீட்டை நகலெடுத்து அடுத்த சாகசத்திற்கு உங்களுடன் எடுத்துச் செல்ல மறக்காதீர்கள்.\n" + description: சைமனின் ஒரு விளையாட்டை உருவாக்குங்கள் + secret: + levels: + 13: + example_code: "`` `\n பெயர் = {ask} 'உங்கள் பெயர் என்ன?'\n கடவுச்சொல் = {ask} 'உங்கள் கடவுச்சொல் என்ன?'\n {if} பெயர் {is} 'agent007' _ கடவுச்சொல் {is} 'topsecret'\n {print} '02.00 மணிக்கு விமான நிலையத்திற்குச் செல்லுங்கள்'\n {else}\n {print} '10.00 மணிக்கு ரயில்ச்டேசனுக்குச் செல்லுங்கள்'\n `` `\n" + story_text: "சூப்பர்ச்பி குறியீட்டை `{and}` உடன் எளிமைப்படுத்த முடியும், அதாவது நமக்கு ஒரு `{if}` மட்டுமே தேவை.\n\n ### உடற்பயிற்சி 1\n சரியான கட்டளையை காலியாக நிரப்புவதன் மூலம் குறியீட்டை முடிக்கவும். உதவிக்குறிப்பு: ரகசிய தகவல்களைப் பெறுவதற்கு முன்பு, இரண்டு கேள்விகளுக்கும் சரியாக பதிலளிக்க வேண்டும்!\n\n ### உடற்பயிற்சி 2\n எதிரிகளை இன்னும் குழப்பிக் கொள்ள விரும்புகிறோம்! போலி பதில்களுடன் ஒரு பட்டியலை உருவாக்கி, தவறான பதில் வழங்கப்படும்போது சீரற்ற முறையில் ஒன்றைத் தேர்ந்தெடுக்கவும்.\n" + 12: + story_text: "இந்த சாகசத்தில் நீங்கள் உங்கள் சொந்த சூப்பர் உளவு குறியீட்டை உருவாக்கலாம். சரியான முகவர் மட்டுமே புரிந்துகொள்ளக்கூடிய செய்தியை குறியாக்கம்.\n எதிரி குறியீட்டை சிதைக்க முயற்சித்தால், அவர்களின் நேரத்தை வீணடிக்க சில தவறான தகவல்களைப் பெறுவார்கள்.\n\n ### உடற்பயிற்சி 1\n உங்கள் சூப்பர்ச்பிக்கு உங்கள் சொந்த ரகசிய குறியீட்டை உருவாக்கி, இரு பகுதிகளையும் உண்மையான உளவாளிக்கு மட்டுமே திருப்பித் தரவும்.\n\n ### உடற்பயிற்சி 2\n ஒரு துண்டு ஆடை அல்லது ஒரு பொருள் போன்ற குறியீட்டில் மூன்றாவது கூறுகளைச் சேர்க்கவும்.\n" + example_code: "`` `\n பெயர் = {ask} 'உங்கள் பெயர் என்ன?'\n {if} பெயர் {is} _\n a = 'விமான நிலையத்திற்குச் செல்லுங்கள்'\n {else}\n a = 'ரயில்ச்டேசனுக்குச் செல்லுங்கள்'\n கடவுச்சொல் = {ask} 'கடவுச்சொல் என்றால் என்ன?'\n {if} கடவுச்சொல் {is} _\n b = 'நாளை 02.00 இல்'\n {else}\n b = 'இன்று 10.00 இல்'\n {print} _ _ _ _\n `` `\n" + name: சூப்பர்ச்பி + default_save_name: சூப்பர்ச்பி + description: உங்கள் சொந்த உளவு குறியீட்டை உருவாக்குங்கள் + simon_3: + name: சைமன் 3 கூறுகிறார் + default_save_name: சைமன் + description: சைமனின் ஒரு விளையாட்டை உருவாக்குங்கள் + levels: + 16: + story_text: "இந்த சாகசத்தில் சைமன் கூறும் விளையாட்டை நாங்கள் நிரல் செய்வோம்!\n\n ### உடற்பயிற்சி\n *** உங்கள் குறியீட்டை ஒட்டவும் *** முந்தைய சாகசத்திலிருந்து உங்கள் குறியீட்டை நகலெடுத்து இங்கே ஒட்டவும்.\n\n *** விளையாட்டை நிரல் *** விளையாட்டு முடிவடையாதபோது விளையாட்டு தொடர்கிறது என்பதை உறுதிசெய்கிறோம். பிளேயர் எந்த மட்டத்தில் உள்ளது என்பதை நாங்கள் அச்சிடுகிறோம், அதற்கான மாறி நிலையைப் பயன்படுத்துகிறோம். நாங்கள் அதை 1 நொடிக்கு மட்டுமே காண்பிக்கிறோம், பின்னர் திரையை மீண்டும் அழிக்கிறோம்.\n இப்போது, நாம் வெற்று பட்டியல் பிளேயர்_ வரிசையை உருவாக்க வேண்டும். எங்கள் செயல்பாடு `Player_ Coustence` உடன் பட்டியலை எவ்வாறு நிரப்புவது என்பதை நாங்கள் ஏற்கனவே திட்டமிடியுள்ளோம், ஆனால் நாங்கள் ஒருபோதும் பட்டியலை உருவாக்கவில்லை. பட்டியலை உருவாக்க முந்தைய தாவலில் செய்ததைப் போலவே அதே தந்திரத்தையும் பயன்படுத்துகிறோம்.\n 'வெற்று' மற்றும் 'பட்டியல்' என்ற சொற்களைக் கொண்டு ஒரு பட்டியலை உருவாக்குவோம், பின்னர் இந்த இரண்டு சொற்களையும் அகற்றுவோம். அடுத்து, நாங்கள் உருவாக்கிய 3 செயல்பாடுகள் அனைத்தையும் அழைப்போம்.\n கடைசியாக, வீரர் சரியான பதில்களைக் கொடுத்தாரா என்பதை நாம் சரிபார்க்க வேண்டும் (எனவே பிளேயர்_ வரிசைமுறை மற்றும் சைமன்_ வரிசைமுறை ஆகியவை ஒரே மாதிரியாக இருந்தால்).\n அப்படியானால், நாங்கள் வீரரைப் பாராட்டுவோம். 1 நொடிக்கு காத்திருந்து 1 உடன் அளவை அதிகரிக்கவும்.\n வீரர் தவறான பதிலைக் கொடுத்தாரா, நாங்கள் அவர்களிடம் சொல்லி விளையாட்டை 'உண்மை' என்று அமைப்பதன் மூலம் விளையாட்டை முடிப்போம்\n\n *** உங்கள் விளையாட்டை அனுபவிக்கவும்! *** பெரிய வேலை! உங்கள் விளையாட்டு வேலை செய்யவில்லையா? உங்கள் குறியீட்டை பிழைத்திருத்த லேடிபக் பொத்தானைப் பயன்படுத்தவும்!\n" + example_code: "`` `\n # உங்கள் குறியீட்டை இங்கே ஒட்டவும்\n\n # விளையாட்டு\n } போது} கேம்_ஓவர் _\n {while} _\n _\n _\n _ = ['வெற்று', 'பட்டியல்']\n {print} _\n {remove} _\n {remove} _\n } _ _ _ _ _ _ _ {அழைப்பு\n } _ _ _ _ _ _ _ {அழைப்பு\n {call} player_ cermance == _\n _\n _\n _\n {call}\n _\n game_over = _\n `` `\n" + sleep_command: + name: '{sleep}' + levels: + 2: + example_code: "`` `\n {print} எனக்கு பிடித்த நிறம் ...\n {sleep} 2\n {print} பச்சை!\n `` `\n" + story_text: "இந்த மட்டத்தில் மற்றொரு புதிய கட்டளை `{sleep}` ஆகும், இது உங்கள் திட்டத்தை ஒரு நொடி இடைநிறுத்துகிறது. {sleep} கட்டளைக்கு பின்னால் ஒரு எண்ணைத் தட்டச்சு செய்தால், நிரல் அந்த அளவு விநாடிகளுக்கு இடைநிறுத்தப்படுகிறது.\n\n ### உடற்பயிற்சி\n இந்த புதிய கட்டளையை உங்கள் சொந்த குறியீட்டை உருவாக்குவதன் மூலம் பயிற்சி செய்யுங்கள், அதில் நீங்கள் {sleep} கட்டளையை குறைந்தது 3 முறையாவது பயன்படுத்துகிறீர்கள். ஒவ்வொரு {sleep} கட்டளையுடனும் இடைநிறுத்தப்பட்ட நேரம் வேறுபட வேண்டும்.\n" + default_save_name: ச்லீப்_ கமாண்ட் + description: '{sleep} கட்டளையை அறிமுகப்படுத்துகிறது' + songs: + levels: + 6: + example_code: "`` `\n உரையாடல் = 99\n {print} உரையாடல் 'சுவரில் பீர் பாட்டில்கள்'\n {print} உரையாடல் 'பீர் பாட்டில்கள்'\n {print} 'ஒன்றை கீழே எடுத்து, அதைச் சுற்றி அனுப்பவும்'\n உரையாடல் = உரையாடல் - 1\n {print} உரையாடல் 'சுவரில் பீர் பாட்டில்கள்'\n {sleep}\n `` `\n" + story_text: "பாடல்களில் பெரும்பாலும் நிறைய மறுபடியும் இருக்கும். சில நேரங்களில் மறுபடியும் எண்ணுவதை அடிப்படையாகக் கொண்டது.\n உதாரணமாக, 'பீர் பாட்டில்கள்' என்ற பிரபலமான பாடலில். அந்த பாடலை ஒரு சிறிய கணிதத்துடன் நிரல் செய்யலாம்.\n\n உதவிக்குறிப்பு: பாடலைப் பாட அனுமதிக்க வாசிப்பு உரத்த செயல்பாட்டைப் பயன்படுத்தவும்!\n\n ### உடற்பயிற்சி\n வரிகளை நகலெடுப்பதன் மூலம் நீங்கள் விரும்பும் பல முறை 2 முதல் 7 வரிகளை இப்போது மீண்டும் செய்யலாம்.\n" + story_text_2: "இந்த குழந்தைகளின் பாடல் 5 சிறிய குரங்குகள் முதல் 1 குரங்கு வரை குறைகிறது.\n நீங்கள் வரி 2 - 7 ஐ நகலெடுத்து குறியீட்டின் கீழ் ஒட்டினால், முழு பாடலையும் பாடலாம்!\n" + example_code_2: "`` `\n எண் = 6\n எண் = எண் - 1\n {print} எண் 'படுக்கையில் குதிக்கும் சிறிய குரங்குகள்'\n {print} 'ஒருவர் விழுந்து தலையை முட்டிட்டார்'\n {print} 'மாமா மருத்துவரை அழைத்தார், மருத்துவர் கூறினார்'\n {print} 'இனி குரங்குகள் படுக்கையில் குதிக்காது!'\n {sleep}\n `` `\n" + 10: + story_text: "`{for}` உடன் நீங்கள் அச்சிடலாம் முழு குழந்தை சுறா பாடலையும் (குடும்பத்தில் உள்ள மற்ற அனைத்து சுறாக்கள் உட்பட) 6 வரிகளில் மட்டுமே செய்யுங்கள்!\n\n ### உடற்பயிற்சி 1\n `{For` கட்டளையைப் பயன்படுத்துவதன் மூலம் குழந்தை சுறா குறியீட்டை இன்னும் குறுகியதாக மாற்ற முடியுமா? எடுத்துக்காட்டு குறியீட்டை முடிக்கவும்.\n" + example_code: "`` `\n குடும்பம் = குழந்தை, மம்மி, அப்பா, பாட்டி, தாத்தா\n _ _ _ _\n {print} _\n `` `\n" + example_code_2: "`` `\n குரங்குகள் = 5, 4, 3, 2, 1\n `` `\n" + story_text_2: "### உடற்பயிற்சி 2\n பாடலை ஐந்து சிறிய பணம் படுக்கையில் குதித்து அச்சிடுங்கள். உங்களுக்கு நினைவில் இல்லாவிட்டால் உரையைப் பாருங்கள்.\n\n .\n" + 16: + story_text: "இந்த மட்டத்தில், ஓல்ட்மக்டொனால்ட் போன்ற ஒரு பாடலை இன்னும் விரைவாக நிரல் செய்யலாம். பட்டியலில் ஒரே இடத்தில் வைப்பதன் மூலம் சரியான விலங்கை சரியான ஒலியுடன் இணைக்க முடியும்.\n குடிபோதையில் மாலுமியும் இந்த மட்டத்தில் விரைவாக செய்யப்படுகிறார். முழு பாடலுக்கும் உங்களுக்கு 8 வரிகள் மட்டுமே தேவை, அதைப் பாருங்கள்!\n\n ### உடற்பயிற்சி\n `விலங்குகளை` விலங்குகள் [i]` `மற்றும்` ஒலி` ஆகியவற்றை `ஒலிகளுக்கு [i]` என அமைப்பதன் மூலம் பழைய மெக்டொனால்ட் பாடலை முடிக்கவும்.\n" + example_code: "`` `\n விலங்குகள் = ['பன்றி', 'நாய்', 'மாடு']\n ஒலிகள் = ['ஓங்க்', 'வூஃப்', 'மூ']\n {print} i {in} {range} 1 {print} 3\n விலங்கு = _\n ஒலி = _\n {print} 'பழைய மெக்டொனால்டுக்கு ஒரு பண்ணை இருந்தது'\n {print} 'e i இ i o!'\n {print} 'மற்றும் அந்த பண்ணையில் அவருக்கு ஒரு' விலங்கு இருந்தது\n {print} 'e i இ i o!'\n {print} 'இங்கே' ஒலி ஒலி 'உடன்'\n {print} 'மற்றும் ஒரு' ஒலி ஒலி 'அங்கே'\n {print} 'இங்கே ஒரு' ஒலி\n {print} 'அங்கே ஒரு' ஒலி\n {print} 'எல்லா இடங்களிலும் ஒரு' ஒலி ஒலி\n `` `\n\n `` `\n கோடுகள் = ['குடிபோதையில் மாலுமியுடன் நாம் என்ன செய்ய வேண்டும்', 'அவரது வயிற்றை ஒரு துருப்பிடித்த ரேசருடன் சேவ் செய்யுங்கள்', 'அவரை ஒரு நீண்ட படகில் வைக்கவும்' நிதானமாக இருக்கும் வரை ']\n }} வரிக்கு} வரிகளில்\n {for} i {in} {for} 1 {in} 3\n {range} வரி\n {to} 'அதிகாலையில்'\n {for} i {in} {for} 1 {to} 3\n {range} 'வழி வைக்கோல் மற்றும் அவள் எழுகின்றன'\n {to} 'அதிகாலையில்'\n `` `\n" + 18: + story_text: "நிலை 16 இல் நாங்கள் பட்டியல்களைப் பயன்படுத்தி பாடல்களை உருவாக்கினோம். இருப்பினும் இந்த திட்டங்கள் இனி இந்த மட்டத்தில் சரியாக வேலை செய்யாது. நிலை 17 மற்றும் 18 ஆம் நிலை அடைப்புக்குறிகளிலிருந்து காலன்கள் இன்னும் சேர்க்கப்பட வேண்டும்.\n\n ### உடற்பயிற்சி 1\n குடிபோதையில் மாலுமி பாடல் மாதிரி குறியீடாக வழங்கப்படுகிறது, ஆனால் இன்னும் வேலை செய்யவில்லை.\n எல்லாம் மீண்டும் செயல்படுவதை உறுதி செய்ய முடியுமா? உங்களுக்கு உதவ, _Some_ பிழைகள் உள்ள இடங்களில் _ ஐ வைத்திருக்கிறோம்.\n\n ### உடற்பயிற்சி 2\n இப்போது நிலை 16 இலிருந்து உங்கள் பழைய மெக்டொனால்ட் பாடலையும் பார்த்து, அதை சரிசெய்யவும்.\n" + example_code: "`` `\n கோடுகள் = ['குடிபோதையில் மாலுமியுடன் நாம் என்ன செய்ய வேண்டும்', 'அவரது வயிற்றை ஒரு துருப்பிடித்த ரேசருடன் சேவ் செய்யுங்கள்', 'அவரை ஒரு நீண்ட படகில் வைக்கவும்' நிதானமாக இருக்கும் வரை ']\n }} வரிக்கு} இல்} வரிகள் _\n {print} i {in} {for} 1 {print} 3 _\n {range} _ வரி _\n {in} 'அதிகாலையில்'\n {for} i {in} {for} 1 {to} 3\n {range} 'வழி வைக்கோல் மற்றும் அவள் எழுகின்றன'\n {to} 'அதிகாலையில்'\n `` `\n" + 11: + example_code: "`` `\n _ குரங்குகள் _ _ 5 _ 1\n {print} குரங்குகளின் சிறிய குரங்குகள் படுக்கையில் குதிக்கும் '\n _\n `` `\n" + story_text: "இந்த மட்டத்தில் 5 சிறிய குரங்குகளைப் போல எண்ணுவதைப் பயன்படுத்தும் பாடல்களை உருவாக்க `{range} with உடன்` {{{for {{with உடன் பயன்படுத்தலாம்.\n\n ### உடற்பயிற்சி 1\n வெற்றிடங்களை நிரப்பி, குறியீட்டைச் செயல்படுத்துங்கள்! பாடல் உரை உங்களுக்கு நினைவில் இல்லை என்றால், அதை நீங்களே பாருங்கள்.\n\n ### உடற்பயிற்சி 2\n பாடலின் இறுதி வரி மற்றவர்களிடமிருந்து வேறுபட்டது. இந்த வரியை `{for} க்கு க்குள் அச்சிட்டு, சரியாக செயல்படச் செய்ய` {for} if ஐப் பயன்படுத்தவும்.\n" + 12: + story_text: "இந்த பாடலில் 'நீங்கள் மகிழ்ச்சியாக இருந்தால், உங்களுக்குத் தெரிந்தால், உங்கள் கைகளை கைதட்டினால்' நிரல் செய்வதை இன்னும் எளிதாக்க முடியும். எல்லா செயல்களையும் நாம் ஒரு மாறியில் வைக்கலாம் என்பதால், அதைப் பாருங்கள்:\n\n ### உடற்பயிற்சி\n பாடலை சரியாக இயக்க ஒவ்வொரு வரியிலும் சரியான அளவு உள்தள்ளலை சேர்க்க முடியுமா?\n குறிப்பு: எல்லா வரிகளுக்கும் உள்தள்ளல் தேவையில்லை.\n" + example_code: "`` `\n .\n } {} செயலில்} செயல்களில்\n } {for} i {in} {for} 1 {in} 2\n _ {range} 'நீங்கள் மகிழ்ச்சியாக இருந்தால் அது உங்களுக்குத் தெரிந்தால்'\n _ {to} செயல்\n _ {print} 'நீங்கள் மகிழ்ச்சியாக இருந்தால், அது உங்களுக்குத் தெரிந்தால், அதைக் காட்ட விரும்புகிறீர்கள்'\n _ {print} 'நீங்கள் மகிழ்ச்சியாக இருந்தால் அது உங்களுக்குத் தெரிந்தால்'\n _ {print} செயல்\n `` `\n" + 13: + story_text: "முந்தைய சாகசத்தில் ஒரு செயல்பாட்டில் ஒரு வாதத்தை எவ்வாறு பயன்படுத்துவது என்பதை நீங்கள் கற்றுக்கொண்டீர்கள், ஆனால் அவற்றை {ask} கட்டளைகளுடனும் இணைக்க முடியும் என்பது உங்களுக்குத் தெரியுமா?\n இந்த எடுத்துக்காட்டில் நாங்கள் 'மை போனி' திட்டத்தை மாற்றி அதை ஊடாடச் செய்துள்ளோம். போனி எங்கே என்று இப்போது உங்களிடம் கேட்கப்படுகிறது.\n" + example_code: "`` `\n {} பாடலுடன்} tice ஐ வரையறுக்கவும்\n {define} 'என் போனி இச்' இடம்\n\n தேர்ந்தெடுக்கப்பட்ட_பிளே = {with} 'போனி எங்கே இருக்க விரும்புகிறீர்கள்?'\n ஒத்த பெயர் = {print} 'அதற்கு மற்றொரு சொல் என்ன?'\n\n {CANSEN_PLACE உடன் {பாடல் {அழைப்பு {\n {ask} பாடல் {ask} ஒத்த பெயர்\n {CANSEN_PLACE உடன் {பாடல் {அழைப்பு {\n `` `\n" + 7: + example_code: "`` `\n {repeat} _ _ {print} 'குழந்தை சுறா tutututututu'\n {print} 'குழந்தை சுறா'\n `` `\n" + story_text: "பாடல்களில் பெரும்பாலும் நிறைய மறுபடியும் இருக்கும். உதாரணமாக ... குழந்தை சுறா! நீங்கள் அதைப் பாடினால், அதையே பாடுகிறீர்கள்:\n\n குழந்தை சுறா துட்டுடுடுடு
\n குழந்தை சுறா துட்டுடுடுடு
\n குழந்தை சுறா துட்டுடுடுடு
\n குழந்தை சுறா\n\n ### உடற்பயிற்சி\n பேபி சுறா பாடலை `{repeat}` மூலம் அச்சிடலாமா? வெற்றிடங்களை மாற்றுவதன் மூலம் குறியீட்டை முடிக்கவா?\n ** கூடுதல் ** குழந்தை சுறாவுக்குப் பிறகு நீங்கள் நிச்சயமாக மற்ற பாடல்களையும் நிரல் செய்யலாம். மீண்டும் மீண்டும் பல பாடல்கள் உள்ளன!\n இன்னும் ஒரு பாடலைப் பற்றி யோசித்து அச்சிட முடியுமா?\n" + 8: + story_text: "முந்தைய மட்டத்தில் நீங்கள் 'பீர் பாட்டில்கள்' பாடலை நிரல் செய்துள்ளீர்கள். ஆனால் `{repeat}` கட்டளை இல்லாமல், நீங்கள் வசனங்களை பல முறை நகலெடுக்க வேண்டியிருந்தது.\n இந்த மட்டத்தில் நீங்கள் ஒரு எளிய வரியைச் சேர்ப்பதன் மூலம் பாடலை 99 முறை மீண்டும் செய்யலாம்!\n\n ### உடற்பயிற்சி\n வெற்றிடங்களில் சரியான கட்டளையைச் சேர்த்து குறியீட்டை சரியாக உள்தள்ளுங்கள்.\n" + example_code: "`` `\n உரையாடல் = 99\n _ 99 {times}\n {print} உரையாடல் 'சுவரில் பீர் பாட்டில்கள்'\n {print} உரையாடல் 'பீர் பாட்டில்கள்'\n {print} 'ஒன்றை கீழே எடுத்து, அதைச் சுற்றி அனுப்பவும்'\n உரையாடல் = உரையாடல் - 1\n {print} உரையாடல் 'சுவரில் பீர் பாட்டில்கள்'\n `` `\n" + name: ஒரு பாடலைப் பாடுங்கள்! + default_save_name: பாடல் + description: ஒரு பாடலை அச்சிடுங்கள் + songs_2: + name: ஒரு பாடலைப் பாடுங்கள்! 2 + default_save_name: பாடல் 2 + levels: + 16: + story_text_2: "### உடற்பயிற்சி 2\n இப்போது நர்சரி ரைம் 'பச்சில் உள்ள சக்கரங்கள்' அதே வழியில் உங்கள் சொந்த குறியீட்டை உருவாக்கவும்!\n" + story_text: "### உடற்பயிற்சி\n நர்சரி ரைம் முடிக்கவும்!\n" + example_code: "`` `\n எண் = ['ஒன்', 'இரண்டு', 'மூன்று', 'நான்கு', 'ஐந்து', 'ஆறு', 'ஏழு', 'எட்டு', 'ஒன்பது', 'பத்து']\n பொருள் = ['அவரது டிரம்சில்', 'ஆன் இச் சூ', 'அவரது முழங்காலில்', 'அவரது வாசலில்', 'அவரது ஐவ்', 'அவரது குச்சிகளில்', 'அப் இன் எவன்', 'ஆன் இச் கேட்' , 'அவரது கொடியின் மீது', 'மீண்டும்']\n\n _\n {print} 'இந்த வயதான மனிதர்'\n {print} 'அவர் விளையாடினார்' _ _\n {print} 'அவர் நிக்-நாக் விளையாடினார்' _\n {print} 'ஒரு நிக்-நாக் நெல்ஆக்'\n {print} 'நாய்க்கு ஒரு எலும்பைக் கொடுங்கள்'\n {print} 'இந்த வயதானவர் வீட்டிற்கு உருண்டார்'\n {sleep} 8\n {clear}\n `` `\n" + example_code_2: "`` `\n பொருள் = ['சக்கரங்கள்', 'கதவுகள்', _]\n இயக்கம் = ['சுற்று மற்றும் சுற்று', 'திறந்த மற்றும் மூடு', _]\n `` `\n" + 12: + story_text: "பாடல்களில் நிறைய மறுபடியும் உள்ளது. ஒரு செயல்பாட்டால் நாம் அதைப் பிடிக்கலாம்!\n ### உடற்பயிற்சி\n செயல்பாட்டுடன் எடுத்துக்காட்டு குறியீட்டைப் பாருங்கள். இரண்டு வரிகளையும் நிரப்பவும், இதனால் முழு பாடல் அச்சிடப்படுகிறது.\n" + example_code: "`` `\n {define} ட்விங்கிள்\n {print} 'ட்விங்கிள்'\n {print} _\n\n {call} ட்விங்கிள்\n {print} 'உலகத்திற்கு மேலே இவ்வளவு உயர்ந்தது'\n {print} 'வானத்தில் ஒரு வைரத்தைப் போல'\n {call} _\n `` `\n" + description: ஒரு பாடல் பாடுங்கள் 2 + tic: + name: டிக்-டாக்-டோ + levels: + 16: + example_code: "`` `\n # புலம் எனப்படும் பட்டியலை உருவாக்கவும்\n _ = ['.', '.', '.'. '.'. '.'. '.\n\n # புலத்தை அச்சிடும் செயல்பாட்டை உருவாக்கவும்\n {define} print_field\n _\n {print} 'டிக் டாக் டோ'\n {print} புலம் [1] புலம் [2] புலம் [3]\n _\n _\n\n # செயல்பாட்டை அழைக்கவும்\n `` `\n" + story_text: "டிக்-டாக்-டோ விளையாட்டை நிரல் செய்வோம்!\n\n ### உடற்பயிற்சி\n இந்த சாகசத்தில் நாங்கள் ஒரு வெற்றித் துறையை உருவாக்கத் தொடங்குவோம்.\n\n *** புலம் என்ற பட்டியலை உருவாக்கு *** இந்த பட்டியல் எங்கள் விளையாட்டு மைதானமாக இருக்கும். இந்த பட்டியல் 9 புள்ளிகளால் நிரம்பியுள்ளது, ஏனெனில் எங்கள் விளையாட்டின் தொடக்கத்தில் ஃச் மற்றும் ஓ இன்னும் இல்லை.\n\n *** புலத்தை அச்சிடும் ஒரு செயல்பாட்டை உருவாக்கவும் *** முதலில், திரையை அழிக்கவும், இதனால் பழைய விளையாட்டு புலங்கள் அகற்றப்படும். எங்கள் டிக் டாக் டோ புலத்தின் முதல் வரியை அச்சிடுகிறோம். இந்த வரி எங்கள் பட்டியல் புலத்தில் முதல் 3 இடங்களின் நிலைநிறுத்துகிறது.\n நாங்கள் உங்களுக்காக இந்த வரியை ஏற்கனவே திட்டமிடியுள்ளோம். இப்போது இரண்டாவது வரிசையில் 4, 5, மற்றும் 6 ஐ அச்சிடுவதன் மூலம் களத்தை முடிக்கவும், மூன்றாவது வரிசையில் 7, 8 மற்றும் 9 ச்பாட்.\n\n *** புலத்தை அச்சிடும் செயல்பாட்டை அழைக்கவும் *** இப்போது செயல்பாட்டை அழைக்கவும்.\n
\n குறியீட்டை இயக்கவும். உங்கள் வெளியீடு இப்படி இருக்க வேண்டும்: \n
\n\n *** அடுத்த சாகசத்தில் தொடரவும் *** அடுத்த சாகசத்தில் விளையாட்டை எவ்வாறு நிரல் செய்வது என்பதை நீங்கள் கற்றுக் கொள்வீர்கள்.\n" + 17: + example_code: "`` `\n # உங்கள் குறியீட்டை இங்கே ஒட்டவும், அதை நிலை 17 ஆதாரமாக மாற்றவும்\n\n # யாராவது வென்றிருந்தால் கண்டறியும் ஒரு செயல்பாட்டை உருவாக்கவும்\n {define} detect_winner {} புலத்துடன், அடையாளம்:\n {with} புலம் [1] == புலம் [2] {if} புலம் [2] == புலம் [3] {and} புலம் [1]! = '.':\n came_over = 'ஆம்'\n {and} 'பிளேயர்' அடையாளம் 'வெற்றி!'\n {print}:\n _\n {elif}:\n came_over = 'இல்லை'\n {else} _\n `` `\n" + story_text: "முந்தைய மட்டத்தில் நீங்கள் ஒரு டிக்-டாக்-டோ விளையாட்டை எவ்வாறு உருவாக்குவது என்பதை கற்றுக்கொண்டீர்கள். விளையாட்டு வேலை செய்கிறது, ஆனால் நீங்கள் இன்னும் வென்றிருக்கிறீர்களா என்று உங்களிடம் கேட்டுக்கொண்டிருப்பதால் மிகவும் எரிச்சலூட்டுகிறது.\n இப்போது எங்களிடம் {elif} கட்டளை உள்ளது, யாராவது வென்றிருக்கிறார்களா என்பதை நாங்கள் தீர்மானிக்க அனுமதிக்கலாம், அது எங்களிடம் கேட்பதை நிறுத்தலாம்!\n\n ### உடற்பயிற்சி\n *** உங்கள் குறியீட்டை ஒட்டவும் *** முந்தைய மட்டத்திலிருந்து உங்கள் குறியீட்டை இங்கே ஒட்டவும், அதை நிலை 17 ஆதாரமாக மாற்றவும். இந்த மட்டத்தில் நீங்கள் ஒரு குறியீட்டைப் பயன்படுத்த கற்றுக்கொண்டீர்கள், ஒவ்வொரு முறையும் நீங்கள் குறியீட்டின் தொகுதியை உருவாக்குகிறீர்கள். சரியான இடங்களில் பெருங்குடல்களைச் சேர்க்கவும்.\n\n ***Create a சார்பு that detects if someone's won*** We have started the சார்பு க்கு you, ஒட்டு it under the சார்பு `print_field` and finish the function. ச்பாட் 1, 2 மற்றும் 3 ஆகியவை ஒரே மாதிரியாக இருக்கிறதா என்று இந்த முதல் குறியீடு சரிபார்க்கிறது என்பதை நீங்கள் காணலாம், ஏனென்றால் அவை இருந்தால் உங்களிடம் ஒரு வரிசையில் 3 உள்ளன.\n It also checks if they அரே not a dot, because if they are, the வரி might have the same குறியிடுகள் on them, but that's just because it's still empty.\n இந்த நிபந்தனைகள் அனைத்தும் நிறைவு செய்யப்பட்டால், விளையாட்டு முடிந்துவிட்டது மற்றும் வெற்றியாளர் அச்சிடப்படுகிறார்.\n வெற்றிபெற அனைத்து வழிகளிலும் இந்த செயல்பாட்டை முடிக்கவும். இதன் பொருள் நீங்கள் இதை மற்ற 2 வரிசைகள், 3 நெடுவரிசைகள் மற்றும் 2 மூலைவிட்டங்களுக்கு செய்ய வேண்டும்.\n If you've finished அனைத்தும் the மற்றொன்று options, the சார்பு should return the variable `game_over` so we can use it in our game.\n\n *** விளையாட்டில் செயல்பாட்டை அழைக்கவும் *** `கேம்_ஓவர் = {ask} 'நீங்கள் வென்றீர்களா?' Now the சார்பு will சரிபார் if there's a winner and the game doesn't need பெறுநர் keep asking anymore!\n\n *** உங்கள் விளையாட்டை அனுபவிக்கவும்! *** பெரிய வேலை! நீங்கள் விளையாட்டை முடித்துவிட்டீர்கள்! அதை விளையாடுவதை அனுபவிக்கவும்!\n" + description: டிக் டாக் டோ விளையாட்டை விளையாடுங்கள்! + default_save_name: Tic + tic_2: + default_save_name: Tic + name: டிக்-டாக்-டோ 2 + description: டிக் டாக் டோ விளையாட்டை விளையாடுங்கள்! + levels: + 16: + story_text: "முந்தைய சாகசத்தில் நீங்கள் ஒரு விளையாட்டு மைதானத்தை எவ்வாறு உருவாக்குவது என்பதை கற்றுக்கொண்டீர்கள். இப்போது விளையாட்டை எவ்வாறு உருவாக்குவது என்பதை நீங்கள் கற்றுக் கொள்வீர்கள்!\n\n ### உடற்பயிற்சி\n *** உங்கள் குறியீட்டை ஒட்டவும் *** முந்தைய சாகசத்திலிருந்து உங்கள் குறியீட்டை இங்கே ஒட்டுவதன் மூலம் தொடங்கவும்.\n\n .\n `கேம்_ஓவர்` மாறி விளையாட்டு முடிந்துவிட்டதா என்று நமக்குக் கூறுகிறது, மேலும் விளையாட்டின் தொடக்கத்தில் 'இல்லை' இருக்க வேண்டும்.\n இது பிளேயர் ஃச் அல்லது பிளேயர் ஓவின் திருப்பமாக இருந்தால் மாறி `அடையாளம் 'சொல்கிறது. மாறியை 'ஃச்' ஆக அமைக்கவும்.\n\n *** விளையாட்டு *** முதலில் ஒரு {கட்டளையைப் பயன்படுத்துங்கள், விளையாட்டு_ஓவர் இல்லை என அமைக்கப்பட்டிருக்கும் போது விளையாட்டு மாறியை இயக்குகிறது என்பதை உறுதிப்படுத்தவும்.\n விளையாட்டின் போது, முதலில் அவர்கள் தேர்ந்தெடுக்கும் இடத்தை வீரரிடம் கேட்கிறோம். பின்னர் அவர்கள் தேர்ந்தெடுத்த எண்ணுடன் புலத்தை மாற்றுகிறோம்.\n நாங்கள் மீண்டும் களத்தை அச்சிடுகிறோம், வீரர் அவர்கள் இன்னும் வென்றிருக்கிறார்களா என்று கேட்கிறோம். கடைசியாக நாம் யாருடைய திருப்பத்தை மாற்ற விரும்புகிறோம், எனவே அடையாளம் 'ஃச்' என்றால் அது 'ஓ' ஆக இருக்க வேண்டும், வேறு வழியிலும் இருக்க வேண்டும்.\n\n *** உங்கள் விளையாட்டை சோதிக்கவும் *** உங்கள் விளையாட்டு வேலை செய்யுமா? சிறந்தது, விளையாடுவதை வேடிக்கையாக இருங்கள்! இல்லையென்றால், உங்கள் குறியீட்டை பிழைத்திருத்த லேடிபக் பொத்தானைப் பயன்படுத்தவும்.\n குறியீட்டில் ஒரு தவறை நீங்கள் கவனித்திருக்கலாம், மற்ற வீரரின் இடத்தை நீங்கள் திருடலாம்! மற்ற நபர் ச்பாட் 1 ஐத் தேர்ந்தெடுத்தால், நீங்கள் அவர்களுக்குப் பிறகு 1 ஐ உள்ளிட்டு அவர்களின் இடத்தை திருடலாம்.\n அது நியாயமில்லை! இந்த சிக்கலை எவ்வாறு சரிசெய்வது என்பதை அறிய அடுத்த சாகசத்திற்குச் செல்லுங்கள்.\n" + example_code: "`` `\n # முந்தைய சாகசத்திலிருந்து உங்கள் குறியீட்டை இங்கே ஒட்டவும்\n\n # மாறிகள் சேர்க்கவும்\n game_over = _\n கையொப்பம் = _\n\n # விளையாட்டு\n {while} _\n தேர்வு = _ 'பிளேயர்' அடையாளம் '_?'\n புலம் [தேர்வு] = _\n _ print_field\n came_over = {ask} _\n } if} sign = 'o'\n கையொப்பம் = _\n _\n கையொப்பம் = _\n `` `\n" + turtle: + name: ஆமை + default_save_name: ஆமை + description: உங்கள் சொந்த வரைபடத்தை உருவாக்குங்கள் + levels: + 1: + example_code: "`` `\n {forward} 100\n {turn} {left}\n `` `\n" + story_text_2: "### உடற்பயிற்சி\n இது ஒரு சிறிய படிக்கட்டின் தொடக்கமாகும். அதை 5 படிகள் செய்ய முடியுமா?\n" + example_code_2: "`` `\n {forward} 20\n {turn} {right}\n {forward} 20\n {turn} {left}\n {forward} 20\n `` `\n" + story_text: "நீங்கள் வரைய எடியையும் பயன்படுத்தலாம். திருப்பங்கள் மற்றும் வரிகளை இணைப்பதன் மூலம், நீங்கள் ஒரு நாற்கை அல்லது படிக்கட்டுகளை உருவாக்கலாம்!\n\n `{forward}` பயன்படுத்தி நீங்கள் ஒரு வரியை முன்னோக்கி வரையலாம். ஆமை எவ்வளவு தூரம் நடக்கும் என்பதை அதன் பின்னால் உள்ள எண் தீர்மானிக்கிறது. `{turn} {right}` கடிகார திசையில் கால் திருப்பத்தை மாற்றுகிறது, `{turn} {left}` கவுண்டரை கடிகார திசையில் மாற்றுகிறது.\n\n நீங்கள் பின்னோக்கி செல்ல விரும்பினால், நீங்கள் `{forward}` கட்டளையைப் பயன்படுத்துகிறீர்கள், ஆனால் எதிர்மறை எண்ணுடன். எனவே எடுத்துக்காட்டாக `{forward} -100`\n" + 8: + example_code_2: "`` `\n படம் = {ask} 'நான் எத்தனை கோணங்களை வரைய வேண்டும்?'\n கோணம் = 360 / படம்\n {repeat} படம் {times}\n {turn} _\n {forward} _\n `` `\n" + example_code: "`` `\n கோணம் = 90\n {repeat} 4 {times}\n {turn} கோணம்\n {forward} 50\n `` `\n" + story_text_2: "** கூடுதல் ** வெவ்வேறு புள்ளிவிவரங்களை ஈர்க்கும் நிரலை இப்போது மேம்படுத்தலாம். குறியீட்டை முடிக்கவும், நீங்கள் விரும்பும் எந்த பலகோணத்தையும் வரையலாம்!\n" + story_text: "இப்போது நாம் பல வரிகளை மீண்டும் செய்ய முடியும், புள்ளிவிவரங்களை மிக எளிதாக உருவாக்க முடியும்.\n நாம் ஒரு முறை மட்டுமே கோணத்தை அமைக்க வேண்டும், பின்னர் அந்த மாறியை `{repeat}` பயன்படுத்த வேண்டும்.\n\n ### உடற்பயிற்சி 1\n எடுத்துக்காட்டு குறியீடு ஒரு சதுரத்தை உருவாக்குகிறது. ஒரு முக்கோணம் அல்லது அறுகோணம் போன்ற மற்றொரு உருவத்தை உருவாக்கும் வகையில் குறியீட்டை மாற்றவும்.\n இதற்கு இரண்டு வரிகளுக்கு மாற்றம் தேவை.\n உதவிக்குறிப்பு: ஒரு முழு வட்டம் 360 டிகிரி.\n\n ### உடற்பயிற்சி 2\n இப்போது குறைந்தது இரண்டு பலகோணங்களைக் கொண்ட ஒரு வரைபடத்தை உருவாக்கவும்.\n" + 9: + example_code: "`` `\n {color} {black}\n {repeat} 3 {times}\n {repeat} 3 {times}\n {forward} 10\n {turn} 120\n {color} {white}\n {forward} 50\n {color} {black}\n `` `\n" + story_text: "இப்போது நாம் `{மீண்டும் {மீண்டும் {{repeat}` பயன்படுத்தலாம், நாங்கள் மிகவும் சிக்கலான புள்ளிவிவரங்களை உருவாக்க முடியும்.\n\n ### உடற்பயிற்சி 1\n இந்த குறியீடு மூன்று கருப்பு முக்கோணங்களை உருவாக்குகிறது, அதை ஐந்து இளஞ்சிவப்பு சதுரங்களாக மாற்றுகிறது.\n\n ** கூடுதல் ** குறைந்தது இரண்டு வெவ்வேறு வடிவ வகைகளைக் கொண்ட உங்கள் சொந்த விருப்பத்தின் உருவத்தை உருவாக்கவும்.\n" + 12: + story_text: "குறைந்த குறியீட்டைக் கொண்ட மிகவும் சிக்கலான புள்ளிவிவரங்களை வரைய நாம் செயல்பாடுகளைப் பயன்படுத்தலாம்.\n ### உடற்பயிற்சி 1\n மூன்று சதுரங்கள் உருவாக்கப்படும் வகையில் செயல்பாட்டை நிரப்பவும். படம் அழகாக இருக்க விரும்பினால், நீங்கள் சதுரங்களுக்கு இடையில் வரிகளை வெண்மையாக மாற்றலாம்.\n\n ### உடற்பயிற்சி 2\n குறியீட்டை இன்னும் குறுகியதாக மாற்ற முடியும். இறுதி வரிகளை `{repeat}` ஆக வைக்கவும், எனவே எண்ணிக்கை அப்படியே உள்ளது.\n\n ### உடற்பயிற்சி 3\n வெவ்வேறு புள்ளிவிவரங்களுடன் உங்கள் சொந்த வரைபடத்தை உருவாக்கவும்.\n புள்ளிவிவரங்களின் எண்ணிக்கையையும் `{repeat}` மற்றும் `{define}` இல் உள்ள புள்ளிவிவரங்களின் வடிவத்தை மாற்றவும்\n" + example_code: "`` `\n {define} சதுர {repeat} 4 {times} {turn} பெறுநர் {forward} a\n {call} நாற்கை\n {forward} 50\n {call} நாற்கை\n {forward} 50\n {call} நாற்கை\n `` `\n" + 4: + example_code: "`` `\n {print} _ வரைதல் புள்ளிவிவரங்கள் _\n கோணம் {is} 90\n {turn} கோணம்\n {forward} 25\n {turn} கோணம்\n {forward} 25\n `` `\n" + story_text: "நிலை 4 இல் நீங்கள் `{print}` மற்றும் `{ask}` ஆகியவற்றுடன் மேற்கோள் மதிப்பெண்களைப் பயன்படுத்த வேண்டும். வரைதல் போது!\n" + example_code_2: "`` `\n {color} {white}\n {forward} -80\n {color} {green}\n {forward} 50\n {color} {yellow}\n {forward} 50\n {color} {red}\n {forward} 50\n `` `\n" + story_text_2: "`{color}` கட்டளையுடன் வரிகளின் நிறத்தையும் மாற்றலாம். உதாரணத்தைப் பாருங்கள்.\n 'கண்ணுக்கு தெரியாத' வரிகளை உருவாக்க `{வண்ணம் {{color}` கட்டளையையும் பயன்படுத்தலாம். நீங்கள் வரைவதைத் தொடங்குவதற்கு முன் திரையில் எங்கும் ஆமை நகர்த்த இந்த வெள்ளை வரிகளைப் பயன்படுத்தலாம்.\n" + 5: + example_code_2: "`` `\n திசை {is} {ask} 'நீங்கள் இடது, வலது அல்லது நேராக முன்னால் செல்ல விரும்புகிறீர்களா?'\n {if} திசை {is} இடது {turn} _\n {if} திசை {is} வலது {turn} _\n {forward} 100\n `` `\n" + story_text: "நிலை 5 இல் நீங்கள் `{if}` உடன் தேர்வு செய்யலாம். எடுத்துக்காட்டாக வெவ்வேறு வகையான புள்ளிவிவரங்களுக்கு இடையில்.\n" + story_text_2: "### உடற்பயிற்சி\n இந்த குறியீட்டில் சரியான எண்களை நிரப்பவும்.\n நீங்கள் அதைச் செய்த பிறகு, விருப்பத்தை பின்னோக்கி சேர்க்க முயற்சி செய்யலாம்.\n\n ** கூடுதல் ** 'இடது' மற்றும் 'வலது' ஆகியவற்றைப் பயன்படுத்துவதற்கு பதிலாக, வடக்கு, கிழக்கு, தெற்கு மற்றும் மேற்கு நோக்கி திட்டத்தை ரீமேக் செய்யுங்கள்.\n இந்த வழியில் நீங்கள் வடகிழக்கு மற்றும் தென்மேற்கு போன்ற பல திசைகளைச் சேர்க்கலாம்.\n" + example_code: "`` `\n {print} 'வரைதல் புள்ளிவிவரங்கள்'\n படம் {is {{is} 'உங்களுக்கு ஒரு நாற்கை அல்லது முக்கோணம் வேண்டுமா?'\n {ask} படம் {if} முக்கோண கோணம் {is 120\n {is} கோணம் {is} 90\n {else} கோணம்\n {is} 25\n {turn} கோணம்\n {forward} 25\n {turn} கோணம்\n {forward} 25\n {turn} கோணம்\n {forward} 25\n `` `\n" + 10: + example_code: "`` `\n {turn} 90\n தூரங்கள் = 10, 20, 30, 40, 50, 60\n }} தூரத்திற்கு} தூரத்தில்\n {for} தூரம்\n `` `\n" + story_text: "இந்த மட்டத்தில் நீங்கள் ஆமை ஒரு உருவத்தை வரையலாம்.\n ஆமை பட்டியலில் உள்ள தூரங்களை ஒவ்வொன்றாக பயணிக்கும், பெரிய மற்றும் பெரிய படிகளை உருவாக்கும்.\n ### உடற்பயிற்சி 1\n சுழற்சியில் 90 டிகிரி திருப்பத்தை சேர்க்கவும், இதனால் ஒரு சுழல் வரையப்படுகிறது.\n பட்டியலில் குறைந்தது 5 எண்களைச் சேர்க்கவும், எனவே சுழல் பெரிதாக வளர்கிறது.\n ** (கூடுதல்) ** சுழல் மற்றொரு வடிவமாக மாற்ற முடியுமா? திருப்பத்திற்கான எண்களுடன் ஆய்வு செய்யுங்கள்!\n ### உடற்பயிற்சி 2\n சுழல் வெளிப்புறமாக வரையப்பட்டு, அதை உள்நோக்கிச் செல்லுமா?\n" + 2: + example_code: "`` `\n {forward} 80\n {turn} 90\n {forward} 50\n {turn} 180\n {forward} 100\n `` `\n" + example_code_2: "`` `\n {print} வரைதல் புள்ளிவிவரங்கள்\n கோணம் {is} 90\n {turn} கோணம்\n {forward} 25\n {turn} கோணம்\n {forward} 25\n {turn} கோணம்\n {forward} 25\n `` `\n" + story_text: "நிலை 1 இல் ஆமை இடது அல்லது வலதுபுறமாக மட்டுமே மாறும். அது கொஞ்சம் சலிப்பு!\n நிலை 2 இல் அவர் தனது மூக்கை எல்லா திசைகளிலும் சுட்டிக்காட்ட முடியும்.\n\n கால் பகுதியை மாற்ற 90 டிகிரி, பாதியை மாற்ற 180, மற்றும் ஒரு முழு வட்டம் 360 டிகிரி ஆகும்.\n\n ### உடற்பயிற்சி\n இந்த குறியீடு இப்போது T என்ற எழுத்தை உருவாக்குகிறது. கடிதத்தை B ஐ உருவாக்க அதை மாற்ற முடியுமா?\n\n ** கூடுதல் ** உங்கள் பெயரில் முதல் ஒன்றைப் போல கடிதத்தை வேறு கடிதமாக மாற்றவும்.\n வண்ணத்தை `{color}` `{white}` இடையில் அமைப்பதன் மூலம் பல எழுத்துக்களையும் செய்யலாம். \n" + story_text_2: "ஆமை `டர்ன்` இல் நீங்கள் மாறிகளைப் பயன்படுத்தலாம்.\n\n ### உடற்பயிற்சி\n ஒரு முக்கோணத்தை உருவாக்கும் குறியீட்டை மாற்றவும். குறிப்பு: நீங்கள் ஒரே இடத்தில் குறியீட்டை மட்டுமே மாற்ற வேண்டும்.\n" + 6: + example_code: "`` `\n கோணங்கள் = {ask} 'உங்களுக்கு எத்தனை கோணங்கள் வேண்டும்?'\n கோணம் = 360 / கோணங்கள்\n {forward} 50\n {turn} கோணம்\n {forward} 50\n {turn} கோணம்\n {forward} 50\n {turn} கோணம்\n {forward} 50\n {turn} கோணம்\n {forward} 50\n {turn} கோணம்\n {forward} 50\n {turn} கோணம்\n `` `\n" + story_text: "இந்த மட்டத்தில் நீங்கள் வெவ்வேறு புள்ளிவிவரங்களை வரைய கணக்கீடுகளைப் பயன்படுத்தலாம்.\n ஒரு முழு வட்டத்தைத் திருப்புவது 360 டிகிரி என்பதை நீங்கள் பள்ளியில் கற்றுக்கொண்டிருக்கலாம். இல்லையென்றால், இப்போது உங்களுக்குத் தெரியும்!\n அதனால்தான் நீங்கள் ஒரு சதுரத்திற்கு 90 டிகிரி பயன்படுத்துகிறீர்கள். 360 4 ஆல் வகுக்கப்படுகிறது 90 ஆகும்.\n இப்போது நாம் எடியுடன் கணிதத்தை செய்ய முடியும், நாம் விரும்பும் அனைத்து புள்ளிவிவரங்களையும் வரையலாம்!\n" + 3: + story_text: "இந்த மட்டத்தில் நீங்கள் {at {{at} `வரை வரைதல் ஆமை மூலம் பயன்படுத்தலாம். ஒரு சீரற்ற தேர்வு ஆமை ஒவ்வொரு முறையும் வெவ்வேறு பாதையில் நடக்க வைக்கிறது.\n ஒரு பட்டியலிலிருந்து ஒரு மதிப்பைத் தேர்வுசெய்ய {{random} `இல் {{at {at {at {at {{at {{at {{at {at {at {at {at ஐப் பயன்படுத்தவும்.\n ### உடற்பயிற்சி\n நீண்ட சீரற்ற பாதையை உருவாக்க 2 மற்றும் 3 வரிகளை நகலெடுத்து ஒட்ட முடியுமா?\n" + example_code: "`` `\n கோணங்கள் {is} 10, 50, 90, 150, 250\n {turn} கோணங்கள் {at {{at}\n {random} 25\n `` `\n" + tic_3: + levels: + 16: + example_code: "`` `\n # உங்கள் குறியீட்டை இங்கே ஒட்டவும்\n\n # தவறை சரிசெய்ய இதைப் பயன்படுத்தவும்\n {if} _ = '.'\n புலம் [தேர்வு] = அடையாளம்\n {else}\n {print} _\n _\n `` `\n" + story_text: "முந்தைய சாகசத்தில் நீங்கள் செய்த குறியீட்டில் ஒரு தவறை நீங்கள் கவனித்திருக்கலாம். மற்ற வீரரின் இடத்தை நீங்கள் திருடலாம்! மற்ற நபர் ச்பாட் 1 ஐத் தேர்ந்தெடுத்தால், நீங்கள் அவர்களுக்குப் பிறகு 1 ஐ உள்ளிட்டு அவர்களின் இடத்தை திருடலாம்.\n அது நியாயமில்லை! இந்த சாகசத்தில் அந்த தவறை சரிசெய்வோம்.\n\n ### உடற்பயிற்சி\n *** உங்கள் குறியீட்டை இங்கே ஒட்டவும் *** முந்தைய சாகசத்திலிருந்து உங்கள் குறியீட்டை இங்கே ஒட்டவும்.\n\n *** தவறை சரிசெய்யவும் *** தவறை சரிசெய்ய `புலம் [தேர்வு] = அடையாளம்` என்று கூறும் வரியை மாற்றுவோம். இது வீரர் தங்கள் அடையாளத்தில் தேர்ந்தெடுத்த எந்த இடத்தையும் மாற்றுகிறது.\n 'தவறை சரிசெய்ய இதைப் பயன்படுத்துங்கள்' என்று சொல்லும் தலைப்புக்குச் சென்று குறியீட்டை முடிக்கவும். தேர்ந்தெடுக்கப்பட்ட இடம் இன்னும் காலியாக இருக்கிறதா என்று முதலில் சரிபார்க்க விரும்புகிறோம், எனவே `புலம் [தேர்வு] = '.'`. அப்படியானால், அதை எடுக்க நீங்கள் அனுமதிக்கப்படுவீர்கள்.\n நாங்கள் வேறு ஒரு கட்டளையை உருவாக்கி 'மன்னிக்கவும், இந்த இடம் காலியாக இல்லாவிட்டால் இந்த இடம் ஏற்கனவே எடுக்கப்பட்டுள்ளது' என்று அச்சிடுகிறோம். கடைசியாக, நாங்கள் ஒரு {sleep} கட்டளையைச் சேர்க்கிறோம், எனவே வீரர்கள் மீண்டும் அழிக்கப்படுவதற்கு முன்பு உரையை படிக்க முடியும்.\n இப்போது இந்த குறியீட்டை நகலெடுத்து, இந்த புதிய குறியீட்டைக் கொண்டு `புலம் [தேர்வு] = அடையாளம்` வரியை மாற்றவும்.\n\n *** உங்கள் விளையாட்டை விளையாடுங்கள்! *** இப்போது விளையாட்டு சரியாக வேலை செய்ய வேண்டும்! நல்ல வேலை!\n ஒரே குறைபாடு என்னவென்றால், நீங்கள் இன்னும் வென்றிருக்கிறீர்களா என்று விளையாட்டு உங்களிடம் கேட்கும் என்று நீங்கள் கொஞ்சம் கோபப்பட முடியும். அதை சரிசெய்ய விரும்புகிறீர்களா? நிலை 17 க்குச் செல்லுங்கள், நாங்கள் அதை சரிசெய்வோம்!\n" + name: டிக்-டாக்-டோ 3 + default_save_name: Tic + description: டிக் டாக் டோ விளையாட்டை விளையாடுங்கள்! + in_command: + default_save_name: in_command + name: '{in}' + description: '} In} கட்டளையை அறிமுகப்படுத்துகிறது' + levels: + 5: + story_text_2: "### உடற்பயிற்சி\n நீங்கள் கற்றுக்கொண்ட கட்டளைகளுடன் வெற்றிடங்களை நிரப்புவதன் மூலம் எடுத்துக்காட்டு குறியீட்டை முடிக்கவும்.\n நீங்கள் குறியீட்டை முடித்ததும், உங்களுடைய சொந்த குறியீட்டை உருவாக்க முயற்சிக்கவும், உங்களைப் பற்றி நீங்கள் நினைத்த கேள்வியைப் பயன்படுத்தவும்.\n" + example_code_2: "`` `\n விலங்குகள் {is} நாய், மாடு, செம்மறி\n பதில் {is} {ask} 'உங்களுக்கு பிடித்த விலங்கு எது?'\n _ பதில் _ விலங்குகள் _ 'என்னுடையது கூட!'\n _ _ 'எனக்கு பிடித்த விலங்குகள் நாய்கள், மாடுகள் மற்றும் செம்மறி'\n `` `\n" + story_text: "## பட்டியல்கள்\n ஏதேனும் ஒரு பட்டியலில் இருக்கிறதா என்று சரிபார்க்க விரும்பினால், இப்போது `{in}` கட்டளையைப் பயன்படுத்தலாம்.\n இந்த குறியீடு அழகாக அச்சிடுகிறது! நீங்கள் பச்சை அல்லது மஞ்சள் தேர்வு செய்தால், இல்லையெனில்.\n" + example_code: "`` `\n greet_colors {is} பச்சை, மஞ்சள்\n பிடித்த_சோலர் {is} {ask} 'உங்களுக்கு பிடித்த நிறம் என்ன?'\n {if} beand_color {in} greet_colors {print} 'அழகான!'\n {else} {print} 'meh'\n `` `\n" + blackjack_4: + levels: + 17: + example_code: "`` `\n # முந்தைய சாகசத்திலிருந்து உங்கள் குறியீட்டை இங்கே ஒட்டவும்\n\n # ஒரு வெற்றியாளரை முடிவு செய்யுங்கள்\n {if} _\n {print} 'அதன் டிரா! மீண்டும் விளையாடுங்கள்! '\n {elif} _\n {print} 'நீங்கள் வெல்வீர்கள்!'\n {elif} _:\n } if} _:\n {if} _\n {print}:\n {print} _\n {else}:\n _\n `` `\n" + story_text: "கடந்த 3 சாகசங்களில் நீங்கள் கிட்டத்தட்ட ஒரு பிளாக் சாக் விளையாட்டை உருவாக்கியுள்ளீர்கள்! ஒரு வெற்றியாளரை தீர்மானிப்பதே செய்ய வேண்டிய ஒரே விசயம்!\n\n ### உடற்பயிற்சி\n *** முந்தைய சாகசத்திலிருந்து உங்கள் குறியீட்டை ஒட்டவும் *** நீங்கள் இதுவரை செய்த குறியீட்டை உங்கள் நிரலாக்கத் துறையில் ஒட்டுவதன் மூலம் தொடங்கவும்.\n\n *** ஒரு வெற்றியாளரை முடிவு செய்யுங்கள் ***\n முதலாவதாக, உங்களுக்கும் வியாபாரிக்கும் சமமான புள்ளிகள் இருந்தால், அது ஒரு சமநிலை.\n இரண்டாவதாக, வியாபாரிக்கு 21 புள்ளிகளுக்கு மேல் இருந்தால், நீங்கள் அவ்வாறு செய்யவில்லை என்றால், நீங்கள் வெற்றியாளர்.\n மூன்றாவதாக, உங்களுக்கும் வணிகர் இருவருக்கும் 22 புள்ளிகளுக்கும் குறைவாக இருந்தால், 21 க்கு மிக அருகில் யார் வந்தார்கள் என்பதை நாங்கள் பார்க்க வேண்டும். யாருக்கு அதிக மதிப்பெண் உள்ளது என்பதை ஒப்பிடுவதன் மூலம் நாங்கள் அதைச் செய்கிறோம். வியாபாரிகளின் மொத்தத்தை விட உங்கள் மொத்தம் அதிகம், பின்னர் நீங்கள் வெற்றியாளர். இல்லையென்றால், வணிகர் செய் பெறுகிறார்.\n கடைசியாக, மற்ற எல்லா சூழ்நிலைகளிலும் (எ.கா. உங்களிடம் 21 புள்ளிகள் உள்ளன, வணிகர் இல்லை, அல்லது நீங்கள் இருவருக்கும் 21 புள்ளிகளுக்கு மேல் உள்ளது) நீங்கள் தோல்வியுற்றவர்.\n\n *** விளையாட்டை அனுபவிக்கவும்! ***\n உங்கள் விளையாட்டு சரியாக வேலை செய்யுமா? ஆச்சரியம்! நீங்கள் ஒரு பெரிய வேலை செய்துள்ளீர்கள்! உங்கள் விளையாட்டை அனுபவிக்கவும்!\n அது இப்போதே வேலை செய்யவில்லை என்றால், எந்த கவலையும் இல்லை, நீங்கள் தவறு செய்திருக்கலாம். லேடிபக் பொத்தானைப் பயன்படுத்தி உங்கள் குறியீட்டை அமைதியாக வைத்திருங்கள்.\n" + name: பிளாக் சாக் 4 + default_save_name: பிளாக் சாக்_4 + description: பிளாக் சாக் பகுதி 4 + guess_my_number: + levels: + 14: + story_text: "இந்த மட்டத்தில் நீங்கள் விளையாட்டை 'என் எண்ணை யூகிக்கவும்'\n\n ### உடற்பயிற்சி\n விளையாட்டை வேலை செய்ய வெற்றிடங்களில் சரியான சின்னங்களை நிரப்பவும்.\n" + example_code: "`` `\n {print} 'எனது எண்ணை யூகிக்கவும்'\n எண்கள் = 1, 2, 3, 4, 5, 6, 7, 8, 9, 10\n எண் = எண்கள் {at} {random}\n விளையாட்டு = 'ஆன்'\n {for} i {in} {range} 1 {to} 10 வரை\n {if} விளையாட்டு == 'ஆன்'\n யூக = {ask} 'இது எந்த எண் என்று நீங்கள் நினைக்கிறீர்கள்?'\n {if} யூகிக்க _ எண்\n {print} 'கீழ்!'\n {if} யூகிக்க _ எண்\n {print} 'உயர்ந்தது!'\n {if} யூகிக்க _ எண்\n {print} 'நீங்கள் வெல்வீர்கள்!'\n விளையாட்டு = 'ஓவர்'\n `` `\n" + name: எனது எண்ணை யூகிக்கவும் + default_save_name: எனது எண்ணை யூகிக்கவும் + description: எனது எண்ணை யூகிக்கவும் + rock_2: + name: பாறை, காகிதம், கத்தரிக்கோல் 2 + default_save_name: ராக்_2 + description: பாறை, காகிதம், கத்தரிக்கோல் பகுதி 2 + levels: + 2: + example_code: "`` `\n தேர்வு {is} _\n {print} நான் தேர்வைத் தேர்வு செய்கிறேன்\n `` `\n" + story_text: "`{ask}` கட்டளையை எவ்வாறு பயன்படுத்துவது என்பதை இப்போது நீங்கள் கற்றுக் கொண்டீர்கள், உங்கள் பாறை, காகிதம், கத்தரிக்கோல் குறியீட்டை ஊடாடும் வகையில் உருவாக்கலாம்!\n\n ### உடற்பயிற்சி\n உங்கள் பாறை, காகிதம், கத்தரிக்கோல் குறியீட்டில் `{ask}` கட்டளை மற்றும் ஒரு கேள்வியைச் சேர்ப்பதன் மூலம் பாறை, காகிதம், கத்தரிக்கோல் குறியீட்டை ஊடாடும் வகையில் செய்யுங்கள்.\n" diff --git a/content/client-messages/ga.yaml b/content/client-messages/ga.yaml new file mode 100644 index 00000000000..0967ef424bc --- /dev/null +++ b/content/client-messages/ga.yaml @@ -0,0 +1 @@ +{} diff --git a/content/client-messages/ml.yaml b/content/client-messages/ml.yaml new file mode 100644 index 00000000000..0967ef424bc --- /dev/null +++ b/content/client-messages/ml.yaml @@ -0,0 +1 @@ +{} diff --git a/content/keywords/ga.yaml b/content/keywords/ga.yaml new file mode 100644 index 00000000000..0967ef424bc --- /dev/null +++ b/content/keywords/ga.yaml @@ -0,0 +1 @@ +{} diff --git a/content/keywords/ml.yaml b/content/keywords/ml.yaml new file mode 100644 index 00000000000..0967ef424bc --- /dev/null +++ b/content/keywords/ml.yaml @@ -0,0 +1 @@ +{} diff --git a/content/pages/ga.yaml b/content/pages/ga.yaml new file mode 100644 index 00000000000..0967ef424bc --- /dev/null +++ b/content/pages/ga.yaml @@ -0,0 +1 @@ +{} diff --git a/content/pages/ml.yaml b/content/pages/ml.yaml new file mode 100644 index 00000000000..0967ef424bc --- /dev/null +++ b/content/pages/ml.yaml @@ -0,0 +1 @@ +{} diff --git a/content/quizzes/de.yaml b/content/quizzes/de.yaml index 948bebc9e0d..da461fb1173 100644 --- a/content/quizzes/de.yaml +++ b/content/quizzes/de.yaml @@ -162,12 +162,12 @@ levels: question_text: Welche Aussage ist wahr? mp_choice_options: - option: Du kannst den `{print}` Befehl benutzen, um Fragen zu stellen. - feedback: Dazu ist frage da + feedback: Dazu ist der `{ask}` Befehl da - option: Du kannst den `{ask}` Befehl benutzen um eine Antwort auszugeben. feedback: Das ist nicht richtig - option: Mit dem `{print}` Befehl kannst du Text erscheinen lassen feedback: Gut - - option: Mit dem {sleep} Befehl kannst du Text vom Bildschirm entfernen. + - option: Mit dem `{sleep}` Befehl kannst du Text vom Bildschirm entfernen. feedback: So funktioniert `{sleep}` nicht. hint: '`{print}` funktioniert genauso wie in Level 1' 2: @@ -213,7 +213,7 @@ levels: question_text: Was wird auf dem Ausgabebildschirm angezeigt, wenn du diesen Code ausführst? code: |- Name {is} Hedy - {print} Hi mein Name ist Name! + {print} Hi mein Name ist Name mp_choice_options: - option: Hi my name is name feedback: Der Variablenname wird durch Hedy ersetzt @@ -358,7 +358,7 @@ levels: feedback: '`{ask}` wird verwendet, um Fragen zu stellen' - option: '`{is}`' feedback: '`{is}` wird verwendet, um eine Liste zu erstellen' - - option: '`{at}` `{random}`' + - option: '`{at} {random}`' feedback: Korrekt! hint: Zufällig bedeutet ohne Plan. 2: @@ -1151,9 +1151,7 @@ levels: question_text: Welches Wort ist falsch im Code? mp_choice_options: - option: |- - ``` - I'm - ``` + `I'm` feedback: Das ist richtig! - option: '`{print}`' feedback: '`{print}` ist richtig geschrieben' @@ -1403,7 +1401,7 @@ levels: Baby shark Baby shark Baby shark - feedback: Was wird wiederholt und was nicht. + feedback: Was wird wiederholt und was nicht? hint: Was wird wiederholt und was nicht? 4: question_text: Welche Ausgabe ist richtig? @@ -1488,7 +1486,7 @@ levels: food = {ask} 'What would you like to eat?' {print} food ``` - feedback: Awesome! + feedback: Gut gemacht! hint: Pay attention to what sould be repeated and what should only be printed once. 7: question_text: Was stimmt mit diesem Code nicht? @@ -2147,7 +2145,7 @@ levels: {print} 10 - i ``` feedback: Das ist richtig! - hint: Es muss eine Berechnung sein... + hint: Es muss eine Berechnung sein… 5: question_text: Was stimmt mit diesem Code nicht? mp_choice_options: @@ -2903,3 +2901,22 @@ levels: feedback: Don't forget the quotation marks! - option: sounds = ['woof', 'moo', 'neigh'] feedback: Great job! + 17: + 8: + mp_choice_options: + - {} + - {} + - feedback: Gut gemacht! + 10: + mp_choice_options: + - {} + - {} + - feedback: Gut gemacht! + 3: + mp_choice_options: + - {} + - {} + - feedback: Gut gemacht! + 5: + mp_choice_options: + - feedback: Gut gemacht! diff --git a/content/quizzes/ga.yaml b/content/quizzes/ga.yaml new file mode 100644 index 00000000000..0967ef424bc --- /dev/null +++ b/content/quizzes/ga.yaml @@ -0,0 +1 @@ +{} diff --git a/content/quizzes/ml.yaml b/content/quizzes/ml.yaml new file mode 100644 index 00000000000..0967ef424bc --- /dev/null +++ b/content/quizzes/ml.yaml @@ -0,0 +1 @@ +{} diff --git a/content/slides/ga.yaml b/content/slides/ga.yaml new file mode 100644 index 00000000000..0967ef424bc --- /dev/null +++ b/content/slides/ga.yaml @@ -0,0 +1 @@ +{} diff --git a/content/slides/ml.yaml b/content/slides/ml.yaml new file mode 100644 index 00000000000..0967ef424bc --- /dev/null +++ b/content/slides/ml.yaml @@ -0,0 +1 @@ +{} diff --git a/content/workbooks/ga.yaml b/content/workbooks/ga.yaml new file mode 100644 index 00000000000..0967ef424bc --- /dev/null +++ b/content/workbooks/ga.yaml @@ -0,0 +1 @@ +{} diff --git a/content/workbooks/ml.yaml b/content/workbooks/ml.yaml new file mode 100644 index 00000000000..0967ef424bc --- /dev/null +++ b/content/workbooks/ml.yaml @@ -0,0 +1 @@ +{} diff --git a/grammars/keywords-ga.lark b/grammars/keywords-ga.lark new file mode 100644 index 00000000000..78416af8f90 --- /dev/null +++ b/grammars/keywords-ga.lark @@ -0,0 +1,54 @@ +_DEFINE: ("define" | "define") _SPACE? +_CALL: ("call" | "call") _SPACE? +_WITH: ("with" | "with") _SPACE? +_DEF: ("def" | "def") _SPACE? +_RETURN: ("return" | "return") _SPACE? +_PRINT: ("print" | "print") _SPACE? +_PLAY: ("play" | "play") _SPACE +_ASK: ("ask" | "ask") +_ECHO: ("echo" | "echo") _SPACE? +_FORWARD: ("forward" | "forward") _SPACE? +_TURN: ("turn" | "turn") _SPACE? +left: ("left" | "left") _SPACE? +right: ("right" | "right") _SPACE? +black: ("black" | "black") _SPACE? +blue: ("blue" | "blue") _SPACE? +brown: ("brown" | "brown") _SPACE? +gray: ("gray" | "gray") _SPACE? +green: ("green" | "green") _SPACE? +orange: ("orange" | "orange") _SPACE? +pink: ("pink" | "pink") _SPACE? +purple: ("purple" | "purple") _SPACE? +red: ("red" | "red") _SPACE? +white: ("white" | "white") _SPACE? +yellow: ("yellow" | "yellow") _SPACE? +_IS: _SPACE ("is" | "is") _SPACE +_STANDALONE_IS: ("is" | "is") +_SLEEP: ("sleep" | "sleep") _SPACE? +_ADD_LIST: ("add" | "add") _SPACE +_TO_LIST: _SPACE? ("to" | "to") +_REMOVE: ("remove" | "remove") _SPACE +_FROM: _SPACE? ("from" | "from") +_AT: _SPACE ("at" | "at") _SPACE +random: ("random" | "random") _SPACE? +_IN: _SPACE ("in" | "in") _SPACE +_NOT_IN: _SPACE ("not in" | "not in") _SPACE +_IF: ("if" | "if") _SPACE +_ELSE: "else" | "else" +_AND: _SPACE? ("and" | "and") _SPACE +_REPEAT: ("repeat" | "repeat") _SPACE +_TIMES: _SPACE ("times" | "times") +_FOR: ("for" | "for") _SPACE +_RANGE: ("range" | "range") _SPACE? +_TO: _SPACE ("to" | "to") _SPACE +_STEP: "step" | "step" +_ELIF: _SPACE? ("elif" | "elif") _SPACE +_INPUT: ("input" | "input") +_OR: _SPACE? ("or" | "or") _SPACE +_WHILE: ("while" | "while") _SPACE +_LENGTH: "length" | "length" +_COLOR : ("color" | "color") _SPACE? +_PRESSED: ("pressed" | "pressed") _SPACE? +clear: ("clear" | "clear") _SPACE? +TRUE: ("true" | "True" | "true" | "True") _SPACE? +FALSE: ("false" | "False" | "false" | "False") _SPACE? diff --git a/grammars/keywords-ml.lark b/grammars/keywords-ml.lark new file mode 100644 index 00000000000..78416af8f90 --- /dev/null +++ b/grammars/keywords-ml.lark @@ -0,0 +1,54 @@ +_DEFINE: ("define" | "define") _SPACE? +_CALL: ("call" | "call") _SPACE? +_WITH: ("with" | "with") _SPACE? +_DEF: ("def" | "def") _SPACE? +_RETURN: ("return" | "return") _SPACE? +_PRINT: ("print" | "print") _SPACE? +_PLAY: ("play" | "play") _SPACE +_ASK: ("ask" | "ask") +_ECHO: ("echo" | "echo") _SPACE? +_FORWARD: ("forward" | "forward") _SPACE? +_TURN: ("turn" | "turn") _SPACE? +left: ("left" | "left") _SPACE? +right: ("right" | "right") _SPACE? +black: ("black" | "black") _SPACE? +blue: ("blue" | "blue") _SPACE? +brown: ("brown" | "brown") _SPACE? +gray: ("gray" | "gray") _SPACE? +green: ("green" | "green") _SPACE? +orange: ("orange" | "orange") _SPACE? +pink: ("pink" | "pink") _SPACE? +purple: ("purple" | "purple") _SPACE? +red: ("red" | "red") _SPACE? +white: ("white" | "white") _SPACE? +yellow: ("yellow" | "yellow") _SPACE? +_IS: _SPACE ("is" | "is") _SPACE +_STANDALONE_IS: ("is" | "is") +_SLEEP: ("sleep" | "sleep") _SPACE? +_ADD_LIST: ("add" | "add") _SPACE +_TO_LIST: _SPACE? ("to" | "to") +_REMOVE: ("remove" | "remove") _SPACE +_FROM: _SPACE? ("from" | "from") +_AT: _SPACE ("at" | "at") _SPACE +random: ("random" | "random") _SPACE? +_IN: _SPACE ("in" | "in") _SPACE +_NOT_IN: _SPACE ("not in" | "not in") _SPACE +_IF: ("if" | "if") _SPACE +_ELSE: "else" | "else" +_AND: _SPACE? ("and" | "and") _SPACE +_REPEAT: ("repeat" | "repeat") _SPACE +_TIMES: _SPACE ("times" | "times") +_FOR: ("for" | "for") _SPACE +_RANGE: ("range" | "range") _SPACE? +_TO: _SPACE ("to" | "to") _SPACE +_STEP: "step" | "step" +_ELIF: _SPACE? ("elif" | "elif") _SPACE +_INPUT: ("input" | "input") +_OR: _SPACE? ("or" | "or") _SPACE +_WHILE: ("while" | "while") _SPACE +_LENGTH: "length" | "length" +_COLOR : ("color" | "color") _SPACE? +_PRESSED: ("pressed" | "pressed") _SPACE? +clear: ("clear" | "clear") _SPACE? +TRUE: ("true" | "True" | "true" | "True") _SPACE? +FALSE: ("false" | "False" | "false" | "False") _SPACE? diff --git a/hedy_content.py b/hedy_content.py index a362b5c0482..050654d0b6e 100644 --- a/hedy_content.py +++ b/hedy_content.py @@ -537,8 +537,15 @@ def get_commands_for_level(self, level, keyword_lang): def deep_translate_keywords(yaml, keyword_language): + """Recurse through a data structure and replace keyword placeholders in any strings we encounter. + + It's easy to make content that doesn't replace properly (make typos in the + amounts of `{` for example), and then our entire build stops. So what we'll + do instead is return the original, untranslated string. This makes it + obvious that something is wrong if the content is looked at, while not + stopping the build. + """ try: - """Recurse through a data structure and replace keyword placeholders in any strings we encounter.""" if isinstance(yaml, str): # this is used to localize adventures linked in slides (PR 3860) yaml = yaml.replace('/raw', f'/raw?keyword_language={keyword_language}') @@ -548,10 +555,9 @@ def deep_translate_keywords(yaml, keyword_language): if isinstance(yaml, dict): return {k: deep_translate_keywords(v, keyword_language) for k, v in yaml.items()} return yaml - except ValueError as E: - raise ValueError(f'Issue in language {keyword_language}. Offending yaml: {yaml}. Error: {E}') - except TypeError as E: - raise TypeError(f'Issue in language {keyword_language}. Offending yaml: {yaml}. Error: {E}') + except Exception as E: + logger.exception(f'Issue in language {keyword_language}. Offending yaml: {yaml}. Error: {E}') + return yaml def get_localized_name(name, keyword_lang): diff --git a/highlighting/highlighting-trad.json b/highlighting/highlighting-trad.json index 1e32b69ffe6..e96e7f2050c 100644 --- a/highlighting/highlighting-trad.json +++ b/highlighting/highlighting-trad.json @@ -1061,6 +1061,65 @@ "yellow": "yellow", "DIGIT": "0123456789" }, + "ga": { + "False": "False", + "True": "True", + "add": "add", + "and": "and", + "ask": "ask", + "at": "at", + "black": "black", + "blue": "blue", + "brown": "brown", + "call": "call", + "clear": "clear", + "color": "color", + "comma": ",", + "def": "def", + "define": "define", + "echo": "echo", + "elif": "elif", + "else": "else", + "false": "false", + "for": "for", + "forward": "forward", + "from": "from", + "gray": "gray", + "green": "green", + "if": "if", + "in": "in", + "input": "input", + "is": "is", + "left": "left", + "length": "length", + "not_in": "not in", + "or": "or", + "orange": "orange", + "pink": "pink", + "play": "play", + "pressed": "pressed", + "print": "print", + "purple": "purple", + "random": "random", + "range": "range", + "red": "red", + "remove": "remove", + "repeat": "repeat", + "return": "return", + "right": "right", + "sleep": "sleep", + "step": "step", + "times": "times", + "to": "to", + "to_list": "to", + "true": "true", + "turn": "turn", + "while": "while", + "white": "white", + "with": "with", + "yellow": "yellow", + "DIGIT": "0123456789" + }, "he": { "False": "False", "True": "True", @@ -1828,6 +1887,65 @@ "yellow": "yellow", "DIGIT": "0123456789" }, + "ml": { + "False": "False", + "True": "True", + "add": "add", + "and": "and", + "ask": "ask", + "at": "at", + "black": "black", + "blue": "blue", + "brown": "brown", + "call": "call", + "clear": "clear", + "color": "color", + "comma": ",", + "def": "def", + "define": "define", + "echo": "echo", + "elif": "elif", + "else": "else", + "false": "false", + "for": "for", + "forward": "forward", + "from": "from", + "gray": "gray", + "green": "green", + "if": "if", + "in": "in", + "input": "input", + "is": "is", + "left": "left", + "length": "length", + "not_in": "not in", + "or": "or", + "orange": "orange", + "pink": "pink", + "play": "play", + "pressed": "pressed", + "print": "print", + "purple": "purple", + "random": "random", + "range": "range", + "red": "red", + "remove": "remove", + "repeat": "repeat", + "return": "return", + "right": "right", + "sleep": "sleep", + "step": "step", + "times": "times", + "to": "to", + "to_list": "to", + "true": "true", + "turn": "turn", + "while": "while", + "white": "white", + "with": "with", + "yellow": "yellow", + "DIGIT": "0123456789" + }, "ms": { "False": "False", "True": "True", diff --git a/safe_format.py b/safe_format.py index 6c25e8028a2..74a8d55f964 100644 --- a/safe_format.py +++ b/safe_format.py @@ -9,7 +9,7 @@ def safe_format(s: str, /, **kwargs): class SafeFormatter(Formatter): def get_value(self, field_name, args, kwargs): if field_name not in kwargs: - return '{' + field_name + '}' + return '{' + str(field_name) + '}' return super().get_value(field_name, args, kwargs) diff --git a/static/js/appbundle.js b/static/js/appbundle.js index 3463338a5dd..d9abad83025 100644 --- a/static/js/appbundle.js +++ b/static/js/appbundle.js @@ -9693,10 +9693,10 @@ Read more: ${P}#error-${t4}`; var sa = ra2 ? Ai2(ra2) : ia2; const aa2 = sa; var ca2 = 1, la = 2, da3 = 4; - var ua2 = "[object Arguments]", ha2 = "[object Array]", ma = "[object Boolean]", ga = "[object Date]", fa2 = "[object Error]", pa2 = "[object Function]", ba2 = "[object GeneratorFunction]", ka = "[object Map]", wa2 = "[object Number]", Aa2 = "[object Object]", _a3 = "[object RegExp]", Ca2 = "[object Set]", va = "[object String]", ya2 = "[object Symbol]", xa = "[object WeakMap]"; + var ua2 = "[object Arguments]", ha2 = "[object Array]", ma = "[object Boolean]", ga2 = "[object Date]", fa2 = "[object Error]", pa2 = "[object Function]", ba2 = "[object GeneratorFunction]", ka = "[object Map]", wa2 = "[object Number]", Aa2 = "[object Object]", _a3 = "[object RegExp]", Ca2 = "[object Set]", va = "[object String]", ya2 = "[object Symbol]", xa = "[object WeakMap]"; var Ea = "[object ArrayBuffer]", Da = "[object DataView]", Ia = "[object Float32Array]", Ta = "[object Float64Array]", Sa = "[object Int8Array]", Ba2 = "[object Int16Array]", Ma = "[object Int32Array]", Pa = "[object Uint8Array]", Na = "[object Uint8ClampedArray]", La = "[object Uint16Array]", za2 = "[object Uint32Array]"; var Oa = {}; - Oa[ua2] = Oa[ha2] = Oa[Ea] = Oa[Da] = Oa[ma] = Oa[ga] = Oa[Ia] = Oa[Ta] = Oa[Sa] = Oa[Ba2] = Oa[Ma] = Oa[ka] = Oa[wa2] = Oa[Aa2] = Oa[_a3] = Oa[Ca2] = Oa[va] = Oa[ya2] = Oa[Pa] = Oa[Na] = Oa[La] = Oa[za2] = true; + Oa[ua2] = Oa[ha2] = Oa[Ea] = Oa[Da] = Oa[ma] = Oa[ga2] = Oa[Ia] = Oa[Ta] = Oa[Sa] = Oa[Ba2] = Oa[Ma] = Oa[ka] = Oa[wa2] = Oa[Aa2] = Oa[_a3] = Oa[Ca2] = Oa[va] = Oa[ya2] = Oa[Pa] = Oa[Na] = Oa[La] = Oa[za2] = true; Oa[fa2] = Oa[pa2] = Oa[xa] = false; function Ra(t4, e3, n3, o3, i3, r3) { var s3, a3 = e3 & ca2, c3 = e3 & la, l3 = e3 & da3; @@ -10700,10 +10700,10 @@ Read more: ${P}#error-${t4}`; const dl2 = ll2; var ul2 = dl2(); const hl2 = ul2; - function ml2(t4) { + function ml3(t4) { return te3(t4) && Wi(t4); } - const gl = ml2; + const gl = ml3; function fl2(t4, e3) { if (e3 === "constructor" && typeof t4[e3] === "function") { return; @@ -61412,6 +61412,46 @@ ${o3}` : i3; "turtle": "\u{1F422}", "unsaved_class_changes": "There are unsaved changes, are you sure you want to leave this page?" }, + "ga": { + "CheckInternet": "Check whether your Internet connection is working.", + "Connection_error": "We couldn't reach the server.", + "Empty_output": "This code works but does not print anything. Add a print command to your code or use the turtle to get output.", + "Errors_found": "You made a mistake! Don't worry, we still ran the program", + "Execute_error": "Something went wrong.", + "Other_error": "Oops! Maybe we made a little mistake.", + "Program_repair": "This could be the correct code, can you fix it?", + "Program_too_long": "Your program takes too long to run.", + "ServerError": "You can help us out by sending an email with the level and your program to hello@hedy.org. In the meantime, try something a little different. Thanks!", + "Transpile_error": "We can't run your program.", + "Transpile_success": "Good job!\nAmazing!\nWell done!\nExcellent!\nYou did great!", + "Transpile_warning": "Warning!", + "Unsaved_Changes": "You have an unsaved program. Do you want to leave without saving it?", + "adventures_completed": "Adventures completed: {number_of_adventures}", + "adventures_restored": "The default adventures have been restored.", + "adventures_tried": "Adventures tried", + "copy_link_to_share": "Copy link to share", + "customization_deleted": "Customizations successfully deleted.", + "dice": "\u{1F3B2}", + "directly_available": "Directly open", + "disabled": "Disabled", + "errors": "Errors", + "fortune": "\u{1F52E}, \u2728", + "graph_title": "Errors per adventure completed on level {level}", + "haunted": "\u{1F987}, \u{1F47B}, \u{1F383}", + "level_title": "Level", + "multiple_keywords_warning": "You are trying to use the keyword {orig_keyword}, but this keyword might have several meanings. Please choose the one you're trying to use from this list and copy paste it in your code, curly braces included: {keyword_list}", + "number_of_errors": "Number of errors: {number_of_errors}", + "one_level_error": "You need to select at least one level.", + "restaurant": "\u{1F363}, \u{1F355}, \u{1F354}", + "rock": "\u2702\uFE0F, \u{1F4DC}, \u{1F5FB}", + "select_all": "Select all", + "selected": "Selected", + "songs": "\u{1F3B5},\u{1F3B6}", + "successful_runs": "Successful runs: {successful_runs}", + "teacher_welcome": "Welcome to Hedy! Your are now the proud owner of a teachers account which allows you to create classes and invite students.", + "turtle": "\u{1F422}", + "unsaved_class_changes": "There are unsaved changes, are you sure you want to leave this page?" + }, "he": { "CheckInternet": "\u05D1\u05D3\u05E7\u05D5 \u05D0\u05DD \u05D7\u05D9\u05D1\u05D5\u05E8 \u05D4\u05D0\u05D9\u05E0\u05D8\u05E8\u05E0\u05D8 \u05E9\u05DC\u05DB\u05DD.\u05DF \u05E4\u05D5\u05E2\u05DC \u05DB\u05E8\u05D0\u05D5\u05D9.", "Connection_error": "\u05DC\u05D0 \u05D4\u05E6\u05DC\u05D7\u05E0\u05D5 \u05DC\u05D4\u05D2\u05D9\u05E2 \u05DC\u05E9\u05E8\u05EA.", @@ -61932,6 +61972,46 @@ ${o3}` : i3; "turtle": "\u{1F422}", "unsaved_class_changes": "There are unsaved changes, are you sure you want to leave this page?" }, + "ml": { + "CheckInternet": "Check whether your Internet connection is working.", + "Connection_error": "We couldn't reach the server.", + "Empty_output": "This code works but does not print anything. Add a print command to your code or use the turtle to get output.", + "Errors_found": "You made a mistake! Don't worry, we still ran the program", + "Execute_error": "Something went wrong.", + "Other_error": "Oops! Maybe we made a little mistake.", + "Program_repair": "This could be the correct code, can you fix it?", + "Program_too_long": "Your program takes too long to run.", + "ServerError": "You can help us out by sending an email with the level and your program to hello@hedy.org. In the meantime, try something a little different. Thanks!", + "Transpile_error": "We can't run your program.", + "Transpile_success": "Good job!\nAmazing!\nWell done!\nExcellent!\nYou did great!", + "Transpile_warning": "Warning!", + "Unsaved_Changes": "You have an unsaved program. Do you want to leave without saving it?", + "adventures_completed": "Adventures completed: {number_of_adventures}", + "adventures_restored": "The default adventures have been restored.", + "adventures_tried": "Adventures tried", + "copy_link_to_share": "Copy link to share", + "customization_deleted": "Customizations successfully deleted.", + "dice": "\u{1F3B2}", + "directly_available": "Directly open", + "disabled": "Disabled", + "errors": "Errors", + "fortune": "\u{1F52E}, \u2728", + "graph_title": "Errors per adventure completed on level {level}", + "haunted": "\u{1F987}, \u{1F47B}, \u{1F383}", + "level_title": "Level", + "multiple_keywords_warning": "You are trying to use the keyword {orig_keyword}, but this keyword might have several meanings. Please choose the one you're trying to use from this list and copy paste it in your code, curly braces included: {keyword_list}", + "number_of_errors": "Number of errors: {number_of_errors}", + "one_level_error": "You need to select at least one level.", + "restaurant": "\u{1F363}, \u{1F355}, \u{1F354}", + "rock": "\u2702\uFE0F, \u{1F4DC}, \u{1F5FB}", + "select_all": "Select all", + "selected": "Selected", + "songs": "\u{1F3B5},\u{1F3B6}", + "successful_runs": "Successful runs: {successful_runs}", + "teacher_welcome": "Welcome to Hedy! Your are now the proud owner of a teachers account which allows you to create classes and invite students.", + "turtle": "\u{1F422}", + "unsaved_class_changes": "There are unsaved changes, are you sure you want to leave this page?" + }, "ms": { "CheckInternet": "Check whether your Internet connection is working.", "Connection_error": "We couldn't reach the server.", @@ -97875,6 +97955,65 @@ def note_with_error(value, err): yellow: "yellow", DIGIT: "0123456789" }; + var ga = { + False: "False", + True: "True", + add: "add", + and: "and", + ask: "ask", + at: "at", + black: "black", + blue: "blue", + brown: "brown", + call: "call", + clear: "clear", + color: "color", + comma: ",", + def: "def", + define: "define", + echo: "echo", + elif: "elif", + else: "else", + false: "false", + for: "for", + forward: "forward", + from: "from", + gray: "gray", + green: "green", + if: "if", + in: "in", + input: "input", + is: "is", + left: "left", + length: "length", + not_in: "not in", + or: "or", + orange: "orange", + pink: "pink", + play: "play", + pressed: "pressed", + print: "print", + purple: "purple", + random: "random", + range: "range", + red: "red", + remove: "remove", + repeat: "repeat", + return: "return", + right: "right", + sleep: "sleep", + step: "step", + times: "times", + to: "to", + to_list: "to", + true: "true", + turn: "turn", + while: "while", + white: "white", + with: "with", + yellow: "yellow", + DIGIT: "0123456789" + }; var he = { False: "False", True: "True", @@ -98642,6 +98781,65 @@ def note_with_error(value, err): yellow: "yellow", DIGIT: "0123456789" }; + var ml = { + False: "False", + True: "True", + add: "add", + and: "and", + ask: "ask", + at: "at", + black: "black", + blue: "blue", + brown: "brown", + call: "call", + clear: "clear", + color: "color", + comma: ",", + def: "def", + define: "define", + echo: "echo", + elif: "elif", + else: "else", + false: "false", + for: "for", + forward: "forward", + from: "from", + gray: "gray", + green: "green", + if: "if", + in: "in", + input: "input", + is: "is", + left: "left", + length: "length", + not_in: "not in", + or: "or", + orange: "orange", + pink: "pink", + play: "play", + pressed: "pressed", + print: "print", + purple: "purple", + random: "random", + range: "range", + red: "red", + remove: "remove", + repeat: "repeat", + return: "return", + right: "right", + sleep: "sleep", + step: "step", + times: "times", + to: "to", + to_list: "to", + true: "true", + turn: "turn", + while: "while", + white: "white", + with: "with", + yellow: "yellow", + DIGIT: "0123456789" + }; var ms = { False: "False", True: "True", @@ -100372,6 +100570,7 @@ def note_with_error(value, err): fr, fr_CA, fy, + ga, he, hi, hr, @@ -100385,6 +100584,7 @@ def note_with_error(value, err): kmr, ko, mi, + ml, ms, nb_NO, ne, @@ -125934,7 +126134,7 @@ def note_with_error(value, err): var fl = `te.${Li}`; var Ab = `${Ki}-input-init`; var mt = `${Ki}-active`; - var ml = `${Ki}-initial`; + var ml2 = `${Ki}-initial`; var ah = `${Ki}-placeholder`; var yb = `${Ki}-input-wrapper`; var Wo = "data-te-chip-init"; diff --git a/static/js/appbundle.js.map b/static/js/appbundle.js.map index 9f6697e4c62..69261a00d82 100644 --- a/static/js/appbundle.js.map +++ b/static/js/appbundle.js.map @@ -1,7 +1,7 @@ { "version": 3, "sources": ["../../node_modules/jszip/dist/jszip.min.js", "../../node_modules/@babel/runtime/helpers/arrayWithHoles.js", "../../node_modules/@babel/runtime/helpers/iterableToArrayLimit.js", "../../node_modules/@babel/runtime/helpers/arrayLikeToArray.js", "../../node_modules/@babel/runtime/helpers/unsupportedIterableToArray.js", "../../node_modules/@babel/runtime/helpers/nonIterableRest.js", "../../node_modules/@babel/runtime/helpers/slicedToArray.js", "../../node_modules/@babel/runtime/helpers/classCallCheck.js", "../../node_modules/@babel/runtime/helpers/typeof.js", "../../node_modules/@babel/runtime/helpers/toPrimitive.js", "../../node_modules/@babel/runtime/helpers/toPropertyKey.js", "../../node_modules/@babel/runtime/helpers/createClass.js", "../../node_modules/automation-events/build/es5/bundle.js", "../../node_modules/dompurify/src/utils.js", "../../node_modules/dompurify/src/tags.js", "../../node_modules/dompurify/src/attrs.js", "../../node_modules/dompurify/src/regexp.js", "../../node_modules/dompurify/src/purify.js", "ckeditor.js", "index.ts", "message-translations.ts", "client-messages.ts", "modal.ts", "app.ts", "../../node_modules/tone/Tone/version.ts", "../../node_modules/standardized-audio-context/src/module.ts", "../../node_modules/standardized-audio-context/src/factories/abort-error.ts", "../../node_modules/standardized-audio-context/src/factories/add-active-input-connection-to-audio-node.ts", "../../node_modules/standardized-audio-context/src/factories/add-audio-node-connections.ts", "../../node_modules/standardized-audio-context/src/factories/add-audio-param-connections.ts", "../../node_modules/standardized-audio-context/src/globals.ts", "../../node_modules/standardized-audio-context/src/helpers/is-constructible.ts", "../../node_modules/standardized-audio-context/src/helpers/split-import-statements.ts", "../../node_modules/standardized-audio-context/src/factories/add-audio-worklet-module.ts", "../../node_modules/standardized-audio-context/src/helpers/get-value-for-key.ts", "../../node_modules/standardized-audio-context/src/helpers/pick-element-from-set.ts", "../../node_modules/standardized-audio-context/src/helpers/delete-passive-input-connection-to-audio-node.ts", "../../node_modules/standardized-audio-context/src/helpers/get-event-listeners-of-audio-node.ts", "../../node_modules/standardized-audio-context/src/helpers/set-internal-state-to-active.ts", "../../node_modules/standardized-audio-context/src/guards/audio-worklet-node.ts", "../../node_modules/standardized-audio-context/src/helpers/set-internal-state-to-passive.ts", "../../node_modules/standardized-audio-context/src/helpers/set-internal-state-to-passive-when-necessary.ts", "../../node_modules/standardized-audio-context/src/factories/add-connection-to-audio-node.ts", "../../node_modules/standardized-audio-context/src/factories/add-passive-input-connection-to-audio-node.ts", "../../node_modules/standardized-audio-context/src/factories/add-silent-connection.ts", "../../node_modules/standardized-audio-context/src/factories/add-unrendered-audio-worklet-node.ts", "../../node_modules/standardized-audio-context/src/factories/analyser-node-constructor.ts", "../../node_modules/standardized-audio-context/src/helpers/is-owned-by-context.ts", "../../node_modules/standardized-audio-context/src/factories/analyser-node-renderer-factory.ts", "../../node_modules/standardized-audio-context/src/helpers/test-audio-buffer-copy-channel-methods-out-of-bounds-support.ts", "../../node_modules/standardized-audio-context/src/factories/index-size-error.ts", "../../node_modules/standardized-audio-context/src/helpers/wrap-audio-buffer-get-channel-data-method.ts", "../../node_modules/standardized-audio-context/src/factories/audio-buffer-constructor.ts", "../../node_modules/standardized-audio-context/src/constants.ts", "../../node_modules/standardized-audio-context/src/helpers/is-active-audio-node.ts", "../../node_modules/standardized-audio-context/src/factories/audio-buffer-source-node-constructor.ts", "../../node_modules/standardized-audio-context/src/factories/audio-buffer-source-node-renderer-factory.ts", "../../node_modules/standardized-audio-context/src/guards/audio-buffer-source-node.ts", "../../node_modules/standardized-audio-context/src/guards/biquad-filter-node.ts", "../../node_modules/standardized-audio-context/src/guards/constant-source-node.ts", "../../node_modules/standardized-audio-context/src/guards/gain-node.ts", "../../node_modules/standardized-audio-context/src/guards/oscillator-node.ts", "../../node_modules/standardized-audio-context/src/guards/stereo-panner-node.ts", "../../node_modules/standardized-audio-context/src/helpers/get-audio-node-connections.ts", "../../node_modules/standardized-audio-context/src/helpers/get-audio-param-connections.ts", "../../node_modules/standardized-audio-context/src/helpers/deactivate-active-audio-node-input-connections.ts", "../../node_modules/standardized-audio-context/src/helpers/deactivate-audio-graph.ts", "../../node_modules/standardized-audio-context/src/helpers/is-valid-latency-hint.ts", "../../node_modules/standardized-audio-context/src/factories/audio-context-constructor.ts", "../../node_modules/standardized-audio-context/src/factories/audio-destination-node-constructor.ts", "../../node_modules/standardized-audio-context/src/factories/audio-destination-node-renderer-factory.ts", "../../node_modules/standardized-audio-context/src/factories/audio-listener-factory.ts", "../../node_modules/standardized-audio-context/src/guards/audio-node.ts", "../../node_modules/standardized-audio-context/src/guards/audio-node-output-connection.ts", "../../node_modules/standardized-audio-context/src/helpers/insert-element-in-set.ts", "../../node_modules/standardized-audio-context/src/helpers/add-active-input-connection-to-audio-param.ts", "../../node_modules/standardized-audio-context/src/helpers/add-passive-input-connection-to-audio-param.ts", "../../node_modules/standardized-audio-context/src/guards/native-audio-node-faker.ts", "../../node_modules/standardized-audio-context/src/helpers/connect-native-audio-node-to-native-audio-node.ts", "../../node_modules/standardized-audio-context/src/helpers/delete-active-input-connection.ts", "../../node_modules/standardized-audio-context/src/helpers/delete-active-input-connection-to-audio-param.ts", "../../node_modules/standardized-audio-context/src/helpers/delete-event-listeners-of-audio-node.ts", "../../node_modules/standardized-audio-context/src/helpers/delete-passive-input-connection-to-audio-param.ts", "../../node_modules/standardized-audio-context/src/helpers/disconnect-native-audio-node-from-native-audio-node.ts", "../../node_modules/standardized-audio-context/src/helpers/get-native-audio-node.ts", "../../node_modules/standardized-audio-context/src/helpers/get-native-audio-param.ts", "../../node_modules/standardized-audio-context/src/helpers/is-part-of-a-cycle.ts", "../../node_modules/standardized-audio-context/src/helpers/is-passive-audio-node.ts", "../../node_modules/standardized-audio-context/src/helpers/test-audio-node-disconnect-method-support.ts", "../../node_modules/standardized-audio-context/src/helpers/visit-each-audio-node-once.ts", "../../node_modules/standardized-audio-context/src/guards/native-audio-node.ts", "../../node_modules/standardized-audio-context/src/helpers/wrap-audio-node-disconnect-method.ts", "../../node_modules/standardized-audio-context/src/factories/audio-node-constructor.ts", "../../node_modules/standardized-audio-context/src/factories/audio-param-factory.ts", "../../node_modules/standardized-audio-context/src/factories/audio-param-renderer.ts", "../../node_modules/standardized-audio-context/src/read-only-map.ts", "../../node_modules/standardized-audio-context/src/factories/audio-worklet-node-constructor.ts", "../../node_modules/standardized-audio-context/src/helpers/copy-from-channel.ts", "../../node_modules/standardized-audio-context/src/helpers/copy-to-channel.ts", "../../node_modules/standardized-audio-context/src/helpers/create-nested-arrays.ts", "../../node_modules/standardized-audio-context/src/helpers/get-audio-worklet-processor.ts", "../../node_modules/standardized-audio-context/src/factories/audio-worklet-node-renderer-factory.ts", "../../node_modules/standardized-audio-context/src/factories/base-audio-context-constructor.ts", "../../node_modules/standardized-audio-context/src/factories/biquad-filter-node-constructor.ts", "../../node_modules/standardized-audio-context/src/factories/biquad-filter-node-renderer-factory.ts", "../../node_modules/standardized-audio-context/src/factories/cache-test-result.ts", "../../node_modules/standardized-audio-context/src/factories/channel-merger-node-constructor.ts", "../../node_modules/standardized-audio-context/src/factories/channel-merger-node-renderer-factory.ts", "../../node_modules/standardized-audio-context/src/factories/channel-splitter-node-constructor.ts", "../../node_modules/standardized-audio-context/src/factories/channel-splitter-node-renderer-factory.ts", "../../node_modules/standardized-audio-context/src/factories/connect-audio-param.ts", "../../node_modules/standardized-audio-context/src/factories/connect-multiple-outputs.ts", "../../node_modules/standardized-audio-context/src/factories/connected-native-audio-buffer-source-node-factory.ts", "../../node_modules/standardized-audio-context/src/factories/constant-source-node-constructor.ts", "../../node_modules/standardized-audio-context/src/factories/constant-source-node-renderer-factory.ts", "../../node_modules/standardized-audio-context/src/factories/convert-number-to-unsigned-long.ts", "../../node_modules/standardized-audio-context/src/factories/convolver-node-constructor.ts", "../../node_modules/standardized-audio-context/src/factories/convolver-node-renderer-factory.ts", "../../node_modules/standardized-audio-context/src/factories/create-native-offline-audio-context.ts", "../../node_modules/standardized-audio-context/src/factories/data-clone-error.ts", "../../node_modules/standardized-audio-context/src/helpers/detach-array-buffer.ts", "../../node_modules/standardized-audio-context/src/factories/decode-audio-data.ts", "../../node_modules/standardized-audio-context/src/factories/decrement-cycle-counter.ts", "../../node_modules/standardized-audio-context/src/factories/delay-node-constructor.ts", "../../node_modules/standardized-audio-context/src/factories/delay-node-renderer-factory.ts", "../../node_modules/standardized-audio-context/src/factories/delete-active-input-connection-to-audio-node.ts", "../../node_modules/standardized-audio-context/src/factories/delete-unrendered-audio-worklet-node.ts", "../../node_modules/standardized-audio-context/src/guards/delay-node.ts", "../../node_modules/standardized-audio-context/src/factories/detect-cycles.ts", "../../node_modules/standardized-audio-context/src/factories/disconnect-multiple-outputs.ts", "../../node_modules/standardized-audio-context/src/factories/dynamics-compressor-node-constructor.ts", "../../node_modules/standardized-audio-context/src/factories/dynamics-compressor-node-renderer-factory.ts", "../../node_modules/standardized-audio-context/src/factories/encoding-error.ts", "../../node_modules/standardized-audio-context/src/factories/evaluate-source.ts", "../../node_modules/standardized-audio-context/src/factories/event-target-constructor.ts", "../../node_modules/standardized-audio-context/src/factories/expose-current-frame-and-current-time.ts", "../../node_modules/standardized-audio-context/src/factories/fetch-source.ts", "../../node_modules/standardized-audio-context/src/factories/gain-node-constructor.ts", "../../node_modules/standardized-audio-context/src/factories/gain-node-renderer-factory.ts", "../../node_modules/standardized-audio-context/src/factories/get-active-audio-worklet-node-inputs.ts", "../../node_modules/standardized-audio-context/src/factories/get-audio-node-renderer.ts", "../../node_modules/standardized-audio-context/src/factories/get-audio-node-tail-time.ts", "../../node_modules/standardized-audio-context/src/factories/get-audio-param-renderer.ts", "../../node_modules/standardized-audio-context/src/factories/get-backup-offline-audio-context.ts", "../../node_modules/standardized-audio-context/src/factories/invalid-state-error.ts", "../../node_modules/standardized-audio-context/src/factories/get-native-context.ts", "../../node_modules/standardized-audio-context/src/factories/get-or-create-backup-offline-audio-context.ts", "../../node_modules/standardized-audio-context/src/factories/get-unrendered-audio-worklet-nodes.ts", "../../node_modules/standardized-audio-context/src/factories/invalid-access-error.ts", "../../node_modules/standardized-audio-context/src/helpers/wrap-iir-filter-node-get-frequency-response-method.ts", "../../node_modules/standardized-audio-context/src/factories/iir-filter-node-constructor.ts", "../../node_modules/standardized-audio-context/src/helpers/filter-buffer.ts", "../../node_modules/standardized-audio-context/src/factories/iir-filter-node-renderer-factory.ts", "../../node_modules/standardized-audio-context/src/factories/increment-cycle-counter-factory.ts", "../../node_modules/standardized-audio-context/src/factories/is-any-audio-context.ts", "../../node_modules/standardized-audio-context/src/factories/is-any-audio-node.ts", "../../node_modules/standardized-audio-context/src/factories/is-any-audio-param.ts", "../../node_modules/standardized-audio-context/src/factories/is-any-offline-audio-context.ts", "../../node_modules/standardized-audio-context/src/factories/is-native-audio-context.ts", "../../node_modules/standardized-audio-context/src/factories/is-native-audio-node.ts", "../../node_modules/standardized-audio-context/src/factories/is-native-audio-param.ts", "../../node_modules/standardized-audio-context/src/factories/is-native-context.ts", "../../node_modules/standardized-audio-context/src/factories/is-native-offline-audio-context.ts", "../../node_modules/standardized-audio-context/src/factories/is-secure-context.ts", "../../node_modules/standardized-audio-context/src/factories/media-element-audio-source-node-constructor.ts", "../../node_modules/standardized-audio-context/src/factories/media-stream-audio-destination-node-constructor.ts", "../../node_modules/standardized-audio-context/src/factories/media-stream-audio-source-node-constructor.ts", "../../node_modules/standardized-audio-context/src/factories/media-stream-track-audio-source-node-constructor.ts", "../../node_modules/standardized-audio-context/src/factories/minimal-audio-context-constructor.ts", "../../node_modules/standardized-audio-context/src/factories/minimal-base-audio-context-constructor.ts", "../../node_modules/standardized-audio-context/src/helpers/test-promise-support.ts", "../../node_modules/standardized-audio-context/src/factories/minimal-offline-audio-context-constructor.ts", "../../node_modules/standardized-audio-context/src/factories/monitor-connections.ts", "../../node_modules/standardized-audio-context/src/helpers/assign-native-audio-node-option.ts", "../../node_modules/standardized-audio-context/src/helpers/assign-native-audio-node-options.ts", "../../node_modules/standardized-audio-context/src/helpers/test-analyser-node-get-float-time-domain-data-method-support.ts", "../../node_modules/standardized-audio-context/src/helpers/wrap-analyser-node-get-float-time-domain-data-method.ts", "../../node_modules/standardized-audio-context/src/factories/native-analyser-node-factory.ts", "../../node_modules/standardized-audio-context/src/factories/native-audio-buffer-constructor.ts", "../../node_modules/standardized-audio-context/src/helpers/assign-native-audio-node-audio-param-value.ts", "../../node_modules/standardized-audio-context/src/helpers/wrap-audio-buffer-source-node-start-method-consecutive-calls.ts", "../../node_modules/standardized-audio-context/src/helpers/wrap-audio-scheduled-source-node-start-method-negative-parameters.ts", "../../node_modules/standardized-audio-context/src/helpers/wrap-audio-scheduled-source-node-stop-method-negative-parameters.ts", "../../node_modules/standardized-audio-context/src/factories/native-audio-buffer-source-node-factory.ts", "../../node_modules/standardized-audio-context/src/factories/native-audio-context-constructor.ts", "../../node_modules/standardized-audio-context/src/factories/native-audio-destination-node.ts", "../../node_modules/standardized-audio-context/src/factories/native-audio-worklet-node-constructor.ts", "../../node_modules/standardized-audio-context/src/helpers/test-clonability-of-audio-worklet-node-options.ts", "../../node_modules/standardized-audio-context/src/factories/native-audio-worklet-node-factory.ts", "../../node_modules/standardized-audio-context/src/helpers/compute-buffer-size.ts", "../../node_modules/standardized-audio-context/src/helpers/clone-audio-worklet-node-options.ts", "../../node_modules/standardized-audio-context/src/helpers/create-audio-worklet-processor-promise.ts", "../../node_modules/standardized-audio-context/src/helpers/create-audio-worklet-processor.ts", "../../node_modules/standardized-audio-context/src/factories/native-audio-worklet-node-faker-factory.ts", "../../node_modules/standardized-audio-context/src/factories/native-biquad-filter-node.ts", "../../node_modules/standardized-audio-context/src/factories/native-channel-merger-node-factory.ts", "../../node_modules/standardized-audio-context/src/helpers/wrap-channel-splitter-node.ts", "../../node_modules/standardized-audio-context/src/factories/native-channel-splitter-node.ts", "../../node_modules/standardized-audio-context/src/factories/native-constant-source-node-factory.ts", "../../node_modules/standardized-audio-context/src/helpers/intercept-connections.ts", "../../node_modules/standardized-audio-context/src/factories/native-constant-source-node-faker-factory.ts", "../../node_modules/standardized-audio-context/src/factories/native-convolver-node-factory.ts", "../../node_modules/standardized-audio-context/src/factories/native-delay-node.ts", "../../node_modules/standardized-audio-context/src/factories/native-dynamics-compressor-node-factory.ts", "../../node_modules/standardized-audio-context/src/factories/native-gain-node.ts", "../../node_modules/standardized-audio-context/src/factories/native-iir-filter-node-factory.ts", "../../node_modules/standardized-audio-context/src/factories/native-iir-filter-node-faker-factory.ts", "../../node_modules/standardized-audio-context/src/factories/native-media-element-audio-source-node.ts", "../../node_modules/standardized-audio-context/src/factories/native-media-stream-audio-destination-node.ts", "../../node_modules/standardized-audio-context/src/factories/native-media-stream-audio-source-node.ts", "../../node_modules/standardized-audio-context/src/factories/native-media-stream-track-audio-source-node-factory.ts", "../../node_modules/standardized-audio-context/src/factories/native-offline-audio-context-constructor.ts", "../../node_modules/standardized-audio-context/src/factories/native-oscillator-node-factory.ts", "../../node_modules/standardized-audio-context/src/factories/native-panner-node-factory.ts", "../../node_modules/standardized-audio-context/src/factories/native-panner-node-faker-factory.ts", "../../node_modules/standardized-audio-context/src/factories/native-periodic-wave-factory.ts", "../../node_modules/standardized-audio-context/src/factories/native-script-processor-node.ts", "../../node_modules/standardized-audio-context/src/factories/native-stereo-panner-node-factory.ts", "../../node_modules/standardized-audio-context/src/factories/native-stereo-panner-node-faker-factory.ts", "../../node_modules/standardized-audio-context/src/factories/native-wave-shaper-node-factory.ts", "../../node_modules/standardized-audio-context/src/factories/native-wave-shaper-node-faker-factory.ts", "../../node_modules/standardized-audio-context/src/factories/not-supported-error.ts", "../../node_modules/standardized-audio-context/src/factories/offline-audio-context-constructor.ts", "../../node_modules/standardized-audio-context/src/factories/oscillator-node-constructor.ts", "../../node_modules/standardized-audio-context/src/factories/oscillator-node-renderer-factory.ts", "../../node_modules/standardized-audio-context/src/factories/panner-node-constructor.ts", "../../node_modules/standardized-audio-context/src/factories/panner-node-renderer-factory.ts", "../../node_modules/standardized-audio-context/src/factories/periodic-wave-constructor.ts", "../../node_modules/standardized-audio-context/src/factories/render-automation.ts", "../../node_modules/standardized-audio-context/src/factories/render-inputs-of-audio-node.ts", "../../node_modules/standardized-audio-context/src/factories/render-inputs-of-audio-param.ts", "../../node_modules/standardized-audio-context/src/factories/render-native-offline-audio-context.ts", "../../node_modules/standardized-audio-context/src/factories/set-active-audio-worklet-node-inputs.ts", "../../node_modules/standardized-audio-context/src/factories/set-audio-node-tail-time.ts", "../../node_modules/standardized-audio-context/src/factories/start-rendering.ts", "../../node_modules/standardized-audio-context/src/factories/stereo-panner-node-constructor.ts", "../../node_modules/standardized-audio-context/src/factories/stereo-panner-node-renderer-factory.ts", "../../node_modules/standardized-audio-context/src/factories/test-audio-buffer-constructor-support.ts", "../../node_modules/standardized-audio-context/src/factories/test-audio-worklet-processor-post-message-support.ts", "../../node_modules/standardized-audio-context/src/factories/test-offline-audio-context-current-time-support.ts", "../../node_modules/standardized-audio-context/src/factories/unknown-error.ts", "../../node_modules/standardized-audio-context/src/factories/wave-shaper-node-constructor.ts", "../../node_modules/standardized-audio-context/src/factories/wave-shaper-node-renderer-factory.ts", "../../node_modules/standardized-audio-context/src/factories/window.ts", "../../node_modules/standardized-audio-context/src/factories/wrap-audio-buffer-copy-channel-methods.ts", "../../node_modules/standardized-audio-context/src/factories/wrap-audio-buffer-copy-channel-methods-out-of-bounds.ts", "../../node_modules/standardized-audio-context/src/factories/wrap-audio-buffer-source-node-stop-method-nullified-buffer.ts", "../../node_modules/standardized-audio-context/src/factories/wrap-channel-merger-node.ts", "../../node_modules/standardized-audio-context/src/helpers/get-first-sample.ts", "../../node_modules/standardized-audio-context/src/helpers/is-dc-curve.ts", "../../node_modules/standardized-audio-context/src/helpers/overwrite-accessors.ts", "../../node_modules/standardized-audio-context/src/helpers/sanitize-audio-worklet-node-options.ts", "../../node_modules/standardized-audio-context/src/helpers/sanitize-channel-splitter-options.ts", "../../node_modules/standardized-audio-context/src/helpers/sanitize-periodic-wave-options.ts", "../../node_modules/standardized-audio-context/src/helpers/set-value-at-time-until-possible.ts", "../../node_modules/standardized-audio-context/src/helpers/test-audio-buffer-source-node-start-method-consecutive-calls-support.ts", "../../node_modules/standardized-audio-context/src/helpers/test-audio-buffer-source-node-start-method-offset-clamping-support.ts", "../../node_modules/standardized-audio-context/src/helpers/test-audio-buffer-source-node-stop-method-nullified-buffer-support.ts", "../../node_modules/standardized-audio-context/src/helpers/test-audio-scheduled-source-node-start-method-negative-parameters-support.ts", "../../node_modules/standardized-audio-context/src/helpers/test-audio-scheduled-source-node-stop-method-consecutive-calls-support.ts", "../../node_modules/standardized-audio-context/src/helpers/test-audio-scheduled-source-node-stop-method-negative-parameters-support.ts", "../../node_modules/standardized-audio-context/src/helpers/test-audio-worklet-node-options-clonability.ts", "../../node_modules/standardized-audio-context/src/helpers/wrap-audio-buffer-source-node-start-method-offset-clamping.ts", "../../node_modules/standardized-audio-context/src/helpers/wrap-audio-scheduled-source-node-stop-method-consecutive-calls.ts", "../../node_modules/standardized-audio-context/src/helpers/wrap-event-listener.ts", "../../node_modules/tone/Tone/core/util/Debug.ts", "../../node_modules/tone/Tone/core/util/TypeCheck.ts", "../../node_modules/tone/Tone/core/context/AudioContext.ts", "../../node_modules/tslib/tslib.es6.mjs", "../../node_modules/tone/Tone/core/clock/Ticker.ts", "../../node_modules/tone/Tone/core/util/AdvancedTypeCheck.ts", "../../node_modules/tone/Tone/core/util/Defaults.ts", "../../node_modules/tone/Tone/core/Tone.ts", "../../node_modules/tone/Tone/core/util/Math.ts", "../../node_modules/tone/Tone/core/util/Timeline.ts", "../../node_modules/tone/Tone/core/context/ContextInitialization.ts", "../../node_modules/tone/Tone/core/util/Emitter.ts", "../../node_modules/tone/Tone/core/context/BaseContext.ts", "../../node_modules/tone/Tone/core/context/Context.ts", "../../node_modules/tone/Tone/core/context/DummyContext.ts", "../../node_modules/tone/Tone/core/util/Interface.ts", "../../node_modules/tone/Tone/core/context/ToneAudioBuffer.ts", "../../node_modules/tone/Tone/core/context/OfflineContext.ts", "../../node_modules/tone/Tone/core/Global.ts", "../../node_modules/tone/Tone/core/type/Conversions.ts", "../../node_modules/tone/Tone/core/type/TimeBase.ts", "../../node_modules/tone/Tone/core/type/Time.ts", "../../node_modules/tone/Tone/core/type/Frequency.ts", "../../node_modules/tone/Tone/core/type/TransportTime.ts", "../../node_modules/tone/Tone/core/context/ToneWithContext.ts", "../../node_modules/tone/Tone/core/util/StateTimeline.ts", "../../node_modules/tone/Tone/core/context/Param.ts", "../../node_modules/tone/Tone/core/context/ToneAudioNode.ts", "../../node_modules/tone/Tone/core/context/Gain.ts", "../../node_modules/tone/Tone/source/OneShotSource.ts", "../../node_modules/tone/Tone/signal/ToneConstantSource.ts", "../../node_modules/tone/Tone/signal/Signal.ts", "../../node_modules/tone/Tone/core/clock/TickParam.ts", "../../node_modules/tone/Tone/core/clock/TickSignal.ts", "../../node_modules/tone/Tone/core/clock/TickSource.ts", "../../node_modules/tone/Tone/core/clock/Clock.ts", "../../node_modules/tone/Tone/core/context/ToneAudioBuffers.ts", "../../node_modules/tone/Tone/core/type/Midi.ts", "../../node_modules/tone/Tone/core/type/Ticks.ts", "../../node_modules/tone/Tone/core/util/Draw.ts", "../../node_modules/tone/Tone/core/util/IntervalTimeline.ts", "../../node_modules/tone/Tone/component/channel/Volume.ts", "../../node_modules/tone/Tone/core/context/Destination.ts", "../../node_modules/tone/Tone/core/util/TimelineValue.ts", "../../node_modules/tone/Tone/core/clock/TransportEvent.ts", "../../node_modules/tone/Tone/core/clock/TransportRepeatEvent.ts", "../../node_modules/tone/Tone/core/clock/Transport.ts", "../../node_modules/tone/Tone/source/Source.ts", "../../node_modules/tone/Tone/source/buffer/ToneBufferSource.ts", "../../node_modules/tone/Tone/source/Noise.ts", "../../node_modules/tone/Tone/source/oscillator/OscillatorInterface.ts", "../../node_modules/tone/Tone/source/oscillator/ToneOscillatorNode.ts", "../../node_modules/tone/Tone/source/oscillator/Oscillator.ts", "../../node_modules/tone/Tone/signal/SignalOperator.ts", "../../node_modules/tone/Tone/signal/WaveShaper.ts", "../../node_modules/tone/Tone/signal/AudioToGain.ts", "../../node_modules/tone/Tone/signal/Multiply.ts", "../../node_modules/tone/Tone/source/oscillator/AMOscillator.ts", "../../node_modules/tone/Tone/source/oscillator/FMOscillator.ts", "../../node_modules/tone/Tone/source/oscillator/PulseOscillator.ts", "../../node_modules/tone/Tone/source/oscillator/FatOscillator.ts", "../../node_modules/tone/Tone/source/oscillator/PWMOscillator.ts", "../../node_modules/tone/Tone/source/oscillator/OmniOscillator.ts", "../../node_modules/tone/Tone/core/util/Decorator.ts", "../../node_modules/tone/Tone/source/buffer/Player.ts", "../../node_modules/tone/Tone/component/envelope/Envelope.ts", "../../node_modules/tone/Tone/instrument/Instrument.ts", "../../node_modules/tone/Tone/instrument/Monophonic.ts", "../../node_modules/tone/Tone/component/envelope/AmplitudeEnvelope.ts", "../../node_modules/tone/Tone/instrument/Synth.ts", "../../node_modules/tone/Tone/instrument/MembraneSynth.ts", "../../node_modules/tone/Tone/core/worklet/WorkletGlobalScope.ts", "../../node_modules/tone/Tone/core/worklet/ToneAudioWorkletProcessor.worklet.ts", "../../node_modules/tone/Tone/core/worklet/SingleIOProcessor.worklet.ts", "../../node_modules/tone/Tone/core/worklet/DelayLine.worklet.ts", "../../node_modules/tone/Tone/component/filter/FeedbackCombFilter.worklet.ts", "../../node_modules/tone/Tone/instrument/PolySynth.ts", "../../node_modules/tone/Tone/instrument/Sampler.ts", "../../node_modules/tone/Tone/component/channel/Panner.ts", "../../node_modules/tone/Tone/effect/BitCrusher.worklet.ts", "../../node_modules/tone/Tone/effect/Freeverb.ts", "../../node_modules/tone/Tone/effect/JCReverb.ts", "../../node_modules/tone/Tone/component/channel/Solo.ts", "../../node_modules/tone/Tone/component/channel/PanVol.ts", "../../node_modules/tone/Tone/component/channel/Channel.ts", "../../node_modules/tone/Tone/core/context/Listener.ts", "../../node_modules/tone/Tone/index.ts", "event-emitter.ts", "tabs.ts", "pythonPrefixes.ts", "types.ts", "tutorials/utils.ts", "tutorials/intro.ts", "tutorials/teacher.ts", "tutorials/level1.ts", "tutorials/tutorial.ts", "editor.ts", "../../node_modules/@codemirror/state/dist/index.js", "../../node_modules/style-mod/src/style-mod.js", "../../node_modules/w3c-keyname/index.js", "../../node_modules/@codemirror/view/dist/index.js", "../../node_modules/@lezer/common/dist/index.js", "../../node_modules/@lezer/highlight/dist/index.js", "../../node_modules/@codemirror/language/dist/index.js", "../../node_modules/@codemirror/commands/dist/index.js", "../../node_modules/crelt/index.js", "../../node_modules/@codemirror/search/dist/index.js", "cm-decorations.ts", "../../node_modules/@lezer/lr/dist/index.js", "lezer-parsers/level1-parser.terms.ts", "lezer-parsers/level2-parser.terms.ts", "lezer-parsers/level3-parser.terms.ts", "lezer-parsers/level4-parser.terms.ts", "lezer-parsers/level5-parser.terms.ts", "lezer-parsers/level6-parser.terms.ts", "lezer-parsers/level7-parser.terms.ts", "lezer-parsers/level8-parser.terms.ts", "lezer-parsers/level10-parser.terms.ts", "lezer-parsers/level11-parser.terms.ts", "lezer-parsers/level12-parser.terms.ts", "lezer-parsers/level13-parser.terms.ts", "lezer-parsers/level14-parser.terms.ts", "lezer-parsers/level15-parser.terms.ts", "lezer-parsers/level16-parser.terms.ts", "lezer-parsers/level17-parser.terms.ts", "lezer-parsers/level18-parser.terms.ts", "lezer-parsers/tokens.ts", "lezer-parsers/level1-parser.ts", "lezer-parsers/level2-parser.ts", "lezer-parsers/level3-parser.ts", "lezer-parsers/level4-parser.ts", "lezer-parsers/level5-parser.ts", "lezer-parsers/level6-parser.ts", "lezer-parsers/level7-parser.ts", "lezer-parsers/level8-parser.ts", "lezer-parsers/level9-parser.ts", "lezer-parsers/level10-parser.ts", "lezer-parsers/level11-parser.ts", "lezer-parsers/level12-parser.ts", "lezer-parsers/level13-parser.ts", "lezer-parsers/level14-parser.ts", "lezer-parsers/level15-parser.ts", "lezer-parsers/level16-parser.ts", "lezer-parsers/level17-parser.ts", "lezer-parsers/level18-parser.ts", "lezer-parsers/language-packages.ts", "cm-monokai-theme.ts", "cm-editor.ts", "../../node_modules/sortablejs/modular/sortable.esm.js", "parsons.ts", "browser-helpers/on-element-becomes-visible.ts", "debugging.ts", "local.ts", "teachers.ts", "adventure.ts", "autosave.ts", "../../node_modules/@kurkle/color/dist/color.esm.js", "../../node_modules/chart.js/src/helpers/helpers.core.ts", "../../node_modules/chart.js/src/helpers/helpers.math.ts", "../../node_modules/chart.js/src/helpers/helpers.collection.ts", "../../node_modules/chart.js/src/helpers/helpers.extras.ts", "../../node_modules/chart.js/src/helpers/helpers.easing.ts", "../../node_modules/chart.js/src/helpers/helpers.color.ts", "../../node_modules/chart.js/src/core/core.animations.defaults.js", "../../node_modules/chart.js/src/core/core.layouts.defaults.js", "../../node_modules/chart.js/src/helpers/helpers.intl.ts", "../../node_modules/chart.js/src/core/core.ticks.js", "../../node_modules/chart.js/src/core/core.scale.defaults.js", "../../node_modules/chart.js/src/core/core.defaults.js", "../../node_modules/chart.js/src/helpers/helpers.canvas.ts", "../../node_modules/chart.js/src/helpers/helpers.options.ts", "../../node_modules/chart.js/src/helpers/helpers.config.ts", "../../node_modules/chart.js/src/helpers/helpers.curve.ts", "../../node_modules/chart.js/src/helpers/helpers.dom.ts", "../../node_modules/chart.js/src/helpers/helpers.interpolation.ts", "../../node_modules/chart.js/src/helpers/helpers.rtl.ts", "../../node_modules/chart.js/src/helpers/helpers.segment.js", "../../node_modules/chart.js/src/core/core.animator.js", "../../node_modules/chart.js/src/core/core.animation.js", "../../node_modules/chart.js/src/core/core.animations.js", "../../node_modules/chart.js/src/core/core.datasetController.js", "../../node_modules/chart.js/src/controllers/controller.bar.js", "../../node_modules/chart.js/src/controllers/controller.bubble.js", "../../node_modules/chart.js/src/controllers/controller.doughnut.js", "../../node_modules/chart.js/src/controllers/controller.line.js", "../../node_modules/chart.js/src/controllers/controller.polarArea.js", "../../node_modules/chart.js/src/controllers/controller.pie.js", "../../node_modules/chart.js/src/controllers/controller.radar.js", "../../node_modules/chart.js/src/controllers/controller.scatter.js", "../../node_modules/chart.js/src/core/core.adapters.ts", "../../node_modules/chart.js/src/core/core.interaction.js", "../../node_modules/chart.js/src/core/core.layouts.js", "../../node_modules/chart.js/src/platform/platform.base.js", "../../node_modules/chart.js/src/platform/platform.basic.js", "../../node_modules/chart.js/src/platform/platform.dom.js", "../../node_modules/chart.js/src/platform/index.js", "../../node_modules/chart.js/src/core/core.element.ts", "../../node_modules/chart.js/src/core/core.scale.autoskip.js", "../../node_modules/chart.js/src/core/core.scale.js", "../../node_modules/chart.js/src/core/core.typedRegistry.js", "../../node_modules/chart.js/src/core/core.registry.js", "../../node_modules/chart.js/src/core/core.plugins.js", "../../node_modules/chart.js/src/core/core.config.js", "../../node_modules/chart.js/src/core/core.controller.js", "../../node_modules/chart.js/src/elements/element.arc.ts", "../../node_modules/chart.js/src/elements/element.line.js", "../../node_modules/chart.js/src/elements/element.point.ts", "../../node_modules/chart.js/src/elements/element.bar.js", "../../node_modules/chart.js/src/plugins/plugin.colors.ts", "../../node_modules/chart.js/src/plugins/plugin.decimation.js", "../../node_modules/chart.js/src/plugins/plugin.filler/filler.segment.js", "../../node_modules/chart.js/src/plugins/plugin.filler/filler.helper.js", "../../node_modules/chart.js/src/plugins/plugin.filler/filler.options.js", "../../node_modules/chart.js/src/plugins/plugin.filler/filler.target.stack.js", "../../node_modules/chart.js/src/plugins/plugin.filler/simpleArc.js", "../../node_modules/chart.js/src/plugins/plugin.filler/filler.target.js", "../../node_modules/chart.js/src/plugins/plugin.filler/filler.drawing.js", "../../node_modules/chart.js/src/plugins/plugin.filler/index.js", "../../node_modules/chart.js/src/plugins/plugin.legend.js", "../../node_modules/chart.js/src/plugins/plugin.title.js", "../../node_modules/chart.js/src/plugins/plugin.subtitle.js", "../../node_modules/chart.js/src/plugins/plugin.tooltip.js", "../../node_modules/chart.js/src/scales/scale.category.js", "../../node_modules/chart.js/src/scales/scale.linearbase.js", "../../node_modules/chart.js/src/scales/scale.linear.js", "../../node_modules/chart.js/src/scales/scale.logarithmic.js", "../../node_modules/chart.js/src/scales/scale.radialLinear.js", "../../node_modules/chart.js/src/scales/scale.time.js", "../../node_modules/chart.js/src/scales/scale.timeseries.js", "../../node_modules/chart.js/src/index.ts", "loading.ts", "comm.ts", "auth.ts", "local-save-warning.ts", "utils.ts", "user-activity.ts", "index-tabs.ts", "htmx-integration.ts", "statistics.ts", "logs.ts", "admin.ts", "profile.ts", "initialize.ts", "../../node_modules/tw-elements/src/js/dom/data.js", "../../node_modules/tw-elements/src/js/util/index.js", "../../node_modules/tw-elements/src/js/dom/event-handler.js", "../../node_modules/tw-elements/src/js/base-component.js", "../../node_modules/tw-elements/src/js/components/button.js", "../../node_modules/tw-elements/node_modules/@popperjs/core/lib/enums.js", "../../node_modules/tw-elements/node_modules/@popperjs/core/lib/dom-utils/getNodeName.js", "../../node_modules/tw-elements/node_modules/@popperjs/core/lib/dom-utils/getWindow.js", "../../node_modules/tw-elements/node_modules/@popperjs/core/lib/dom-utils/instanceOf.js", "../../node_modules/tw-elements/node_modules/@popperjs/core/lib/modifiers/applyStyles.js", "../../node_modules/tw-elements/node_modules/@popperjs/core/lib/utils/getBasePlacement.js", "../../node_modules/tw-elements/node_modules/@popperjs/core/lib/utils/math.js", "../../node_modules/tw-elements/node_modules/@popperjs/core/lib/utils/userAgent.js", "../../node_modules/tw-elements/node_modules/@popperjs/core/lib/dom-utils/isLayoutViewport.js", "../../node_modules/tw-elements/node_modules/@popperjs/core/lib/dom-utils/getBoundingClientRect.js", "../../node_modules/tw-elements/node_modules/@popperjs/core/lib/dom-utils/getLayoutRect.js", "../../node_modules/tw-elements/node_modules/@popperjs/core/lib/dom-utils/contains.js", "../../node_modules/tw-elements/node_modules/@popperjs/core/lib/dom-utils/getComputedStyle.js", "../../node_modules/tw-elements/node_modules/@popperjs/core/lib/dom-utils/isTableElement.js", "../../node_modules/tw-elements/node_modules/@popperjs/core/lib/dom-utils/getDocumentElement.js", "../../node_modules/tw-elements/node_modules/@popperjs/core/lib/dom-utils/getParentNode.js", "../../node_modules/tw-elements/node_modules/@popperjs/core/lib/dom-utils/getOffsetParent.js", "../../node_modules/tw-elements/node_modules/@popperjs/core/lib/utils/getMainAxisFromPlacement.js", "../../node_modules/tw-elements/node_modules/@popperjs/core/lib/utils/within.js", "../../node_modules/tw-elements/node_modules/@popperjs/core/lib/utils/getFreshSideObject.js", "../../node_modules/tw-elements/node_modules/@popperjs/core/lib/utils/mergePaddingObject.js", "../../node_modules/tw-elements/node_modules/@popperjs/core/lib/utils/expandToHashMap.js", "../../node_modules/tw-elements/node_modules/@popperjs/core/lib/modifiers/arrow.js", "../../node_modules/tw-elements/node_modules/@popperjs/core/lib/utils/getVariation.js", "../../node_modules/tw-elements/node_modules/@popperjs/core/lib/modifiers/computeStyles.js", "../../node_modules/tw-elements/node_modules/@popperjs/core/lib/modifiers/eventListeners.js", "../../node_modules/tw-elements/node_modules/@popperjs/core/lib/utils/getOppositePlacement.js", "../../node_modules/tw-elements/node_modules/@popperjs/core/lib/utils/getOppositeVariationPlacement.js", "../../node_modules/tw-elements/node_modules/@popperjs/core/lib/dom-utils/getWindowScroll.js", "../../node_modules/tw-elements/node_modules/@popperjs/core/lib/dom-utils/getWindowScrollBarX.js", "../../node_modules/tw-elements/node_modules/@popperjs/core/lib/dom-utils/getViewportRect.js", "../../node_modules/tw-elements/node_modules/@popperjs/core/lib/dom-utils/getDocumentRect.js", "../../node_modules/tw-elements/node_modules/@popperjs/core/lib/dom-utils/isScrollParent.js", "../../node_modules/tw-elements/node_modules/@popperjs/core/lib/dom-utils/getScrollParent.js", "../../node_modules/tw-elements/node_modules/@popperjs/core/lib/dom-utils/listScrollParents.js", "../../node_modules/tw-elements/node_modules/@popperjs/core/lib/utils/rectToClientRect.js", "../../node_modules/tw-elements/node_modules/@popperjs/core/lib/dom-utils/getClippingRect.js", "../../node_modules/tw-elements/node_modules/@popperjs/core/lib/utils/computeOffsets.js", "../../node_modules/tw-elements/node_modules/@popperjs/core/lib/utils/detectOverflow.js", "../../node_modules/tw-elements/node_modules/@popperjs/core/lib/utils/computeAutoPlacement.js", "../../node_modules/tw-elements/node_modules/@popperjs/core/lib/modifiers/flip.js", "../../node_modules/tw-elements/node_modules/@popperjs/core/lib/modifiers/hide.js", "../../node_modules/tw-elements/node_modules/@popperjs/core/lib/modifiers/offset.js", "../../node_modules/tw-elements/node_modules/@popperjs/core/lib/modifiers/popperOffsets.js", "../../node_modules/tw-elements/node_modules/@popperjs/core/lib/utils/getAltAxis.js", "../../node_modules/tw-elements/node_modules/@popperjs/core/lib/modifiers/preventOverflow.js", "../../node_modules/tw-elements/node_modules/@popperjs/core/lib/dom-utils/getHTMLElementScroll.js", "../../node_modules/tw-elements/node_modules/@popperjs/core/lib/dom-utils/getNodeScroll.js", "../../node_modules/tw-elements/node_modules/@popperjs/core/lib/dom-utils/getCompositeRect.js", "../../node_modules/tw-elements/node_modules/@popperjs/core/lib/utils/orderModifiers.js", "../../node_modules/tw-elements/node_modules/@popperjs/core/lib/utils/debounce.js", "../../node_modules/tw-elements/node_modules/@popperjs/core/lib/utils/format.js", "../../node_modules/tw-elements/node_modules/@popperjs/core/lib/utils/validateModifiers.js", "../../node_modules/tw-elements/node_modules/@popperjs/core/lib/utils/uniqueBy.js", "../../node_modules/tw-elements/node_modules/@popperjs/core/lib/utils/mergeByName.js", "../../node_modules/tw-elements/node_modules/@popperjs/core/lib/createPopper.js", "../../node_modules/tw-elements/node_modules/@popperjs/core/lib/popper-lite.js", "../../node_modules/tw-elements/node_modules/@popperjs/core/lib/popper.js", "../../node_modules/tw-elements/src/js/dom/manipulator.js", "../../node_modules/tw-elements/src/js/dom/selector-engine.js", "../../node_modules/tw-elements/src/js/components/dropdown.js", "../../node_modules/tw-elements/src/js/components/collapse.js", "../../node_modules/tw-elements/src/js/util/scrollbar.js", "../../node_modules/tw-elements/src/js/util/backdrop.js", "../../node_modules/tw-elements/src/js/util/focusTrap.js", "../../node_modules/tw-elements/src/js/util/component-functions.js", "../../node_modules/tw-elements/src/js/components/offcanvas.js", "../../node_modules/tw-elements/src/js/components/alert.js", "../../node_modules/tw-elements/src/js/components/carousel.js", "../../node_modules/tw-elements/src/js/components/modal.js", "../../node_modules/tw-elements/src/js/util/sanitizer.js", "../../node_modules/tw-elements/src/js/components/tooltip.js", "../../node_modules/tw-elements/src/js/components/popover.js", "../../node_modules/tw-elements/src/js/navigation/scrollspy.js", "../../node_modules/tw-elements/src/js/navigation/tab.js", "../../node_modules/tw-elements/src/js/components/toast.js", "../../node_modules/tw-elements/node_modules/detect-autofill/dist/detect-autofill.js", "../../node_modules/tw-elements/src/js/forms/input.js", "../../node_modules/tw-elements/src/js/content-styles/animate.js", "../../node_modules/tw-elements/src/js/methods/ripple.js", "../../node_modules/tw-elements/src/js/forms/datepicker/date-utils.js", "../../node_modules/tw-elements/src/js/forms/datepicker/templates.js", "../../node_modules/tw-elements/src/js/util/keycodes.js", "../../node_modules/tw-elements/src/js/forms/datepicker/index.js", "../../node_modules/tw-elements/src/js/forms/timepicker/templates.js", "../../node_modules/tw-elements/src/js/forms/timepicker/utils.js", "../../node_modules/tw-elements/src/js/forms/timepicker/index.js", "../../node_modules/tw-elements/src/js/util/touch/swipe.js", "../../node_modules/tw-elements/src/js/util/touch/index.js", "../../node_modules/tw-elements/src/js/navigation/sidenav.js", "../../node_modules/tw-elements/src/js/components/stepper.js", "../../node_modules/tw-elements/src/js/forms/select/select-option.js", "../../node_modules/tw-elements/src/js/forms/select/selection-model.js", "../../node_modules/tw-elements/src/js/forms/select/util.js", "../../node_modules/tw-elements/src/js/forms/select/templates.js", "../../node_modules/tw-elements/src/js/forms/select/index.js", "../../node_modules/tw-elements/src/js/components/chips/templates.js", "../../node_modules/tw-elements/src/js/components/chips/chip.js", "../../node_modules/tw-elements/src/js/components/chips/index.js", "../../node_modules/tw-elements/src/js/data/chart/chartDefaults.js", "../../node_modules/tw-elements/node_modules/deepmerge/dist/cjs.js", "../../node_modules/tw-elements/src/js/data/chart/charts.js", "../../node_modules/tw-elements/node_modules/perfect-scrollbar/dist/perfect-scrollbar.esm.js", "../../node_modules/tw-elements/src/js/methods/perfect-scrollbar.js", "../../node_modules/tw-elements/src/js/data/datatables/html/pagination.js", "../../node_modules/tw-elements/src/js/data/datatables/html/columns.js", "../../node_modules/tw-elements/src/js/data/datatables/html/rows.js", "../../node_modules/tw-elements/src/js/data/datatables/html/table.js", "../../node_modules/tw-elements/src/js/data/datatables/util.js", "../../node_modules/tw-elements/src/js/data/datatables/index.js", "../../node_modules/tw-elements/src/js/components/rating.js", "../../node_modules/tw-elements/src/js/components/popconfirm.js", "../../node_modules/tw-elements/src/js/components/lightbox.js", "../../node_modules/tw-elements/src/js/forms/validation/rules.js", "../../node_modules/tw-elements/src/js/forms/validation/validation.js", "../../node_modules/tw-elements/src/js/methods/touch/touchUtil.js", "../../node_modules/tw-elements/src/js/methods/touch/press.js", "../../node_modules/tw-elements/src/js/methods/touch/swipe.js", "../../node_modules/tw-elements/src/js/methods/touch/pan.js", "../../node_modules/tw-elements/src/js/methods/touch/pinch.js", "../../node_modules/tw-elements/src/js/methods/touch/tap.js", "../../node_modules/tw-elements/src/js/methods/touch/rotate.js", "../../node_modules/tw-elements/src/js/methods/touch/index.js", "../../node_modules/tw-elements/src/js/methods/smooth-scroll.js", "../../node_modules/tw-elements/src/js/methods/lazy-load.js", "../../node_modules/tw-elements/src/js/methods/clipboard.js", "../../node_modules/tw-elements/src/js/methods/infinite-scroll.js", "../../node_modules/tw-elements/src/js/methods/loading-management/templates.js", "../../node_modules/tw-elements/src/js/methods/loading-management/index.js", "../../node_modules/tw-elements/src/js/forms/dateTimepicker/utils.js", "../../node_modules/tw-elements/src/js/forms/dateTimepicker/templates.js", "../../node_modules/tw-elements/src/js/forms/dateTimepicker/index.js", "../../node_modules/tw-elements/src/js/methods/sticky.js", "../../node_modules/tw-elements/src/js/autoinit/jqueryInit.js", "../../node_modules/tw-elements/src/js/autoinit/autoinitCallbacks.js", "../../node_modules/tw-elements/src/js/autoinit/chartsInit.js", "../../node_modules/tw-elements/src/js/autoinit/Register.js", "../../node_modules/tw-elements/src/js/autoinit/index.js", "tailwind.ts", "public-adventures.ts", "microbit.ts", "custom-elements.ts"], - "sourcesContent": ["/*!\n\nJSZip v3.10.1 - A JavaScript class for generating and reading zip files\n\n\n(c) 2009-2016 Stuart Knightley \nDual licenced under the MIT license or GPLv3. See https://raw.github.com/Stuk/jszip/main/LICENSE.markdown.\n\nJSZip uses the library pako released under the MIT license :\nhttps://github.com/nodeca/pako/blob/main/LICENSE\n*/\n\n!function(e){if(\"object\"==typeof exports&&\"undefined\"!=typeof module)module.exports=e();else if(\"function\"==typeof define&&define.amd)define([],e);else{(\"undefined\"!=typeof window?window:\"undefined\"!=typeof global?global:\"undefined\"!=typeof self?self:this).JSZip=e()}}(function(){return function s(a,o,h){function u(r,e){if(!o[r]){if(!a[r]){var t=\"function\"==typeof require&&require;if(!e&&t)return t(r,!0);if(l)return l(r,!0);var n=new Error(\"Cannot find module '\"+r+\"'\");throw n.code=\"MODULE_NOT_FOUND\",n}var i=o[r]={exports:{}};a[r][0].call(i.exports,function(e){var t=a[r][1][e];return u(t||e)},i,i.exports,s,a,o,h)}return o[r].exports}for(var l=\"function\"==typeof require&&require,e=0;e>2,s=(3&t)<<4|r>>4,a=1>6:64,o=2>4,r=(15&i)<<4|(s=p.indexOf(e.charAt(o++)))>>2,n=(3&s)<<6|(a=p.indexOf(e.charAt(o++))),l[h++]=t,64!==s&&(l[h++]=r),64!==a&&(l[h++]=n);return l}},{\"./support\":30,\"./utils\":32}],2:[function(e,t,r){\"use strict\";var n=e(\"./external\"),i=e(\"./stream/DataWorker\"),s=e(\"./stream/Crc32Probe\"),a=e(\"./stream/DataLengthProbe\");function o(e,t,r,n,i){this.compressedSize=e,this.uncompressedSize=t,this.crc32=r,this.compression=n,this.compressedContent=i}o.prototype={getContentWorker:function(){var e=new i(n.Promise.resolve(this.compressedContent)).pipe(this.compression.uncompressWorker()).pipe(new a(\"data_length\")),t=this;return e.on(\"end\",function(){if(this.streamInfo.data_length!==t.uncompressedSize)throw new Error(\"Bug : uncompressed data size mismatch\")}),e},getCompressedWorker:function(){return new i(n.Promise.resolve(this.compressedContent)).withStreamInfo(\"compressedSize\",this.compressedSize).withStreamInfo(\"uncompressedSize\",this.uncompressedSize).withStreamInfo(\"crc32\",this.crc32).withStreamInfo(\"compression\",this.compression)}},o.createWorkerFrom=function(e,t,r){return e.pipe(new s).pipe(new a(\"uncompressedSize\")).pipe(t.compressWorker(r)).pipe(new a(\"compressedSize\")).withStreamInfo(\"compression\",t)},t.exports=o},{\"./external\":6,\"./stream/Crc32Probe\":25,\"./stream/DataLengthProbe\":26,\"./stream/DataWorker\":27}],3:[function(e,t,r){\"use strict\";var n=e(\"./stream/GenericWorker\");r.STORE={magic:\"\\0\\0\",compressWorker:function(){return new n(\"STORE compression\")},uncompressWorker:function(){return new n(\"STORE decompression\")}},r.DEFLATE=e(\"./flate\")},{\"./flate\":7,\"./stream/GenericWorker\":28}],4:[function(e,t,r){\"use strict\";var n=e(\"./utils\");var o=function(){for(var e,t=[],r=0;r<256;r++){e=r;for(var n=0;n<8;n++)e=1&e?3988292384^e>>>1:e>>>1;t[r]=e}return t}();t.exports=function(e,t){return void 0!==e&&e.length?\"string\"!==n.getTypeOf(e)?function(e,t,r,n){var i=o,s=n+r;e^=-1;for(var a=n;a>>8^i[255&(e^t[a])];return-1^e}(0|t,e,e.length,0):function(e,t,r,n){var i=o,s=n+r;e^=-1;for(var a=n;a>>8^i[255&(e^t.charCodeAt(a))];return-1^e}(0|t,e,e.length,0):0}},{\"./utils\":32}],5:[function(e,t,r){\"use strict\";r.base64=!1,r.binary=!1,r.dir=!1,r.createFolders=!0,r.date=null,r.compression=null,r.compressionOptions=null,r.comment=null,r.unixPermissions=null,r.dosPermissions=null},{}],6:[function(e,t,r){\"use strict\";var n=null;n=\"undefined\"!=typeof Promise?Promise:e(\"lie\"),t.exports={Promise:n}},{lie:37}],7:[function(e,t,r){\"use strict\";var n=\"undefined\"!=typeof Uint8Array&&\"undefined\"!=typeof Uint16Array&&\"undefined\"!=typeof Uint32Array,i=e(\"pako\"),s=e(\"./utils\"),a=e(\"./stream/GenericWorker\"),o=n?\"uint8array\":\"array\";function h(e,t){a.call(this,\"FlateWorker/\"+e),this._pako=null,this._pakoAction=e,this._pakoOptions=t,this.meta={}}r.magic=\"\\b\\0\",s.inherits(h,a),h.prototype.processChunk=function(e){this.meta=e.meta,null===this._pako&&this._createPako(),this._pako.push(s.transformTo(o,e.data),!1)},h.prototype.flush=function(){a.prototype.flush.call(this),null===this._pako&&this._createPako(),this._pako.push([],!0)},h.prototype.cleanUp=function(){a.prototype.cleanUp.call(this),this._pako=null},h.prototype._createPako=function(){this._pako=new i[this._pakoAction]({raw:!0,level:this._pakoOptions.level||-1});var t=this;this._pako.onData=function(e){t.push({data:e,meta:t.meta})}},r.compressWorker=function(e){return new h(\"Deflate\",e)},r.uncompressWorker=function(){return new h(\"Inflate\",{})}},{\"./stream/GenericWorker\":28,\"./utils\":32,pako:38}],8:[function(e,t,r){\"use strict\";function A(e,t){var r,n=\"\";for(r=0;r>>=8;return n}function n(e,t,r,n,i,s){var a,o,h=e.file,u=e.compression,l=s!==O.utf8encode,f=I.transformTo(\"string\",s(h.name)),c=I.transformTo(\"string\",O.utf8encode(h.name)),d=h.comment,p=I.transformTo(\"string\",s(d)),m=I.transformTo(\"string\",O.utf8encode(d)),_=c.length!==h.name.length,g=m.length!==d.length,b=\"\",v=\"\",y=\"\",w=h.dir,k=h.date,x={crc32:0,compressedSize:0,uncompressedSize:0};t&&!r||(x.crc32=e.crc32,x.compressedSize=e.compressedSize,x.uncompressedSize=e.uncompressedSize);var S=0;t&&(S|=8),l||!_&&!g||(S|=2048);var z=0,C=0;w&&(z|=16),\"UNIX\"===i?(C=798,z|=function(e,t){var r=e;return e||(r=t?16893:33204),(65535&r)<<16}(h.unixPermissions,w)):(C=20,z|=function(e){return 63&(e||0)}(h.dosPermissions)),a=k.getUTCHours(),a<<=6,a|=k.getUTCMinutes(),a<<=5,a|=k.getUTCSeconds()/2,o=k.getUTCFullYear()-1980,o<<=4,o|=k.getUTCMonth()+1,o<<=5,o|=k.getUTCDate(),_&&(v=A(1,1)+A(B(f),4)+c,b+=\"up\"+A(v.length,2)+v),g&&(y=A(1,1)+A(B(p),4)+m,b+=\"uc\"+A(y.length,2)+y);var E=\"\";return E+=\"\\n\\0\",E+=A(S,2),E+=u.magic,E+=A(a,2),E+=A(o,2),E+=A(x.crc32,4),E+=A(x.compressedSize,4),E+=A(x.uncompressedSize,4),E+=A(f.length,2),E+=A(b.length,2),{fileRecord:R.LOCAL_FILE_HEADER+E+f+b,dirRecord:R.CENTRAL_FILE_HEADER+A(C,2)+E+A(p.length,2)+\"\\0\\0\\0\\0\"+A(z,4)+A(n,4)+f+b+p}}var I=e(\"../utils\"),i=e(\"../stream/GenericWorker\"),O=e(\"../utf8\"),B=e(\"../crc32\"),R=e(\"../signature\");function s(e,t,r,n){i.call(this,\"ZipFileWorker\"),this.bytesWritten=0,this.zipComment=t,this.zipPlatform=r,this.encodeFileName=n,this.streamFiles=e,this.accumulate=!1,this.contentBuffer=[],this.dirRecords=[],this.currentSourceOffset=0,this.entriesCount=0,this.currentFile=null,this._sources=[]}I.inherits(s,i),s.prototype.push=function(e){var t=e.meta.percent||0,r=this.entriesCount,n=this._sources.length;this.accumulate?this.contentBuffer.push(e):(this.bytesWritten+=e.data.length,i.prototype.push.call(this,{data:e.data,meta:{currentFile:this.currentFile,percent:r?(t+100*(r-n-1))/r:100}}))},s.prototype.openedSource=function(e){this.currentSourceOffset=this.bytesWritten,this.currentFile=e.file.name;var t=this.streamFiles&&!e.file.dir;if(t){var r=n(e,t,!1,this.currentSourceOffset,this.zipPlatform,this.encodeFileName);this.push({data:r.fileRecord,meta:{percent:0}})}else this.accumulate=!0},s.prototype.closedSource=function(e){this.accumulate=!1;var t=this.streamFiles&&!e.file.dir,r=n(e,t,!0,this.currentSourceOffset,this.zipPlatform,this.encodeFileName);if(this.dirRecords.push(r.dirRecord),t)this.push({data:function(e){return R.DATA_DESCRIPTOR+A(e.crc32,4)+A(e.compressedSize,4)+A(e.uncompressedSize,4)}(e),meta:{percent:100}});else for(this.push({data:r.fileRecord,meta:{percent:0}});this.contentBuffer.length;)this.push(this.contentBuffer.shift());this.currentFile=null},s.prototype.flush=function(){for(var e=this.bytesWritten,t=0;t=this.index;t--)r=(r<<8)+this.byteAt(t);return this.index+=e,r},readString:function(e){return n.transformTo(\"string\",this.readData(e))},readData:function(){},lastIndexOfSignature:function(){},readAndCheckSignature:function(){},readDate:function(){var e=this.readInt(4);return new Date(Date.UTC(1980+(e>>25&127),(e>>21&15)-1,e>>16&31,e>>11&31,e>>5&63,(31&e)<<1))}},t.exports=i},{\"../utils\":32}],19:[function(e,t,r){\"use strict\";var n=e(\"./Uint8ArrayReader\");function i(e){n.call(this,e)}e(\"../utils\").inherits(i,n),i.prototype.readData=function(e){this.checkOffset(e);var t=this.data.slice(this.zero+this.index,this.zero+this.index+e);return this.index+=e,t},t.exports=i},{\"../utils\":32,\"./Uint8ArrayReader\":21}],20:[function(e,t,r){\"use strict\";var n=e(\"./DataReader\");function i(e){n.call(this,e)}e(\"../utils\").inherits(i,n),i.prototype.byteAt=function(e){return this.data.charCodeAt(this.zero+e)},i.prototype.lastIndexOfSignature=function(e){return this.data.lastIndexOf(e)-this.zero},i.prototype.readAndCheckSignature=function(e){return e===this.readData(4)},i.prototype.readData=function(e){this.checkOffset(e);var t=this.data.slice(this.zero+this.index,this.zero+this.index+e);return this.index+=e,t},t.exports=i},{\"../utils\":32,\"./DataReader\":18}],21:[function(e,t,r){\"use strict\";var n=e(\"./ArrayReader\");function i(e){n.call(this,e)}e(\"../utils\").inherits(i,n),i.prototype.readData=function(e){if(this.checkOffset(e),0===e)return new Uint8Array(0);var t=this.data.subarray(this.zero+this.index,this.zero+this.index+e);return this.index+=e,t},t.exports=i},{\"../utils\":32,\"./ArrayReader\":17}],22:[function(e,t,r){\"use strict\";var n=e(\"../utils\"),i=e(\"../support\"),s=e(\"./ArrayReader\"),a=e(\"./StringReader\"),o=e(\"./NodeBufferReader\"),h=e(\"./Uint8ArrayReader\");t.exports=function(e){var t=n.getTypeOf(e);return n.checkSupport(t),\"string\"!==t||i.uint8array?\"nodebuffer\"===t?new o(e):i.uint8array?new h(n.transformTo(\"uint8array\",e)):new s(n.transformTo(\"array\",e)):new a(e)}},{\"../support\":30,\"../utils\":32,\"./ArrayReader\":17,\"./NodeBufferReader\":19,\"./StringReader\":20,\"./Uint8ArrayReader\":21}],23:[function(e,t,r){\"use strict\";r.LOCAL_FILE_HEADER=\"PK\u0003\u0004\",r.CENTRAL_FILE_HEADER=\"PK\u0001\u0002\",r.CENTRAL_DIRECTORY_END=\"PK\u0005\u0006\",r.ZIP64_CENTRAL_DIRECTORY_LOCATOR=\"PK\u0006\u0007\",r.ZIP64_CENTRAL_DIRECTORY_END=\"PK\u0006\u0006\",r.DATA_DESCRIPTOR=\"PK\u0007\\b\"},{}],24:[function(e,t,r){\"use strict\";var n=e(\"./GenericWorker\"),i=e(\"../utils\");function s(e){n.call(this,\"ConvertWorker to \"+e),this.destType=e}i.inherits(s,n),s.prototype.processChunk=function(e){this.push({data:i.transformTo(this.destType,e.data),meta:e.meta})},t.exports=s},{\"../utils\":32,\"./GenericWorker\":28}],25:[function(e,t,r){\"use strict\";var n=e(\"./GenericWorker\"),i=e(\"../crc32\");function s(){n.call(this,\"Crc32Probe\"),this.withStreamInfo(\"crc32\",0)}e(\"../utils\").inherits(s,n),s.prototype.processChunk=function(e){this.streamInfo.crc32=i(e.data,this.streamInfo.crc32||0),this.push(e)},t.exports=s},{\"../crc32\":4,\"../utils\":32,\"./GenericWorker\":28}],26:[function(e,t,r){\"use strict\";var n=e(\"../utils\"),i=e(\"./GenericWorker\");function s(e){i.call(this,\"DataLengthProbe for \"+e),this.propName=e,this.withStreamInfo(e,0)}n.inherits(s,i),s.prototype.processChunk=function(e){if(e){var t=this.streamInfo[this.propName]||0;this.streamInfo[this.propName]=t+e.data.length}i.prototype.processChunk.call(this,e)},t.exports=s},{\"../utils\":32,\"./GenericWorker\":28}],27:[function(e,t,r){\"use strict\";var n=e(\"../utils\"),i=e(\"./GenericWorker\");function s(e){i.call(this,\"DataWorker\");var t=this;this.dataIsReady=!1,this.index=0,this.max=0,this.data=null,this.type=\"\",this._tickScheduled=!1,e.then(function(e){t.dataIsReady=!0,t.data=e,t.max=e&&e.length||0,t.type=n.getTypeOf(e),t.isPaused||t._tickAndRepeat()},function(e){t.error(e)})}n.inherits(s,i),s.prototype.cleanUp=function(){i.prototype.cleanUp.call(this),this.data=null},s.prototype.resume=function(){return!!i.prototype.resume.call(this)&&(!this._tickScheduled&&this.dataIsReady&&(this._tickScheduled=!0,n.delay(this._tickAndRepeat,[],this)),!0)},s.prototype._tickAndRepeat=function(){this._tickScheduled=!1,this.isPaused||this.isFinished||(this._tick(),this.isFinished||(n.delay(this._tickAndRepeat,[],this),this._tickScheduled=!0))},s.prototype._tick=function(){if(this.isPaused||this.isFinished)return!1;var e=null,t=Math.min(this.max,this.index+16384);if(this.index>=this.max)return this.end();switch(this.type){case\"string\":e=this.data.substring(this.index,t);break;case\"uint8array\":e=this.data.subarray(this.index,t);break;case\"array\":case\"nodebuffer\":e=this.data.slice(this.index,t)}return this.index=t,this.push({data:e,meta:{percent:this.max?this.index/this.max*100:0}})},t.exports=s},{\"../utils\":32,\"./GenericWorker\":28}],28:[function(e,t,r){\"use strict\";function n(e){this.name=e||\"default\",this.streamInfo={},this.generatedError=null,this.extraStreamInfo={},this.isPaused=!0,this.isFinished=!1,this.isLocked=!1,this._listeners={data:[],end:[],error:[]},this.previous=null}n.prototype={push:function(e){this.emit(\"data\",e)},end:function(){if(this.isFinished)return!1;this.flush();try{this.emit(\"end\"),this.cleanUp(),this.isFinished=!0}catch(e){this.emit(\"error\",e)}return!0},error:function(e){return!this.isFinished&&(this.isPaused?this.generatedError=e:(this.isFinished=!0,this.emit(\"error\",e),this.previous&&this.previous.error(e),this.cleanUp()),!0)},on:function(e,t){return this._listeners[e].push(t),this},cleanUp:function(){this.streamInfo=this.generatedError=this.extraStreamInfo=null,this._listeners=[]},emit:function(e,t){if(this._listeners[e])for(var r=0;r \"+e:e}},t.exports=n},{}],29:[function(e,t,r){\"use strict\";var h=e(\"../utils\"),i=e(\"./ConvertWorker\"),s=e(\"./GenericWorker\"),u=e(\"../base64\"),n=e(\"../support\"),a=e(\"../external\"),o=null;if(n.nodestream)try{o=e(\"../nodejs/NodejsStreamOutputAdapter\")}catch(e){}function l(e,o){return new a.Promise(function(t,r){var n=[],i=e._internalType,s=e._outputType,a=e._mimeType;e.on(\"data\",function(e,t){n.push(e),o&&o(t)}).on(\"error\",function(e){n=[],r(e)}).on(\"end\",function(){try{var e=function(e,t,r){switch(e){case\"blob\":return h.newBlob(h.transformTo(\"arraybuffer\",t),r);case\"base64\":return u.encode(t);default:return h.transformTo(e,t)}}(s,function(e,t){var r,n=0,i=null,s=0;for(r=0;r>>6:(r<65536?t[s++]=224|r>>>12:(t[s++]=240|r>>>18,t[s++]=128|r>>>12&63),t[s++]=128|r>>>6&63),t[s++]=128|63&r);return t}(e)},s.utf8decode=function(e){return h.nodebuffer?o.transformTo(\"nodebuffer\",e).toString(\"utf-8\"):function(e){var t,r,n,i,s=e.length,a=new Array(2*s);for(t=r=0;t>10&1023,a[r++]=56320|1023&n)}return a.length!==r&&(a.subarray?a=a.subarray(0,r):a.length=r),o.applyFromCharCode(a)}(e=o.transformTo(h.uint8array?\"uint8array\":\"array\",e))},o.inherits(a,n),a.prototype.processChunk=function(e){var t=o.transformTo(h.uint8array?\"uint8array\":\"array\",e.data);if(this.leftOver&&this.leftOver.length){if(h.uint8array){var r=t;(t=new Uint8Array(r.length+this.leftOver.length)).set(this.leftOver,0),t.set(r,this.leftOver.length)}else t=this.leftOver.concat(t);this.leftOver=null}var n=function(e,t){var r;for((t=t||e.length)>e.length&&(t=e.length),r=t-1;0<=r&&128==(192&e[r]);)r--;return r<0?t:0===r?t:r+u[e[r]]>t?r:t}(t),i=t;n!==t.length&&(h.uint8array?(i=t.subarray(0,n),this.leftOver=t.subarray(n,t.length)):(i=t.slice(0,n),this.leftOver=t.slice(n,t.length))),this.push({data:s.utf8decode(i),meta:e.meta})},a.prototype.flush=function(){this.leftOver&&this.leftOver.length&&(this.push({data:s.utf8decode(this.leftOver),meta:{}}),this.leftOver=null)},s.Utf8DecodeWorker=a,o.inherits(l,n),l.prototype.processChunk=function(e){this.push({data:s.utf8encode(e.data),meta:e.meta})},s.Utf8EncodeWorker=l},{\"./nodejsUtils\":14,\"./stream/GenericWorker\":28,\"./support\":30,\"./utils\":32}],32:[function(e,t,a){\"use strict\";var o=e(\"./support\"),h=e(\"./base64\"),r=e(\"./nodejsUtils\"),u=e(\"./external\");function n(e){return e}function l(e,t){for(var r=0;r>8;this.dir=!!(16&this.externalFileAttributes),0==e&&(this.dosPermissions=63&this.externalFileAttributes),3==e&&(this.unixPermissions=this.externalFileAttributes>>16&65535),this.dir||\"/\"!==this.fileNameStr.slice(-1)||(this.dir=!0)},parseZIP64ExtraField:function(){if(this.extraFields[1]){var e=n(this.extraFields[1].value);this.uncompressedSize===s.MAX_VALUE_32BITS&&(this.uncompressedSize=e.readInt(8)),this.compressedSize===s.MAX_VALUE_32BITS&&(this.compressedSize=e.readInt(8)),this.localHeaderOffset===s.MAX_VALUE_32BITS&&(this.localHeaderOffset=e.readInt(8)),this.diskNumberStart===s.MAX_VALUE_32BITS&&(this.diskNumberStart=e.readInt(4))}},readExtraFields:function(e){var t,r,n,i=e.index+this.extraFieldsLength;for(this.extraFields||(this.extraFields={});e.index+4>>6:(r<65536?t[s++]=224|r>>>12:(t[s++]=240|r>>>18,t[s++]=128|r>>>12&63),t[s++]=128|r>>>6&63),t[s++]=128|63&r);return t},r.buf2binstring=function(e){return l(e,e.length)},r.binstring2buf=function(e){for(var t=new h.Buf8(e.length),r=0,n=t.length;r>10&1023,o[n++]=56320|1023&i)}return l(o,n)},r.utf8border=function(e,t){var r;for((t=t||e.length)>e.length&&(t=e.length),r=t-1;0<=r&&128==(192&e[r]);)r--;return r<0?t:0===r?t:r+u[e[r]]>t?r:t}},{\"./common\":41}],43:[function(e,t,r){\"use strict\";t.exports=function(e,t,r,n){for(var i=65535&e|0,s=e>>>16&65535|0,a=0;0!==r;){for(r-=a=2e3>>1:e>>>1;t[r]=e}return t}();t.exports=function(e,t,r,n){var i=o,s=n+r;e^=-1;for(var a=n;a>>8^i[255&(e^t[a])];return-1^e}},{}],46:[function(e,t,r){\"use strict\";var h,c=e(\"../utils/common\"),u=e(\"./trees\"),d=e(\"./adler32\"),p=e(\"./crc32\"),n=e(\"./messages\"),l=0,f=4,m=0,_=-2,g=-1,b=4,i=2,v=8,y=9,s=286,a=30,o=19,w=2*s+1,k=15,x=3,S=258,z=S+x+1,C=42,E=113,A=1,I=2,O=3,B=4;function R(e,t){return e.msg=n[t],t}function T(e){return(e<<1)-(4e.avail_out&&(r=e.avail_out),0!==r&&(c.arraySet(e.output,t.pending_buf,t.pending_out,r,e.next_out),e.next_out+=r,t.pending_out+=r,e.total_out+=r,e.avail_out-=r,t.pending-=r,0===t.pending&&(t.pending_out=0))}function N(e,t){u._tr_flush_block(e,0<=e.block_start?e.block_start:-1,e.strstart-e.block_start,t),e.block_start=e.strstart,F(e.strm)}function U(e,t){e.pending_buf[e.pending++]=t}function P(e,t){e.pending_buf[e.pending++]=t>>>8&255,e.pending_buf[e.pending++]=255&t}function L(e,t){var r,n,i=e.max_chain_length,s=e.strstart,a=e.prev_length,o=e.nice_match,h=e.strstart>e.w_size-z?e.strstart-(e.w_size-z):0,u=e.window,l=e.w_mask,f=e.prev,c=e.strstart+S,d=u[s+a-1],p=u[s+a];e.prev_length>=e.good_match&&(i>>=2),o>e.lookahead&&(o=e.lookahead);do{if(u[(r=t)+a]===p&&u[r+a-1]===d&&u[r]===u[s]&&u[++r]===u[s+1]){s+=2,r++;do{}while(u[++s]===u[++r]&&u[++s]===u[++r]&&u[++s]===u[++r]&&u[++s]===u[++r]&&u[++s]===u[++r]&&u[++s]===u[++r]&&u[++s]===u[++r]&&u[++s]===u[++r]&&sh&&0!=--i);return a<=e.lookahead?a:e.lookahead}function j(e){var t,r,n,i,s,a,o,h,u,l,f=e.w_size;do{if(i=e.window_size-e.lookahead-e.strstart,e.strstart>=f+(f-z)){for(c.arraySet(e.window,e.window,f,f,0),e.match_start-=f,e.strstart-=f,e.block_start-=f,t=r=e.hash_size;n=e.head[--t],e.head[t]=f<=n?n-f:0,--r;);for(t=r=f;n=e.prev[--t],e.prev[t]=f<=n?n-f:0,--r;);i+=f}if(0===e.strm.avail_in)break;if(a=e.strm,o=e.window,h=e.strstart+e.lookahead,u=i,l=void 0,l=a.avail_in,u=x)for(s=e.strstart-e.insert,e.ins_h=e.window[s],e.ins_h=(e.ins_h<=x&&(e.ins_h=(e.ins_h<=x)if(n=u._tr_tally(e,e.strstart-e.match_start,e.match_length-x),e.lookahead-=e.match_length,e.match_length<=e.max_lazy_match&&e.lookahead>=x){for(e.match_length--;e.strstart++,e.ins_h=(e.ins_h<=x&&(e.ins_h=(e.ins_h<=x&&e.match_length<=e.prev_length){for(i=e.strstart+e.lookahead-x,n=u._tr_tally(e,e.strstart-1-e.prev_match,e.prev_length-x),e.lookahead-=e.prev_length-1,e.prev_length-=2;++e.strstart<=i&&(e.ins_h=(e.ins_h<e.pending_buf_size-5&&(r=e.pending_buf_size-5);;){if(e.lookahead<=1){if(j(e),0===e.lookahead&&t===l)return A;if(0===e.lookahead)break}e.strstart+=e.lookahead,e.lookahead=0;var n=e.block_start+r;if((0===e.strstart||e.strstart>=n)&&(e.lookahead=e.strstart-n,e.strstart=n,N(e,!1),0===e.strm.avail_out))return A;if(e.strstart-e.block_start>=e.w_size-z&&(N(e,!1),0===e.strm.avail_out))return A}return e.insert=0,t===f?(N(e,!0),0===e.strm.avail_out?O:B):(e.strstart>e.block_start&&(N(e,!1),e.strm.avail_out),A)}),new M(4,4,8,4,Z),new M(4,5,16,8,Z),new M(4,6,32,32,Z),new M(4,4,16,16,W),new M(8,16,32,32,W),new M(8,16,128,128,W),new M(8,32,128,256,W),new M(32,128,258,1024,W),new M(32,258,258,4096,W)],r.deflateInit=function(e,t){return Y(e,t,v,15,8,0)},r.deflateInit2=Y,r.deflateReset=K,r.deflateResetKeep=G,r.deflateSetHeader=function(e,t){return e&&e.state?2!==e.state.wrap?_:(e.state.gzhead=t,m):_},r.deflate=function(e,t){var r,n,i,s;if(!e||!e.state||5>8&255),U(n,n.gzhead.time>>16&255),U(n,n.gzhead.time>>24&255),U(n,9===n.level?2:2<=n.strategy||n.level<2?4:0),U(n,255&n.gzhead.os),n.gzhead.extra&&n.gzhead.extra.length&&(U(n,255&n.gzhead.extra.length),U(n,n.gzhead.extra.length>>8&255)),n.gzhead.hcrc&&(e.adler=p(e.adler,n.pending_buf,n.pending,0)),n.gzindex=0,n.status=69):(U(n,0),U(n,0),U(n,0),U(n,0),U(n,0),U(n,9===n.level?2:2<=n.strategy||n.level<2?4:0),U(n,3),n.status=E);else{var a=v+(n.w_bits-8<<4)<<8;a|=(2<=n.strategy||n.level<2?0:n.level<6?1:6===n.level?2:3)<<6,0!==n.strstart&&(a|=32),a+=31-a%31,n.status=E,P(n,a),0!==n.strstart&&(P(n,e.adler>>>16),P(n,65535&e.adler)),e.adler=1}if(69===n.status)if(n.gzhead.extra){for(i=n.pending;n.gzindex<(65535&n.gzhead.extra.length)&&(n.pending!==n.pending_buf_size||(n.gzhead.hcrc&&n.pending>i&&(e.adler=p(e.adler,n.pending_buf,n.pending-i,i)),F(e),i=n.pending,n.pending!==n.pending_buf_size));)U(n,255&n.gzhead.extra[n.gzindex]),n.gzindex++;n.gzhead.hcrc&&n.pending>i&&(e.adler=p(e.adler,n.pending_buf,n.pending-i,i)),n.gzindex===n.gzhead.extra.length&&(n.gzindex=0,n.status=73)}else n.status=73;if(73===n.status)if(n.gzhead.name){i=n.pending;do{if(n.pending===n.pending_buf_size&&(n.gzhead.hcrc&&n.pending>i&&(e.adler=p(e.adler,n.pending_buf,n.pending-i,i)),F(e),i=n.pending,n.pending===n.pending_buf_size)){s=1;break}s=n.gzindexi&&(e.adler=p(e.adler,n.pending_buf,n.pending-i,i)),0===s&&(n.gzindex=0,n.status=91)}else n.status=91;if(91===n.status)if(n.gzhead.comment){i=n.pending;do{if(n.pending===n.pending_buf_size&&(n.gzhead.hcrc&&n.pending>i&&(e.adler=p(e.adler,n.pending_buf,n.pending-i,i)),F(e),i=n.pending,n.pending===n.pending_buf_size)){s=1;break}s=n.gzindexi&&(e.adler=p(e.adler,n.pending_buf,n.pending-i,i)),0===s&&(n.status=103)}else n.status=103;if(103===n.status&&(n.gzhead.hcrc?(n.pending+2>n.pending_buf_size&&F(e),n.pending+2<=n.pending_buf_size&&(U(n,255&e.adler),U(n,e.adler>>8&255),e.adler=0,n.status=E)):n.status=E),0!==n.pending){if(F(e),0===e.avail_out)return n.last_flush=-1,m}else if(0===e.avail_in&&T(t)<=T(r)&&t!==f)return R(e,-5);if(666===n.status&&0!==e.avail_in)return R(e,-5);if(0!==e.avail_in||0!==n.lookahead||t!==l&&666!==n.status){var o=2===n.strategy?function(e,t){for(var r;;){if(0===e.lookahead&&(j(e),0===e.lookahead)){if(t===l)return A;break}if(e.match_length=0,r=u._tr_tally(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++,r&&(N(e,!1),0===e.strm.avail_out))return A}return e.insert=0,t===f?(N(e,!0),0===e.strm.avail_out?O:B):e.last_lit&&(N(e,!1),0===e.strm.avail_out)?A:I}(n,t):3===n.strategy?function(e,t){for(var r,n,i,s,a=e.window;;){if(e.lookahead<=S){if(j(e),e.lookahead<=S&&t===l)return A;if(0===e.lookahead)break}if(e.match_length=0,e.lookahead>=x&&0e.lookahead&&(e.match_length=e.lookahead)}if(e.match_length>=x?(r=u._tr_tally(e,1,e.match_length-x),e.lookahead-=e.match_length,e.strstart+=e.match_length,e.match_length=0):(r=u._tr_tally(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++),r&&(N(e,!1),0===e.strm.avail_out))return A}return e.insert=0,t===f?(N(e,!0),0===e.strm.avail_out?O:B):e.last_lit&&(N(e,!1),0===e.strm.avail_out)?A:I}(n,t):h[n.level].func(n,t);if(o!==O&&o!==B||(n.status=666),o===A||o===O)return 0===e.avail_out&&(n.last_flush=-1),m;if(o===I&&(1===t?u._tr_align(n):5!==t&&(u._tr_stored_block(n,0,0,!1),3===t&&(D(n.head),0===n.lookahead&&(n.strstart=0,n.block_start=0,n.insert=0))),F(e),0===e.avail_out))return n.last_flush=-1,m}return t!==f?m:n.wrap<=0?1:(2===n.wrap?(U(n,255&e.adler),U(n,e.adler>>8&255),U(n,e.adler>>16&255),U(n,e.adler>>24&255),U(n,255&e.total_in),U(n,e.total_in>>8&255),U(n,e.total_in>>16&255),U(n,e.total_in>>24&255)):(P(n,e.adler>>>16),P(n,65535&e.adler)),F(e),0=r.w_size&&(0===s&&(D(r.head),r.strstart=0,r.block_start=0,r.insert=0),u=new c.Buf8(r.w_size),c.arraySet(u,t,l-r.w_size,r.w_size,0),t=u,l=r.w_size),a=e.avail_in,o=e.next_in,h=e.input,e.avail_in=l,e.next_in=0,e.input=t,j(r);r.lookahead>=x;){for(n=r.strstart,i=r.lookahead-(x-1);r.ins_h=(r.ins_h<>>=y=v>>>24,p-=y,0===(y=v>>>16&255))C[s++]=65535&v;else{if(!(16&y)){if(0==(64&y)){v=m[(65535&v)+(d&(1<>>=y,p-=y),p<15&&(d+=z[n++]<>>=y=v>>>24,p-=y,!(16&(y=v>>>16&255))){if(0==(64&y)){v=_[(65535&v)+(d&(1<>>=y,p-=y,(y=s-a)>3,d&=(1<<(p-=w<<3))-1,e.next_in=n,e.next_out=s,e.avail_in=n>>24&255)+(e>>>8&65280)+((65280&e)<<8)+((255&e)<<24)}function s(){this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new I.Buf16(320),this.work=new I.Buf16(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}function a(e){var t;return e&&e.state?(t=e.state,e.total_in=e.total_out=t.total=0,e.msg=\"\",t.wrap&&(e.adler=1&t.wrap),t.mode=P,t.last=0,t.havedict=0,t.dmax=32768,t.head=null,t.hold=0,t.bits=0,t.lencode=t.lendyn=new I.Buf32(n),t.distcode=t.distdyn=new I.Buf32(i),t.sane=1,t.back=-1,N):U}function o(e){var t;return e&&e.state?((t=e.state).wsize=0,t.whave=0,t.wnext=0,a(e)):U}function h(e,t){var r,n;return e&&e.state?(n=e.state,t<0?(r=0,t=-t):(r=1+(t>>4),t<48&&(t&=15)),t&&(t<8||15=s.wsize?(I.arraySet(s.window,t,r-s.wsize,s.wsize,0),s.wnext=0,s.whave=s.wsize):(n<(i=s.wsize-s.wnext)&&(i=n),I.arraySet(s.window,t,r-n,i,s.wnext),(n-=i)?(I.arraySet(s.window,t,r-n,n,0),s.wnext=n,s.whave=s.wsize):(s.wnext+=i,s.wnext===s.wsize&&(s.wnext=0),s.whave>>8&255,r.check=B(r.check,E,2,0),l=u=0,r.mode=2;break}if(r.flags=0,r.head&&(r.head.done=!1),!(1&r.wrap)||(((255&u)<<8)+(u>>8))%31){e.msg=\"incorrect header check\",r.mode=30;break}if(8!=(15&u)){e.msg=\"unknown compression method\",r.mode=30;break}if(l-=4,k=8+(15&(u>>>=4)),0===r.wbits)r.wbits=k;else if(k>r.wbits){e.msg=\"invalid window size\",r.mode=30;break}r.dmax=1<>8&1),512&r.flags&&(E[0]=255&u,E[1]=u>>>8&255,r.check=B(r.check,E,2,0)),l=u=0,r.mode=3;case 3:for(;l<32;){if(0===o)break e;o--,u+=n[s++]<>>8&255,E[2]=u>>>16&255,E[3]=u>>>24&255,r.check=B(r.check,E,4,0)),l=u=0,r.mode=4;case 4:for(;l<16;){if(0===o)break e;o--,u+=n[s++]<>8),512&r.flags&&(E[0]=255&u,E[1]=u>>>8&255,r.check=B(r.check,E,2,0)),l=u=0,r.mode=5;case 5:if(1024&r.flags){for(;l<16;){if(0===o)break e;o--,u+=n[s++]<>>8&255,r.check=B(r.check,E,2,0)),l=u=0}else r.head&&(r.head.extra=null);r.mode=6;case 6:if(1024&r.flags&&(o<(d=r.length)&&(d=o),d&&(r.head&&(k=r.head.extra_len-r.length,r.head.extra||(r.head.extra=new Array(r.head.extra_len)),I.arraySet(r.head.extra,n,s,d,k)),512&r.flags&&(r.check=B(r.check,n,d,s)),o-=d,s+=d,r.length-=d),r.length))break e;r.length=0,r.mode=7;case 7:if(2048&r.flags){if(0===o)break e;for(d=0;k=n[s+d++],r.head&&k&&r.length<65536&&(r.head.name+=String.fromCharCode(k)),k&&d>9&1,r.head.done=!0),e.adler=r.check=0,r.mode=12;break;case 10:for(;l<32;){if(0===o)break e;o--,u+=n[s++]<>>=7&l,l-=7&l,r.mode=27;break}for(;l<3;){if(0===o)break e;o--,u+=n[s++]<>>=1)){case 0:r.mode=14;break;case 1:if(j(r),r.mode=20,6!==t)break;u>>>=2,l-=2;break e;case 2:r.mode=17;break;case 3:e.msg=\"invalid block type\",r.mode=30}u>>>=2,l-=2;break;case 14:for(u>>>=7&l,l-=7&l;l<32;){if(0===o)break e;o--,u+=n[s++]<>>16^65535)){e.msg=\"invalid stored block lengths\",r.mode=30;break}if(r.length=65535&u,l=u=0,r.mode=15,6===t)break e;case 15:r.mode=16;case 16:if(d=r.length){if(o>>=5,l-=5,r.ndist=1+(31&u),u>>>=5,l-=5,r.ncode=4+(15&u),u>>>=4,l-=4,286>>=3,l-=3}for(;r.have<19;)r.lens[A[r.have++]]=0;if(r.lencode=r.lendyn,r.lenbits=7,S={bits:r.lenbits},x=T(0,r.lens,0,19,r.lencode,0,r.work,S),r.lenbits=S.bits,x){e.msg=\"invalid code lengths set\",r.mode=30;break}r.have=0,r.mode=19;case 19:for(;r.have>>16&255,b=65535&C,!((_=C>>>24)<=l);){if(0===o)break e;o--,u+=n[s++]<>>=_,l-=_,r.lens[r.have++]=b;else{if(16===b){for(z=_+2;l>>=_,l-=_,0===r.have){e.msg=\"invalid bit length repeat\",r.mode=30;break}k=r.lens[r.have-1],d=3+(3&u),u>>>=2,l-=2}else if(17===b){for(z=_+3;l>>=_)),u>>>=3,l-=3}else{for(z=_+7;l>>=_)),u>>>=7,l-=7}if(r.have+d>r.nlen+r.ndist){e.msg=\"invalid bit length repeat\",r.mode=30;break}for(;d--;)r.lens[r.have++]=k}}if(30===r.mode)break;if(0===r.lens[256]){e.msg=\"invalid code -- missing end-of-block\",r.mode=30;break}if(r.lenbits=9,S={bits:r.lenbits},x=T(D,r.lens,0,r.nlen,r.lencode,0,r.work,S),r.lenbits=S.bits,x){e.msg=\"invalid literal/lengths set\",r.mode=30;break}if(r.distbits=6,r.distcode=r.distdyn,S={bits:r.distbits},x=T(F,r.lens,r.nlen,r.ndist,r.distcode,0,r.work,S),r.distbits=S.bits,x){e.msg=\"invalid distances set\",r.mode=30;break}if(r.mode=20,6===t)break e;case 20:r.mode=21;case 21:if(6<=o&&258<=h){e.next_out=a,e.avail_out=h,e.next_in=s,e.avail_in=o,r.hold=u,r.bits=l,R(e,c),a=e.next_out,i=e.output,h=e.avail_out,s=e.next_in,n=e.input,o=e.avail_in,u=r.hold,l=r.bits,12===r.mode&&(r.back=-1);break}for(r.back=0;g=(C=r.lencode[u&(1<>>16&255,b=65535&C,!((_=C>>>24)<=l);){if(0===o)break e;o--,u+=n[s++]<>v)])>>>16&255,b=65535&C,!(v+(_=C>>>24)<=l);){if(0===o)break e;o--,u+=n[s++]<>>=v,l-=v,r.back+=v}if(u>>>=_,l-=_,r.back+=_,r.length=b,0===g){r.mode=26;break}if(32&g){r.back=-1,r.mode=12;break}if(64&g){e.msg=\"invalid literal/length code\",r.mode=30;break}r.extra=15&g,r.mode=22;case 22:if(r.extra){for(z=r.extra;l>>=r.extra,l-=r.extra,r.back+=r.extra}r.was=r.length,r.mode=23;case 23:for(;g=(C=r.distcode[u&(1<>>16&255,b=65535&C,!((_=C>>>24)<=l);){if(0===o)break e;o--,u+=n[s++]<>v)])>>>16&255,b=65535&C,!(v+(_=C>>>24)<=l);){if(0===o)break e;o--,u+=n[s++]<>>=v,l-=v,r.back+=v}if(u>>>=_,l-=_,r.back+=_,64&g){e.msg=\"invalid distance code\",r.mode=30;break}r.offset=b,r.extra=15&g,r.mode=24;case 24:if(r.extra){for(z=r.extra;l>>=r.extra,l-=r.extra,r.back+=r.extra}if(r.offset>r.dmax){e.msg=\"invalid distance too far back\",r.mode=30;break}r.mode=25;case 25:if(0===h)break e;if(d=c-h,r.offset>d){if((d=r.offset-d)>r.whave&&r.sane){e.msg=\"invalid distance too far back\",r.mode=30;break}p=d>r.wnext?(d-=r.wnext,r.wsize-d):r.wnext-d,d>r.length&&(d=r.length),m=r.window}else m=i,p=a-r.offset,d=r.length;for(hd?(m=R[T+a[v]],A[I+a[v]]):(m=96,0),h=1<>S)+(u-=h)]=p<<24|m<<16|_|0,0!==u;);for(h=1<>=1;if(0!==h?(E&=h-1,E+=h):E=0,v++,0==--O[b]){if(b===w)break;b=t[r+a[v]]}if(k>>7)]}function U(e,t){e.pending_buf[e.pending++]=255&t,e.pending_buf[e.pending++]=t>>>8&255}function P(e,t,r){e.bi_valid>d-r?(e.bi_buf|=t<>d-e.bi_valid,e.bi_valid+=r-d):(e.bi_buf|=t<>>=1,r<<=1,0<--t;);return r>>>1}function Z(e,t,r){var n,i,s=new Array(g+1),a=0;for(n=1;n<=g;n++)s[n]=a=a+r[n-1]<<1;for(i=0;i<=t;i++){var o=e[2*i+1];0!==o&&(e[2*i]=j(s[o]++,o))}}function W(e){var t;for(t=0;t>1;1<=r;r--)G(e,s,r);for(i=h;r=e.heap[1],e.heap[1]=e.heap[e.heap_len--],G(e,s,1),n=e.heap[1],e.heap[--e.heap_max]=r,e.heap[--e.heap_max]=n,s[2*i]=s[2*r]+s[2*n],e.depth[i]=(e.depth[r]>=e.depth[n]?e.depth[r]:e.depth[n])+1,s[2*r+1]=s[2*n+1]=i,e.heap[1]=i++,G(e,s,1),2<=e.heap_len;);e.heap[--e.heap_max]=e.heap[1],function(e,t){var r,n,i,s,a,o,h=t.dyn_tree,u=t.max_code,l=t.stat_desc.static_tree,f=t.stat_desc.has_stree,c=t.stat_desc.extra_bits,d=t.stat_desc.extra_base,p=t.stat_desc.max_length,m=0;for(s=0;s<=g;s++)e.bl_count[s]=0;for(h[2*e.heap[e.heap_max]+1]=0,r=e.heap_max+1;r<_;r++)p<(s=h[2*h[2*(n=e.heap[r])+1]+1]+1)&&(s=p,m++),h[2*n+1]=s,u>=7;n>>=1)if(1&r&&0!==e.dyn_ltree[2*t])return o;if(0!==e.dyn_ltree[18]||0!==e.dyn_ltree[20]||0!==e.dyn_ltree[26])return h;for(t=32;t>>3,(s=e.static_len+3+7>>>3)<=i&&(i=s)):i=s=r+5,r+4<=i&&-1!==t?J(e,t,r,n):4===e.strategy||s===i?(P(e,2+(n?1:0),3),K(e,z,C)):(P(e,4+(n?1:0),3),function(e,t,r,n){var i;for(P(e,t-257,5),P(e,r-1,5),P(e,n-4,4),i=0;i>>8&255,e.pending_buf[e.d_buf+2*e.last_lit+1]=255&t,e.pending_buf[e.l_buf+e.last_lit]=255&r,e.last_lit++,0===t?e.dyn_ltree[2*r]++:(e.matches++,t--,e.dyn_ltree[2*(A[r]+u+1)]++,e.dyn_dtree[2*N(t)]++),e.last_lit===e.lit_bufsize-1},r._tr_align=function(e){P(e,2,3),L(e,m,z),function(e){16===e.bi_valid?(U(e,e.bi_buf),e.bi_buf=0,e.bi_valid=0):8<=e.bi_valid&&(e.pending_buf[e.pending++]=255&e.bi_buf,e.bi_buf>>=8,e.bi_valid-=8)}(e)}},{\"../utils/common\":41}],53:[function(e,t,r){\"use strict\";t.exports=function(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg=\"\",this.state=null,this.data_type=2,this.adler=0}},{}],54:[function(e,t,r){(function(e){!function(r,n){\"use strict\";if(!r.setImmediate){var i,s,t,a,o=1,h={},u=!1,l=r.document,e=Object.getPrototypeOf&&Object.getPrototypeOf(r);e=e&&e.setTimeout?e:r,i=\"[object process]\"==={}.toString.call(r.process)?function(e){process.nextTick(function(){c(e)})}:function(){if(r.postMessage&&!r.importScripts){var e=!0,t=r.onmessage;return r.onmessage=function(){e=!1},r.postMessage(\"\",\"*\"),r.onmessage=t,e}}()?(a=\"setImmediate$\"+Math.random()+\"$\",r.addEventListener?r.addEventListener(\"message\",d,!1):r.attachEvent(\"onmessage\",d),function(e){r.postMessage(a+e,\"*\")}):r.MessageChannel?((t=new MessageChannel).port1.onmessage=function(e){c(e.data)},function(e){t.port2.postMessage(e)}):l&&\"onreadystatechange\"in l.createElement(\"script\")?(s=l.documentElement,function(e){var t=l.createElement(\"script\");t.onreadystatechange=function(){c(e),t.onreadystatechange=null,s.removeChild(t),t=null},s.appendChild(t)}):function(e){setTimeout(c,0,e)},e.setImmediate=function(e){\"function\"!=typeof e&&(e=new Function(\"\"+e));for(var t=new Array(arguments.length-1),r=0;r arr.length) len = arr.length;\n for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n return arr2;\n}\nmodule.exports = _arrayLikeToArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;", "var arrayLikeToArray = require(\"./arrayLikeToArray.js\");\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return arrayLikeToArray(o, minLen);\n}\nmodule.exports = _unsupportedIterableToArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;", "function _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nmodule.exports = _nonIterableRest, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;", "var arrayWithHoles = require(\"./arrayWithHoles.js\");\nvar iterableToArrayLimit = require(\"./iterableToArrayLimit.js\");\nvar unsupportedIterableToArray = require(\"./unsupportedIterableToArray.js\");\nvar nonIterableRest = require(\"./nonIterableRest.js\");\nfunction _slicedToArray(arr, i) {\n return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || unsupportedIterableToArray(arr, i) || nonIterableRest();\n}\nmodule.exports = _slicedToArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;", "function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\nmodule.exports = _classCallCheck, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;", "function _typeof(o) {\n \"@babel/helpers - typeof\";\n\n return (module.exports = _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) {\n return typeof o;\n } : function (o) {\n return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports), _typeof(o);\n}\nmodule.exports = _typeof, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;", "var _typeof = require(\"./typeof.js\")[\"default\"];\nfunction toPrimitive(t, r) {\n if (\"object\" != _typeof(t) || !t) return t;\n var e = t[Symbol.toPrimitive];\n if (void 0 !== e) {\n var i = e.call(t, r || \"default\");\n if (\"object\" != _typeof(i)) return i;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (\"string\" === r ? String : Number)(t);\n}\nmodule.exports = toPrimitive, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;", "var _typeof = require(\"./typeof.js\")[\"default\"];\nvar toPrimitive = require(\"./toPrimitive.js\");\nfunction toPropertyKey(t) {\n var i = toPrimitive(t, \"string\");\n return \"symbol\" == _typeof(i) ? i : String(i);\n}\nmodule.exports = toPropertyKey, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;", "var toPropertyKey = require(\"./toPropertyKey.js\");\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, toPropertyKey(descriptor.key), descriptor);\n }\n}\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n Object.defineProperty(Constructor, \"prototype\", {\n writable: false\n });\n return Constructor;\n}\nmodule.exports = _createClass, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;", "(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@babel/runtime/helpers/slicedToArray'), require('@babel/runtime/helpers/classCallCheck'), require('@babel/runtime/helpers/createClass')) :\n typeof define === 'function' && define.amd ? define(['exports', '@babel/runtime/helpers/slicedToArray', '@babel/runtime/helpers/classCallCheck', '@babel/runtime/helpers/createClass'], factory) :\n (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.automationEvents = {}, global._slicedToArray, global._classCallCheck, global._createClass));\n})(this, (function (exports, _slicedToArray, _classCallCheck, _createClass) { 'use strict';\n\n var createExtendedExponentialRampToValueAutomationEvent = function createExtendedExponentialRampToValueAutomationEvent(value, endTime, insertTime) {\n return {\n endTime: endTime,\n insertTime: insertTime,\n type: 'exponentialRampToValue',\n value: value\n };\n };\n\n var createExtendedLinearRampToValueAutomationEvent = function createExtendedLinearRampToValueAutomationEvent(value, endTime, insertTime) {\n return {\n endTime: endTime,\n insertTime: insertTime,\n type: 'linearRampToValue',\n value: value\n };\n };\n\n var createSetValueAutomationEvent = function createSetValueAutomationEvent(value, startTime) {\n return {\n startTime: startTime,\n type: 'setValue',\n value: value\n };\n };\n\n var createSetValueCurveAutomationEvent = function createSetValueCurveAutomationEvent(values, startTime, duration) {\n return {\n duration: duration,\n startTime: startTime,\n type: 'setValueCurve',\n values: values\n };\n };\n\n var getTargetValueAtTime = function getTargetValueAtTime(time, valueAtStartTime, _ref) {\n var startTime = _ref.startTime,\n target = _ref.target,\n timeConstant = _ref.timeConstant;\n return target + (valueAtStartTime - target) * Math.exp((startTime - time) / timeConstant);\n };\n\n var isExponentialRampToValueAutomationEvent = function isExponentialRampToValueAutomationEvent(automationEvent) {\n return automationEvent.type === 'exponentialRampToValue';\n };\n\n var isLinearRampToValueAutomationEvent = function isLinearRampToValueAutomationEvent(automationEvent) {\n return automationEvent.type === 'linearRampToValue';\n };\n\n var isAnyRampToValueAutomationEvent = function isAnyRampToValueAutomationEvent(automationEvent) {\n return isExponentialRampToValueAutomationEvent(automationEvent) || isLinearRampToValueAutomationEvent(automationEvent);\n };\n\n var isSetValueAutomationEvent = function isSetValueAutomationEvent(automationEvent) {\n return automationEvent.type === 'setValue';\n };\n\n var isSetValueCurveAutomationEvent = function isSetValueCurveAutomationEvent(automationEvent) {\n return automationEvent.type === 'setValueCurve';\n };\n\n var getValueOfAutomationEventAtIndexAtTime = function getValueOfAutomationEventAtIndexAtTime(automationEvents, index, time, defaultValue) {\n var automationEvent = automationEvents[index];\n return automationEvent === undefined ? defaultValue : isAnyRampToValueAutomationEvent(automationEvent) || isSetValueAutomationEvent(automationEvent) ? automationEvent.value : isSetValueCurveAutomationEvent(automationEvent) ? automationEvent.values[automationEvent.values.length - 1] : getTargetValueAtTime(time, getValueOfAutomationEventAtIndexAtTime(automationEvents, index - 1, automationEvent.startTime, defaultValue), automationEvent);\n };\n\n var getEndTimeAndValueOfPreviousAutomationEvent = function getEndTimeAndValueOfPreviousAutomationEvent(automationEvents, index, currentAutomationEvent, nextAutomationEvent, defaultValue) {\n return currentAutomationEvent === undefined ? [nextAutomationEvent.insertTime, defaultValue] : isAnyRampToValueAutomationEvent(currentAutomationEvent) ? [currentAutomationEvent.endTime, currentAutomationEvent.value] : isSetValueAutomationEvent(currentAutomationEvent) ? [currentAutomationEvent.startTime, currentAutomationEvent.value] : isSetValueCurveAutomationEvent(currentAutomationEvent) ? [currentAutomationEvent.startTime + currentAutomationEvent.duration, currentAutomationEvent.values[currentAutomationEvent.values.length - 1]] : [currentAutomationEvent.startTime, getValueOfAutomationEventAtIndexAtTime(automationEvents, index - 1, currentAutomationEvent.startTime, defaultValue)];\n };\n\n var isCancelAndHoldAutomationEvent = function isCancelAndHoldAutomationEvent(automationEvent) {\n return automationEvent.type === 'cancelAndHold';\n };\n\n var isCancelScheduledValuesAutomationEvent = function isCancelScheduledValuesAutomationEvent(automationEvent) {\n return automationEvent.type === 'cancelScheduledValues';\n };\n\n var getEventTime = function getEventTime(automationEvent) {\n if (isCancelAndHoldAutomationEvent(automationEvent) || isCancelScheduledValuesAutomationEvent(automationEvent)) {\n return automationEvent.cancelTime;\n }\n if (isExponentialRampToValueAutomationEvent(automationEvent) || isLinearRampToValueAutomationEvent(automationEvent)) {\n return automationEvent.endTime;\n }\n return automationEvent.startTime;\n };\n\n var getExponentialRampValueAtTime = function getExponentialRampValueAtTime(time, startTime, valueAtStartTime, _ref) {\n var endTime = _ref.endTime,\n value = _ref.value;\n if (valueAtStartTime === value) {\n return value;\n }\n if (0 < valueAtStartTime && 0 < value || valueAtStartTime < 0 && value < 0) {\n return valueAtStartTime * Math.pow(value / valueAtStartTime, (time - startTime) / (endTime - startTime));\n }\n return 0;\n };\n\n var getLinearRampValueAtTime = function getLinearRampValueAtTime(time, startTime, valueAtStartTime, _ref) {\n var endTime = _ref.endTime,\n value = _ref.value;\n return valueAtStartTime + (time - startTime) / (endTime - startTime) * (value - valueAtStartTime);\n };\n\n var interpolateValue = function interpolateValue(values, theoreticIndex) {\n var lowerIndex = Math.floor(theoreticIndex);\n var upperIndex = Math.ceil(theoreticIndex);\n if (lowerIndex === upperIndex) {\n return values[lowerIndex];\n }\n return (1 - (theoreticIndex - lowerIndex)) * values[lowerIndex] + (1 - (upperIndex - theoreticIndex)) * values[upperIndex];\n };\n\n var getValueCurveValueAtTime = function getValueCurveValueAtTime(time, _ref) {\n var duration = _ref.duration,\n startTime = _ref.startTime,\n values = _ref.values;\n var theoreticIndex = (time - startTime) / duration * (values.length - 1);\n return interpolateValue(values, theoreticIndex);\n };\n\n var isSetTargetAutomationEvent = function isSetTargetAutomationEvent(automationEvent) {\n return automationEvent.type === 'setTarget';\n };\n\n var AutomationEventList = /*#__PURE__*/function (_Symbol$iterator) {\n function AutomationEventList(defaultValue) {\n _classCallCheck(this, AutomationEventList);\n this._automationEvents = [];\n this._currenTime = 0;\n this._defaultValue = defaultValue;\n }\n _createClass(AutomationEventList, [{\n key: _Symbol$iterator,\n value: function value() {\n return this._automationEvents[Symbol.iterator]();\n }\n }, {\n key: \"add\",\n value: function add(automationEvent) {\n var eventTime = getEventTime(automationEvent);\n if (isCancelAndHoldAutomationEvent(automationEvent) || isCancelScheduledValuesAutomationEvent(automationEvent)) {\n var index = this._automationEvents.findIndex(function (currentAutomationEvent) {\n if (isCancelScheduledValuesAutomationEvent(automationEvent) && isSetValueCurveAutomationEvent(currentAutomationEvent)) {\n return currentAutomationEvent.startTime + currentAutomationEvent.duration >= eventTime;\n }\n return getEventTime(currentAutomationEvent) >= eventTime;\n });\n var removedAutomationEvent = this._automationEvents[index];\n if (index !== -1) {\n this._automationEvents = this._automationEvents.slice(0, index);\n }\n if (isCancelAndHoldAutomationEvent(automationEvent)) {\n var lastAutomationEvent = this._automationEvents[this._automationEvents.length - 1];\n if (removedAutomationEvent !== undefined && isAnyRampToValueAutomationEvent(removedAutomationEvent)) {\n if (lastAutomationEvent !== undefined && isSetTargetAutomationEvent(lastAutomationEvent)) {\n throw new Error('The internal list is malformed.');\n }\n var startTime = lastAutomationEvent === undefined ? removedAutomationEvent.insertTime : isSetValueCurveAutomationEvent(lastAutomationEvent) ? lastAutomationEvent.startTime + lastAutomationEvent.duration : getEventTime(lastAutomationEvent);\n var startValue = lastAutomationEvent === undefined ? this._defaultValue : isSetValueCurveAutomationEvent(lastAutomationEvent) ? lastAutomationEvent.values[lastAutomationEvent.values.length - 1] : lastAutomationEvent.value;\n var value = isExponentialRampToValueAutomationEvent(removedAutomationEvent) ? getExponentialRampValueAtTime(eventTime, startTime, startValue, removedAutomationEvent) : getLinearRampValueAtTime(eventTime, startTime, startValue, removedAutomationEvent);\n var truncatedAutomationEvent = isExponentialRampToValueAutomationEvent(removedAutomationEvent) ? createExtendedExponentialRampToValueAutomationEvent(value, eventTime, this._currenTime) : createExtendedLinearRampToValueAutomationEvent(value, eventTime, this._currenTime);\n this._automationEvents.push(truncatedAutomationEvent);\n }\n if (lastAutomationEvent !== undefined && isSetTargetAutomationEvent(lastAutomationEvent)) {\n this._automationEvents.push(createSetValueAutomationEvent(this.getValue(eventTime), eventTime));\n }\n if (lastAutomationEvent !== undefined && isSetValueCurveAutomationEvent(lastAutomationEvent) && lastAutomationEvent.startTime + lastAutomationEvent.duration > eventTime) {\n var duration = eventTime - lastAutomationEvent.startTime;\n var ratio = (lastAutomationEvent.values.length - 1) / lastAutomationEvent.duration;\n var length = Math.max(2, 1 + Math.ceil(duration * ratio));\n var fraction = duration / (length - 1) * ratio;\n var values = lastAutomationEvent.values.slice(0, length);\n if (fraction < 1) {\n for (var i = 1; i < length; i += 1) {\n var factor = fraction * i % 1;\n values[i] = lastAutomationEvent.values[i - 1] * (1 - factor) + lastAutomationEvent.values[i] * factor;\n }\n }\n this._automationEvents[this._automationEvents.length - 1] = createSetValueCurveAutomationEvent(values, lastAutomationEvent.startTime, duration);\n }\n }\n } else {\n var _index = this._automationEvents.findIndex(function (currentAutomationEvent) {\n return getEventTime(currentAutomationEvent) > eventTime;\n });\n var previousAutomationEvent = _index === -1 ? this._automationEvents[this._automationEvents.length - 1] : this._automationEvents[_index - 1];\n if (previousAutomationEvent !== undefined && isSetValueCurveAutomationEvent(previousAutomationEvent) && getEventTime(previousAutomationEvent) + previousAutomationEvent.duration > eventTime) {\n return false;\n }\n var persistentAutomationEvent = isExponentialRampToValueAutomationEvent(automationEvent) ? createExtendedExponentialRampToValueAutomationEvent(automationEvent.value, automationEvent.endTime, this._currenTime) : isLinearRampToValueAutomationEvent(automationEvent) ? createExtendedLinearRampToValueAutomationEvent(automationEvent.value, eventTime, this._currenTime) : automationEvent;\n if (_index === -1) {\n this._automationEvents.push(persistentAutomationEvent);\n } else {\n if (isSetValueCurveAutomationEvent(automationEvent) && eventTime + automationEvent.duration > getEventTime(this._automationEvents[_index])) {\n return false;\n }\n this._automationEvents.splice(_index, 0, persistentAutomationEvent);\n }\n }\n return true;\n }\n }, {\n key: \"flush\",\n value: function flush(time) {\n var index = this._automationEvents.findIndex(function (currentAutomationEvent) {\n return getEventTime(currentAutomationEvent) > time;\n });\n if (index > 1) {\n var remainingAutomationEvents = this._automationEvents.slice(index - 1);\n var firstRemainingAutomationEvent = remainingAutomationEvents[0];\n if (isSetTargetAutomationEvent(firstRemainingAutomationEvent)) {\n remainingAutomationEvents.unshift(createSetValueAutomationEvent(getValueOfAutomationEventAtIndexAtTime(this._automationEvents, index - 2, firstRemainingAutomationEvent.startTime, this._defaultValue), firstRemainingAutomationEvent.startTime));\n }\n this._automationEvents = remainingAutomationEvents;\n }\n }\n }, {\n key: \"getValue\",\n value: function getValue(time) {\n if (this._automationEvents.length === 0) {\n return this._defaultValue;\n }\n var indexOfNextEvent = this._automationEvents.findIndex(function (automationEvent) {\n return getEventTime(automationEvent) > time;\n });\n var nextAutomationEvent = this._automationEvents[indexOfNextEvent];\n var indexOfCurrentEvent = (indexOfNextEvent === -1 ? this._automationEvents.length : indexOfNextEvent) - 1;\n var currentAutomationEvent = this._automationEvents[indexOfCurrentEvent];\n if (currentAutomationEvent !== undefined && isSetTargetAutomationEvent(currentAutomationEvent) && (nextAutomationEvent === undefined || !isAnyRampToValueAutomationEvent(nextAutomationEvent) || nextAutomationEvent.insertTime > time)) {\n return getTargetValueAtTime(time, getValueOfAutomationEventAtIndexAtTime(this._automationEvents, indexOfCurrentEvent - 1, currentAutomationEvent.startTime, this._defaultValue), currentAutomationEvent);\n }\n if (currentAutomationEvent !== undefined && isSetValueAutomationEvent(currentAutomationEvent) && (nextAutomationEvent === undefined || !isAnyRampToValueAutomationEvent(nextAutomationEvent))) {\n return currentAutomationEvent.value;\n }\n if (currentAutomationEvent !== undefined && isSetValueCurveAutomationEvent(currentAutomationEvent) && (nextAutomationEvent === undefined || !isAnyRampToValueAutomationEvent(nextAutomationEvent) || currentAutomationEvent.startTime + currentAutomationEvent.duration > time)) {\n if (time < currentAutomationEvent.startTime + currentAutomationEvent.duration) {\n return getValueCurveValueAtTime(time, currentAutomationEvent);\n }\n return currentAutomationEvent.values[currentAutomationEvent.values.length - 1];\n }\n if (currentAutomationEvent !== undefined && isAnyRampToValueAutomationEvent(currentAutomationEvent) && (nextAutomationEvent === undefined || !isAnyRampToValueAutomationEvent(nextAutomationEvent))) {\n return currentAutomationEvent.value;\n }\n if (nextAutomationEvent !== undefined && isExponentialRampToValueAutomationEvent(nextAutomationEvent)) {\n var _getEndTimeAndValueOf = getEndTimeAndValueOfPreviousAutomationEvent(this._automationEvents, indexOfCurrentEvent, currentAutomationEvent, nextAutomationEvent, this._defaultValue),\n _getEndTimeAndValueOf2 = _slicedToArray(_getEndTimeAndValueOf, 2),\n startTime = _getEndTimeAndValueOf2[0],\n value = _getEndTimeAndValueOf2[1];\n return getExponentialRampValueAtTime(time, startTime, value, nextAutomationEvent);\n }\n if (nextAutomationEvent !== undefined && isLinearRampToValueAutomationEvent(nextAutomationEvent)) {\n var _getEndTimeAndValueOf3 = getEndTimeAndValueOfPreviousAutomationEvent(this._automationEvents, indexOfCurrentEvent, currentAutomationEvent, nextAutomationEvent, this._defaultValue),\n _getEndTimeAndValueOf4 = _slicedToArray(_getEndTimeAndValueOf3, 2),\n _startTime = _getEndTimeAndValueOf4[0],\n _value = _getEndTimeAndValueOf4[1];\n return getLinearRampValueAtTime(time, _startTime, _value, nextAutomationEvent);\n }\n return this._defaultValue;\n }\n }]);\n return AutomationEventList;\n }(Symbol.iterator);\n\n var createCancelAndHoldAutomationEvent = function createCancelAndHoldAutomationEvent(cancelTime) {\n return {\n cancelTime: cancelTime,\n type: 'cancelAndHold'\n };\n };\n\n var createCancelScheduledValuesAutomationEvent = function createCancelScheduledValuesAutomationEvent(cancelTime) {\n return {\n cancelTime: cancelTime,\n type: 'cancelScheduledValues'\n };\n };\n\n var createExponentialRampToValueAutomationEvent = function createExponentialRampToValueAutomationEvent(value, endTime) {\n return {\n endTime: endTime,\n type: 'exponentialRampToValue',\n value: value\n };\n };\n\n var createLinearRampToValueAutomationEvent = function createLinearRampToValueAutomationEvent(value, endTime) {\n return {\n endTime: endTime,\n type: 'linearRampToValue',\n value: value\n };\n };\n\n var createSetTargetAutomationEvent = function createSetTargetAutomationEvent(target, startTime, timeConstant) {\n return {\n startTime: startTime,\n target: target,\n timeConstant: timeConstant,\n type: 'setTarget'\n };\n };\n\n exports.AutomationEventList = AutomationEventList;\n exports.createCancelAndHoldAutomationEvent = createCancelAndHoldAutomationEvent;\n exports.createCancelScheduledValuesAutomationEvent = createCancelScheduledValuesAutomationEvent;\n exports.createExponentialRampToValueAutomationEvent = createExponentialRampToValueAutomationEvent;\n exports.createLinearRampToValueAutomationEvent = createLinearRampToValueAutomationEvent;\n exports.createSetTargetAutomationEvent = createSetTargetAutomationEvent;\n exports.createSetValueAutomationEvent = createSetValueAutomationEvent;\n exports.createSetValueCurveAutomationEvent = createSetValueCurveAutomationEvent;\n\n}));\n", "const {\n hasOwnProperty,\n setPrototypeOf,\n isFrozen,\n getPrototypeOf,\n getOwnPropertyDescriptor,\n} = Object;\n\nlet { freeze, seal, create } = Object; // eslint-disable-line import/no-mutable-exports\nlet { apply, construct } = typeof Reflect !== 'undefined' && Reflect;\n\nif (!apply) {\n apply = function (fun, thisValue, args) {\n return fun.apply(thisValue, args);\n };\n}\n\nif (!freeze) {\n freeze = function (x) {\n return x;\n };\n}\n\nif (!seal) {\n seal = function (x) {\n return x;\n };\n}\n\nif (!construct) {\n construct = function (Func, args) {\n return new Func(...args);\n };\n}\n\nconst arrayForEach = unapply(Array.prototype.forEach);\nconst arrayIndexOf = unapply(Array.prototype.indexOf);\nconst arrayPop = unapply(Array.prototype.pop);\nconst arrayPush = unapply(Array.prototype.push);\nconst arraySlice = unapply(Array.prototype.slice);\n\nconst stringToLowerCase = unapply(String.prototype.toLowerCase);\nconst stringToString = unapply(String.prototype.toString);\nconst stringMatch = unapply(String.prototype.match);\nconst stringReplace = unapply(String.prototype.replace);\nconst stringIndexOf = unapply(String.prototype.indexOf);\nconst stringTrim = unapply(String.prototype.trim);\n\nconst regExpTest = unapply(RegExp.prototype.test);\n\nconst typeErrorCreate = unconstruct(TypeError);\n\nexport function numberIsNaN(x) {\n // eslint-disable-next-line unicorn/prefer-number-properties\n return typeof x === 'number' && isNaN(x);\n}\n\nexport function unapply(func) {\n return (thisArg, ...args) => apply(func, thisArg, args);\n}\n\nexport function unconstruct(func) {\n return (...args) => construct(func, args);\n}\n\n/* Add properties to a lookup table */\nexport function addToSet(set, array, transformCaseFunc) {\n transformCaseFunc = transformCaseFunc ?? stringToLowerCase;\n if (setPrototypeOf) {\n // Make 'in' and truthy checks like Boolean(set.constructor)\n // independent of any properties defined on Object.prototype.\n // Prevent prototype setters from intercepting set as a this value.\n setPrototypeOf(set, null);\n }\n\n let l = array.length;\n while (l--) {\n let element = array[l];\n if (typeof element === 'string') {\n const lcElement = transformCaseFunc(element);\n if (lcElement !== element) {\n // Config presets (e.g. tags.js, attrs.js) are immutable.\n if (!isFrozen(array)) {\n array[l] = lcElement;\n }\n\n element = lcElement;\n }\n }\n\n set[element] = true;\n }\n\n return set;\n}\n\n/* Shallow clone an object */\nexport function clone(object) {\n const newObject = create(null);\n\n let property;\n for (property in object) {\n if (apply(hasOwnProperty, object, [property]) === true) {\n newObject[property] = object[property];\n }\n }\n\n return newObject;\n}\n\n/* IE10 doesn't support __lookupGetter__ so lets'\n * simulate it. It also automatically checks\n * if the prop is function or getter and behaves\n * accordingly. */\nfunction lookupGetter(object, prop) {\n while (object !== null) {\n const desc = getOwnPropertyDescriptor(object, prop);\n if (desc) {\n if (desc.get) {\n return unapply(desc.get);\n }\n\n if (typeof desc.value === 'function') {\n return unapply(desc.value);\n }\n }\n\n object = getPrototypeOf(object);\n }\n\n function fallbackValue(element) {\n console.warn('fallback value for', element);\n return null;\n }\n\n return fallbackValue;\n}\n\nexport {\n // Array\n arrayForEach,\n arrayIndexOf,\n arrayPop,\n arrayPush,\n arraySlice,\n // Object\n freeze,\n getPrototypeOf,\n getOwnPropertyDescriptor,\n hasOwnProperty,\n isFrozen,\n setPrototypeOf,\n seal,\n // RegExp\n regExpTest,\n // String\n stringIndexOf,\n stringMatch,\n stringReplace,\n stringToLowerCase,\n stringToString,\n stringTrim,\n // Errors\n typeErrorCreate,\n // Other\n lookupGetter,\n};\n", "import { freeze } from './utils.js';\n\nexport const html = freeze([\n 'a',\n 'abbr',\n 'acronym',\n 'address',\n 'area',\n 'article',\n 'aside',\n 'audio',\n 'b',\n 'bdi',\n 'bdo',\n 'big',\n 'blink',\n 'blockquote',\n 'body',\n 'br',\n 'button',\n 'canvas',\n 'caption',\n 'center',\n 'cite',\n 'code',\n 'col',\n 'colgroup',\n 'content',\n 'data',\n 'datalist',\n 'dd',\n 'decorator',\n 'del',\n 'details',\n 'dfn',\n 'dialog',\n 'dir',\n 'div',\n 'dl',\n 'dt',\n 'element',\n 'em',\n 'fieldset',\n 'figcaption',\n 'figure',\n 'font',\n 'footer',\n 'form',\n 'h1',\n 'h2',\n 'h3',\n 'h4',\n 'h5',\n 'h6',\n 'head',\n 'header',\n 'hgroup',\n 'hr',\n 'html',\n 'i',\n 'img',\n 'input',\n 'ins',\n 'kbd',\n 'label',\n 'legend',\n 'li',\n 'main',\n 'map',\n 'mark',\n 'marquee',\n 'menu',\n 'menuitem',\n 'meter',\n 'nav',\n 'nobr',\n 'ol',\n 'optgroup',\n 'option',\n 'output',\n 'p',\n 'picture',\n 'pre',\n 'progress',\n 'q',\n 'rp',\n 'rt',\n 'ruby',\n 's',\n 'samp',\n 'section',\n 'select',\n 'shadow',\n 'small',\n 'source',\n 'spacer',\n 'span',\n 'strike',\n 'strong',\n 'style',\n 'sub',\n 'summary',\n 'sup',\n 'table',\n 'tbody',\n 'td',\n 'template',\n 'textarea',\n 'tfoot',\n 'th',\n 'thead',\n 'time',\n 'tr',\n 'track',\n 'tt',\n 'u',\n 'ul',\n 'var',\n 'video',\n 'wbr',\n]);\n\n// SVG\nexport const svg = freeze([\n 'svg',\n 'a',\n 'altglyph',\n 'altglyphdef',\n 'altglyphitem',\n 'animatecolor',\n 'animatemotion',\n 'animatetransform',\n 'circle',\n 'clippath',\n 'defs',\n 'desc',\n 'ellipse',\n 'filter',\n 'font',\n 'g',\n 'glyph',\n 'glyphref',\n 'hkern',\n 'image',\n 'line',\n 'lineargradient',\n 'marker',\n 'mask',\n 'metadata',\n 'mpath',\n 'path',\n 'pattern',\n 'polygon',\n 'polyline',\n 'radialgradient',\n 'rect',\n 'stop',\n 'style',\n 'switch',\n 'symbol',\n 'text',\n 'textpath',\n 'title',\n 'tref',\n 'tspan',\n 'view',\n 'vkern',\n]);\n\nexport const svgFilters = freeze([\n 'feBlend',\n 'feColorMatrix',\n 'feComponentTransfer',\n 'feComposite',\n 'feConvolveMatrix',\n 'feDiffuseLighting',\n 'feDisplacementMap',\n 'feDistantLight',\n 'feFlood',\n 'feFuncA',\n 'feFuncB',\n 'feFuncG',\n 'feFuncR',\n 'feGaussianBlur',\n 'feImage',\n 'feMerge',\n 'feMergeNode',\n 'feMorphology',\n 'feOffset',\n 'fePointLight',\n 'feSpecularLighting',\n 'feSpotLight',\n 'feTile',\n 'feTurbulence',\n]);\n\n// List of SVG elements that are disallowed by default.\n// We still need to know them so that we can do namespace\n// checks properly in case one wants to add them to\n// allow-list.\nexport const svgDisallowed = freeze([\n 'animate',\n 'color-profile',\n 'cursor',\n 'discard',\n 'fedropshadow',\n 'font-face',\n 'font-face-format',\n 'font-face-name',\n 'font-face-src',\n 'font-face-uri',\n 'foreignobject',\n 'hatch',\n 'hatchpath',\n 'mesh',\n 'meshgradient',\n 'meshpatch',\n 'meshrow',\n 'missing-glyph',\n 'script',\n 'set',\n 'solidcolor',\n 'unknown',\n 'use',\n]);\n\nexport const mathMl = freeze([\n 'math',\n 'menclose',\n 'merror',\n 'mfenced',\n 'mfrac',\n 'mglyph',\n 'mi',\n 'mlabeledtr',\n 'mmultiscripts',\n 'mn',\n 'mo',\n 'mover',\n 'mpadded',\n 'mphantom',\n 'mroot',\n 'mrow',\n 'ms',\n 'mspace',\n 'msqrt',\n 'mstyle',\n 'msub',\n 'msup',\n 'msubsup',\n 'mtable',\n 'mtd',\n 'mtext',\n 'mtr',\n 'munder',\n 'munderover',\n]);\n\n// Similarly to SVG, we want to know all MathML elements,\n// even those that we disallow by default.\nexport const mathMlDisallowed = freeze([\n 'maction',\n 'maligngroup',\n 'malignmark',\n 'mlongdiv',\n 'mscarries',\n 'mscarry',\n 'msgroup',\n 'mstack',\n 'msline',\n 'msrow',\n 'semantics',\n 'annotation',\n 'annotation-xml',\n 'mprescripts',\n 'none',\n]);\n\nexport const text = freeze(['#text']);\n", "import { freeze } from './utils.js';\n\nexport const html = freeze([\n 'accept',\n 'action',\n 'align',\n 'alt',\n 'autocapitalize',\n 'autocomplete',\n 'autopictureinpicture',\n 'autoplay',\n 'background',\n 'bgcolor',\n 'border',\n 'capture',\n 'cellpadding',\n 'cellspacing',\n 'checked',\n 'cite',\n 'class',\n 'clear',\n 'color',\n 'cols',\n 'colspan',\n 'controls',\n 'controlslist',\n 'coords',\n 'crossorigin',\n 'datetime',\n 'decoding',\n 'default',\n 'dir',\n 'disabled',\n 'disablepictureinpicture',\n 'disableremoteplayback',\n 'download',\n 'draggable',\n 'enctype',\n 'enterkeyhint',\n 'face',\n 'for',\n 'headers',\n 'height',\n 'hidden',\n 'high',\n 'href',\n 'hreflang',\n 'id',\n 'inputmode',\n 'integrity',\n 'ismap',\n 'kind',\n 'label',\n 'lang',\n 'list',\n 'loading',\n 'loop',\n 'low',\n 'max',\n 'maxlength',\n 'media',\n 'method',\n 'min',\n 'minlength',\n 'multiple',\n 'muted',\n 'name',\n 'nonce',\n 'noshade',\n 'novalidate',\n 'nowrap',\n 'open',\n 'optimum',\n 'pattern',\n 'placeholder',\n 'playsinline',\n 'poster',\n 'preload',\n 'pubdate',\n 'radiogroup',\n 'readonly',\n 'rel',\n 'required',\n 'rev',\n 'reversed',\n 'role',\n 'rows',\n 'rowspan',\n 'spellcheck',\n 'scope',\n 'selected',\n 'shape',\n 'size',\n 'sizes',\n 'span',\n 'srclang',\n 'start',\n 'src',\n 'srcset',\n 'step',\n 'style',\n 'summary',\n 'tabindex',\n 'title',\n 'translate',\n 'type',\n 'usemap',\n 'valign',\n 'value',\n 'width',\n 'xmlns',\n 'slot',\n]);\n\nexport const svg = freeze([\n 'accent-height',\n 'accumulate',\n 'additive',\n 'alignment-baseline',\n 'ascent',\n 'attributename',\n 'attributetype',\n 'azimuth',\n 'basefrequency',\n 'baseline-shift',\n 'begin',\n 'bias',\n 'by',\n 'class',\n 'clip',\n 'clippathunits',\n 'clip-path',\n 'clip-rule',\n 'color',\n 'color-interpolation',\n 'color-interpolation-filters',\n 'color-profile',\n 'color-rendering',\n 'cx',\n 'cy',\n 'd',\n 'dx',\n 'dy',\n 'diffuseconstant',\n 'direction',\n 'display',\n 'divisor',\n 'dur',\n 'edgemode',\n 'elevation',\n 'end',\n 'fill',\n 'fill-opacity',\n 'fill-rule',\n 'filter',\n 'filterunits',\n 'flood-color',\n 'flood-opacity',\n 'font-family',\n 'font-size',\n 'font-size-adjust',\n 'font-stretch',\n 'font-style',\n 'font-variant',\n 'font-weight',\n 'fx',\n 'fy',\n 'g1',\n 'g2',\n 'glyph-name',\n 'glyphref',\n 'gradientunits',\n 'gradienttransform',\n 'height',\n 'href',\n 'id',\n 'image-rendering',\n 'in',\n 'in2',\n 'k',\n 'k1',\n 'k2',\n 'k3',\n 'k4',\n 'kerning',\n 'keypoints',\n 'keysplines',\n 'keytimes',\n 'lang',\n 'lengthadjust',\n 'letter-spacing',\n 'kernelmatrix',\n 'kernelunitlength',\n 'lighting-color',\n 'local',\n 'marker-end',\n 'marker-mid',\n 'marker-start',\n 'markerheight',\n 'markerunits',\n 'markerwidth',\n 'maskcontentunits',\n 'maskunits',\n 'max',\n 'mask',\n 'media',\n 'method',\n 'mode',\n 'min',\n 'name',\n 'numoctaves',\n 'offset',\n 'operator',\n 'opacity',\n 'order',\n 'orient',\n 'orientation',\n 'origin',\n 'overflow',\n 'paint-order',\n 'path',\n 'pathlength',\n 'patterncontentunits',\n 'patterntransform',\n 'patternunits',\n 'points',\n 'preservealpha',\n 'preserveaspectratio',\n 'primitiveunits',\n 'r',\n 'rx',\n 'ry',\n 'radius',\n 'refx',\n 'refy',\n 'repeatcount',\n 'repeatdur',\n 'restart',\n 'result',\n 'rotate',\n 'scale',\n 'seed',\n 'shape-rendering',\n 'specularconstant',\n 'specularexponent',\n 'spreadmethod',\n 'startoffset',\n 'stddeviation',\n 'stitchtiles',\n 'stop-color',\n 'stop-opacity',\n 'stroke-dasharray',\n 'stroke-dashoffset',\n 'stroke-linecap',\n 'stroke-linejoin',\n 'stroke-miterlimit',\n 'stroke-opacity',\n 'stroke',\n 'stroke-width',\n 'style',\n 'surfacescale',\n 'systemlanguage',\n 'tabindex',\n 'targetx',\n 'targety',\n 'transform',\n 'transform-origin',\n 'text-anchor',\n 'text-decoration',\n 'text-rendering',\n 'textlength',\n 'type',\n 'u1',\n 'u2',\n 'unicode',\n 'values',\n 'viewbox',\n 'visibility',\n 'version',\n 'vert-adv-y',\n 'vert-origin-x',\n 'vert-origin-y',\n 'width',\n 'word-spacing',\n 'wrap',\n 'writing-mode',\n 'xchannelselector',\n 'ychannelselector',\n 'x',\n 'x1',\n 'x2',\n 'xmlns',\n 'y',\n 'y1',\n 'y2',\n 'z',\n 'zoomandpan',\n]);\n\nexport const mathMl = freeze([\n 'accent',\n 'accentunder',\n 'align',\n 'bevelled',\n 'close',\n 'columnsalign',\n 'columnlines',\n 'columnspan',\n 'denomalign',\n 'depth',\n 'dir',\n 'display',\n 'displaystyle',\n 'encoding',\n 'fence',\n 'frame',\n 'height',\n 'href',\n 'id',\n 'largeop',\n 'length',\n 'linethickness',\n 'lspace',\n 'lquote',\n 'mathbackground',\n 'mathcolor',\n 'mathsize',\n 'mathvariant',\n 'maxsize',\n 'minsize',\n 'movablelimits',\n 'notation',\n 'numalign',\n 'open',\n 'rowalign',\n 'rowlines',\n 'rowspacing',\n 'rowspan',\n 'rspace',\n 'rquote',\n 'scriptlevel',\n 'scriptminsize',\n 'scriptsizemultiplier',\n 'selection',\n 'separator',\n 'separators',\n 'stretchy',\n 'subscriptshift',\n 'supscriptshift',\n 'symmetric',\n 'voffset',\n 'width',\n 'xmlns',\n]);\n\nexport const xml = freeze([\n 'xlink:href',\n 'xml:id',\n 'xlink:title',\n 'xml:space',\n 'xmlns:xlink',\n]);\n", "import { seal } from './utils.js';\n\n// eslint-disable-next-line unicorn/better-regex\nexport const MUSTACHE_EXPR = seal(/\\{\\{[\\w\\W]*|[\\w\\W]*\\}\\}/gm); // Specify template detection regex for SAFE_FOR_TEMPLATES mode\nexport const ERB_EXPR = seal(/<%[\\w\\W]*|[\\w\\W]*%>/gm);\nexport const TMPLIT_EXPR = seal(/\\${[\\w\\W]*}/gm);\nexport const DATA_ATTR = seal(/^data-[\\-\\w.\\u00B7-\\uFFFF]/); // eslint-disable-line no-useless-escape\nexport const ARIA_ATTR = seal(/^aria-[\\-\\w]+$/); // eslint-disable-line no-useless-escape\nexport const IS_ALLOWED_URI = seal(\n /^(?:(?:(?:f|ht)tps?|mailto|tel|callto|cid|xmpp):|[^a-z]|[a-z+.\\-]+(?:[^a-z+.\\-:]|$))/i // eslint-disable-line no-useless-escape\n);\nexport const IS_SCRIPT_OR_DATA = seal(/^(?:\\w+script|data):/i);\nexport const ATTR_WHITESPACE = seal(\n /[\\u0000-\\u0020\\u00A0\\u1680\\u180E\\u2000-\\u2029\\u205F\\u3000]/g // eslint-disable-line no-control-regex\n);\nexport const DOCTYPE_NAME = seal(/^html$/i);\nexport const CUSTOM_ELEMENT = seal(/^[a-z][.\\w]*(-[.\\w]+)+$/i);\n", "import * as TAGS from './tags.js';\nimport * as ATTRS from './attrs.js';\nimport * as EXPRESSIONS from './regexp.js';\nimport {\n addToSet,\n clone,\n freeze,\n arrayForEach,\n arrayPop,\n arrayPush,\n stringMatch,\n stringReplace,\n stringToLowerCase,\n stringToString,\n stringIndexOf,\n stringTrim,\n numberIsNaN,\n regExpTest,\n typeErrorCreate,\n lookupGetter,\n} from './utils.js';\n\nconst getGlobal = () => (typeof window === 'undefined' ? null : window);\n\n/**\n * Creates a no-op policy for internal use only.\n * Don't export this function outside this module!\n * @param {?TrustedTypePolicyFactory} trustedTypes The policy factory.\n * @param {Document} document The document object (to determine policy name suffix)\n * @return {?TrustedTypePolicy} The policy created (or null, if Trusted Types\n * are not supported).\n */\nconst _createTrustedTypesPolicy = function (trustedTypes, document) {\n if (\n typeof trustedTypes !== 'object' ||\n typeof trustedTypes.createPolicy !== 'function'\n ) {\n return null;\n }\n\n // Allow the callers to control the unique policy name\n // by adding a data-tt-policy-suffix to the script element with the DOMPurify.\n // Policy creation with duplicate names throws in Trusted Types.\n let suffix = null;\n const ATTR_NAME = 'data-tt-policy-suffix';\n if (\n document.currentScript &&\n document.currentScript.hasAttribute(ATTR_NAME)\n ) {\n suffix = document.currentScript.getAttribute(ATTR_NAME);\n }\n\n const policyName = 'dompurify' + (suffix ? '#' + suffix : '');\n\n try {\n return trustedTypes.createPolicy(policyName, {\n createHTML(html) {\n return html;\n },\n createScriptURL(scriptUrl) {\n return scriptUrl;\n },\n });\n } catch (_) {\n // Policy creation failed (most likely another DOMPurify script has\n // already run). Skip creating the policy, as this will only cause errors\n // if TT are enforced.\n console.warn(\n 'TrustedTypes policy ' + policyName + ' could not be created.'\n );\n return null;\n }\n};\n\nfunction createDOMPurify(window = getGlobal()) {\n const DOMPurify = (root) => createDOMPurify(root);\n\n /**\n * Version label, exposed for easier checks\n * if DOMPurify is up to date or not\n */\n DOMPurify.version = VERSION;\n\n /**\n * Array of elements that DOMPurify removed during sanitation.\n * Empty if nothing was removed.\n */\n DOMPurify.removed = [];\n\n if (!window || !window.document || window.document.nodeType !== 9) {\n // Not running in a browser, provide a factory function\n // so that you can pass your own Window\n DOMPurify.isSupported = false;\n\n return DOMPurify;\n }\n\n const originalDocument = window.document;\n\n let { document } = window;\n const {\n DocumentFragment,\n HTMLTemplateElement,\n Node,\n Element,\n NodeFilter,\n NamedNodeMap = window.NamedNodeMap || window.MozNamedAttrMap,\n HTMLFormElement,\n DOMParser,\n trustedTypes,\n } = window;\n\n const ElementPrototype = Element.prototype;\n\n const cloneNode = lookupGetter(ElementPrototype, 'cloneNode');\n const getNextSibling = lookupGetter(ElementPrototype, 'nextSibling');\n const getChildNodes = lookupGetter(ElementPrototype, 'childNodes');\n const getParentNode = lookupGetter(ElementPrototype, 'parentNode');\n\n // As per issue #47, the web-components registry is inherited by a\n // new document created via createHTMLDocument. As per the spec\n // (http://w3c.github.io/webcomponents/spec/custom/#creating-and-passing-registries)\n // a new empty registry is used when creating a template contents owner\n // document, so we use that as our parent document to ensure nothing\n // is inherited.\n if (typeof HTMLTemplateElement === 'function') {\n const template = document.createElement('template');\n if (template.content && template.content.ownerDocument) {\n document = template.content.ownerDocument;\n }\n }\n\n const trustedTypesPolicy = _createTrustedTypesPolicy(\n trustedTypes,\n originalDocument\n );\n const emptyHTML = trustedTypesPolicy ? trustedTypesPolicy.createHTML('') : '';\n\n const {\n implementation,\n createNodeIterator,\n createDocumentFragment,\n getElementsByTagName,\n } = document;\n const { importNode } = originalDocument;\n\n let documentMode = {};\n try {\n documentMode = clone(document).documentMode ? document.documentMode : {};\n } catch (_) {}\n\n let hooks = {};\n\n /**\n * Expose whether this browser supports running the full DOMPurify.\n */\n DOMPurify.isSupported =\n typeof getParentNode === 'function' &&\n implementation &&\n implementation.createHTMLDocument !== undefined &&\n documentMode !== 9;\n\n const {\n MUSTACHE_EXPR,\n ERB_EXPR,\n TMPLIT_EXPR,\n DATA_ATTR,\n ARIA_ATTR,\n IS_SCRIPT_OR_DATA,\n ATTR_WHITESPACE,\n CUSTOM_ELEMENT,\n } = EXPRESSIONS;\n\n let { IS_ALLOWED_URI } = EXPRESSIONS;\n\n /**\n * We consider the elements and attributes below to be safe. Ideally\n * don't add any new ones but feel free to remove unwanted ones.\n */\n\n /* allowed element names */\n let ALLOWED_TAGS = null;\n const DEFAULT_ALLOWED_TAGS = addToSet({}, [\n ...TAGS.html,\n ...TAGS.svg,\n ...TAGS.svgFilters,\n ...TAGS.mathMl,\n ...TAGS.text,\n ]);\n\n /* Allowed attribute names */\n let ALLOWED_ATTR = null;\n const DEFAULT_ALLOWED_ATTR = addToSet({}, [\n ...ATTRS.html,\n ...ATTRS.svg,\n ...ATTRS.mathMl,\n ...ATTRS.xml,\n ]);\n\n /*\n * Configure how DOMPUrify should handle custom elements and their attributes as well as customized built-in elements.\n * @property {RegExp|Function|null} tagNameCheck one of [null, regexPattern, predicate]. Default: `null` (disallow any custom elements)\n * @property {RegExp|Function|null} attributeNameCheck one of [null, regexPattern, predicate]. Default: `null` (disallow any attributes not on the allow list)\n * @property {boolean} allowCustomizedBuiltInElements allow custom elements derived from built-ins if they pass CUSTOM_ELEMENT_HANDLING.tagNameCheck. Default: `false`.\n */\n let CUSTOM_ELEMENT_HANDLING = Object.seal(\n Object.create(null, {\n tagNameCheck: {\n writable: true,\n configurable: false,\n enumerable: true,\n value: null,\n },\n attributeNameCheck: {\n writable: true,\n configurable: false,\n enumerable: true,\n value: null,\n },\n allowCustomizedBuiltInElements: {\n writable: true,\n configurable: false,\n enumerable: true,\n value: false,\n },\n })\n );\n\n /* Explicitly forbidden tags (overrides ALLOWED_TAGS/ADD_TAGS) */\n let FORBID_TAGS = null;\n\n /* Explicitly forbidden attributes (overrides ALLOWED_ATTR/ADD_ATTR) */\n let FORBID_ATTR = null;\n\n /* Decide if ARIA attributes are okay */\n let ALLOW_ARIA_ATTR = true;\n\n /* Decide if custom data attributes are okay */\n let ALLOW_DATA_ATTR = true;\n\n /* Decide if unknown protocols are okay */\n let ALLOW_UNKNOWN_PROTOCOLS = false;\n\n /* Decide if self-closing tags in attributes are allowed.\n * Usually removed due to a mXSS issue in jQuery 3.0 */\n let ALLOW_SELF_CLOSE_IN_ATTR = true;\n\n /* Output should be safe for common template engines.\n * This means, DOMPurify removes data attributes, mustaches and ERB\n */\n let SAFE_FOR_TEMPLATES = false;\n\n /* Output should be safe even for XML used within HTML and alike.\n * This means, DOMPurify removes comments when containing risky content.\n */\n let SAFE_FOR_XML = true;\n\n /* Decide if document with ... should be returned */\n let WHOLE_DOCUMENT = false;\n\n /* Track whether config is already set on this instance of DOMPurify. */\n let SET_CONFIG = false;\n\n /* Decide if all elements (e.g. style, script) must be children of\n * document.body. By default, browsers might move them to document.head */\n let FORCE_BODY = false;\n\n /* Decide if a DOM `HTMLBodyElement` should be returned, instead of a html\n * string (or a TrustedHTML object if Trusted Types are supported).\n * If `WHOLE_DOCUMENT` is enabled a `HTMLHtmlElement` will be returned instead\n */\n let RETURN_DOM = false;\n\n /* Decide if a DOM `DocumentFragment` should be returned, instead of a html\n * string (or a TrustedHTML object if Trusted Types are supported) */\n let RETURN_DOM_FRAGMENT = false;\n\n /* Try to return a Trusted Type object instead of a string, return a string in\n * case Trusted Types are not supported */\n let RETURN_TRUSTED_TYPE = false;\n\n /* Output should be free from DOM clobbering attacks?\n * This sanitizes markups named with colliding, clobberable built-in DOM APIs.\n */\n let SANITIZE_DOM = true;\n\n /* Achieve full DOM Clobbering protection by isolating the namespace of named\n * properties and JS variables, mitigating attacks that abuse the HTML/DOM spec rules.\n *\n * HTML/DOM spec rules that enable DOM Clobbering:\n * - Named Access on Window (\u00A77.3.3)\n * - DOM Tree Accessors (\u00A73.1.5)\n * - Form Element Parent-Child Relations (\u00A74.10.3)\n * - Iframe srcdoc / Nested WindowProxies (\u00A74.8.5)\n * - HTMLCollection (\u00A74.2.10.2)\n *\n * Namespace isolation is implemented by prefixing `id` and `name` attributes\n * with a constant string, i.e., `user-content-`\n */\n let SANITIZE_NAMED_PROPS = false;\n const SANITIZE_NAMED_PROPS_PREFIX = 'user-content-';\n\n /* Keep element content when removing element? */\n let KEEP_CONTENT = true;\n\n /* If a `Node` is passed to sanitize(), then performs sanitization in-place instead\n * of importing it into a new Document and returning a sanitized copy */\n let IN_PLACE = false;\n\n /* Allow usage of profiles like html, svg and mathMl */\n let USE_PROFILES = {};\n\n /* Tags to ignore content of when KEEP_CONTENT is true */\n let FORBID_CONTENTS = null;\n const DEFAULT_FORBID_CONTENTS = addToSet({}, [\n 'annotation-xml',\n 'audio',\n 'colgroup',\n 'desc',\n 'foreignobject',\n 'head',\n 'iframe',\n 'math',\n 'mi',\n 'mn',\n 'mo',\n 'ms',\n 'mtext',\n 'noembed',\n 'noframes',\n 'noscript',\n 'plaintext',\n 'script',\n 'style',\n 'svg',\n 'template',\n 'thead',\n 'title',\n 'video',\n 'xmp',\n ]);\n\n /* Tags that are safe for data: URIs */\n let DATA_URI_TAGS = null;\n const DEFAULT_DATA_URI_TAGS = addToSet({}, [\n 'audio',\n 'video',\n 'img',\n 'source',\n 'image',\n 'track',\n ]);\n\n /* Attributes safe for values like \"javascript:\" */\n let URI_SAFE_ATTRIBUTES = null;\n const DEFAULT_URI_SAFE_ATTRIBUTES = addToSet({}, [\n 'alt',\n 'class',\n 'for',\n 'id',\n 'label',\n 'name',\n 'pattern',\n 'placeholder',\n 'role',\n 'summary',\n 'title',\n 'value',\n 'style',\n 'xmlns',\n ]);\n\n const MATHML_NAMESPACE = 'http://www.w3.org/1998/Math/MathML';\n const SVG_NAMESPACE = 'http://www.w3.org/2000/svg';\n const HTML_NAMESPACE = 'http://www.w3.org/1999/xhtml';\n /* Document namespace */\n let NAMESPACE = HTML_NAMESPACE;\n let IS_EMPTY_INPUT = false;\n\n /* Allowed XHTML+XML namespaces */\n let ALLOWED_NAMESPACES = null;\n const DEFAULT_ALLOWED_NAMESPACES = addToSet(\n {},\n [MATHML_NAMESPACE, SVG_NAMESPACE, HTML_NAMESPACE],\n stringToString\n );\n\n /* Parsing of strict XHTML documents */\n let PARSER_MEDIA_TYPE;\n const SUPPORTED_PARSER_MEDIA_TYPES = ['application/xhtml+xml', 'text/html'];\n const DEFAULT_PARSER_MEDIA_TYPE = 'text/html';\n let transformCaseFunc;\n\n /* Keep a reference to config to pass to hooks */\n let CONFIG = null;\n\n /* Specify the maximum element nesting depth to prevent mXSS */\n const MAX_NESTING_DEPTH = 255;\n\n /* Ideally, do not touch anything below this line */\n /* ______________________________________________ */\n\n const formElement = document.createElement('form');\n\n const isRegexOrFunction = function (testValue) {\n return testValue instanceof RegExp || testValue instanceof Function;\n };\n\n /**\n * _parseConfig\n *\n * @param {Object} cfg optional config literal\n */\n // eslint-disable-next-line complexity\n const _parseConfig = function (cfg) {\n if (CONFIG && CONFIG === cfg) {\n return;\n }\n\n /* Shield configuration object from tampering */\n if (!cfg || typeof cfg !== 'object') {\n cfg = {};\n }\n\n /* Shield configuration object from prototype pollution */\n cfg = clone(cfg);\n\n PARSER_MEDIA_TYPE =\n // eslint-disable-next-line unicorn/prefer-includes\n SUPPORTED_PARSER_MEDIA_TYPES.indexOf(cfg.PARSER_MEDIA_TYPE) === -1\n ? (PARSER_MEDIA_TYPE = DEFAULT_PARSER_MEDIA_TYPE)\n : (PARSER_MEDIA_TYPE = cfg.PARSER_MEDIA_TYPE);\n\n // HTML tags and attributes are not case-sensitive, converting to lowercase. Keeping XHTML as is.\n transformCaseFunc =\n PARSER_MEDIA_TYPE === 'application/xhtml+xml'\n ? stringToString\n : stringToLowerCase;\n\n /* Set configuration parameters */\n ALLOWED_TAGS =\n 'ALLOWED_TAGS' in cfg\n ? addToSet({}, cfg.ALLOWED_TAGS, transformCaseFunc)\n : DEFAULT_ALLOWED_TAGS;\n ALLOWED_ATTR =\n 'ALLOWED_ATTR' in cfg\n ? addToSet({}, cfg.ALLOWED_ATTR, transformCaseFunc)\n : DEFAULT_ALLOWED_ATTR;\n ALLOWED_NAMESPACES =\n 'ALLOWED_NAMESPACES' in cfg\n ? addToSet({}, cfg.ALLOWED_NAMESPACES, stringToString)\n : DEFAULT_ALLOWED_NAMESPACES;\n URI_SAFE_ATTRIBUTES =\n 'ADD_URI_SAFE_ATTR' in cfg\n ? addToSet(\n clone(DEFAULT_URI_SAFE_ATTRIBUTES), // eslint-disable-line indent\n cfg.ADD_URI_SAFE_ATTR, // eslint-disable-line indent\n transformCaseFunc // eslint-disable-line indent\n ) // eslint-disable-line indent\n : DEFAULT_URI_SAFE_ATTRIBUTES;\n DATA_URI_TAGS =\n 'ADD_DATA_URI_TAGS' in cfg\n ? addToSet(\n clone(DEFAULT_DATA_URI_TAGS), // eslint-disable-line indent\n cfg.ADD_DATA_URI_TAGS, // eslint-disable-line indent\n transformCaseFunc // eslint-disable-line indent\n ) // eslint-disable-line indent\n : DEFAULT_DATA_URI_TAGS;\n FORBID_CONTENTS =\n 'FORBID_CONTENTS' in cfg\n ? addToSet({}, cfg.FORBID_CONTENTS, transformCaseFunc)\n : DEFAULT_FORBID_CONTENTS;\n FORBID_TAGS =\n 'FORBID_TAGS' in cfg\n ? addToSet({}, cfg.FORBID_TAGS, transformCaseFunc)\n : {};\n FORBID_ATTR =\n 'FORBID_ATTR' in cfg\n ? addToSet({}, cfg.FORBID_ATTR, transformCaseFunc)\n : {};\n USE_PROFILES = 'USE_PROFILES' in cfg ? cfg.USE_PROFILES : false;\n ALLOW_ARIA_ATTR = cfg.ALLOW_ARIA_ATTR !== false; // Default true\n ALLOW_DATA_ATTR = cfg.ALLOW_DATA_ATTR !== false; // Default true\n ALLOW_UNKNOWN_PROTOCOLS = cfg.ALLOW_UNKNOWN_PROTOCOLS || false; // Default false\n ALLOW_SELF_CLOSE_IN_ATTR = cfg.ALLOW_SELF_CLOSE_IN_ATTR !== false; // Default true\n SAFE_FOR_TEMPLATES = cfg.SAFE_FOR_TEMPLATES || false; // Default false\n SAFE_FOR_XML = cfg.SAFE_FOR_XML !== false; // Default true\n WHOLE_DOCUMENT = cfg.WHOLE_DOCUMENT || false; // Default false\n RETURN_DOM = cfg.RETURN_DOM || false; // Default false\n RETURN_DOM_FRAGMENT = cfg.RETURN_DOM_FRAGMENT || false; // Default false\n RETURN_TRUSTED_TYPE = cfg.RETURN_TRUSTED_TYPE || false; // Default false\n FORCE_BODY = cfg.FORCE_BODY || false; // Default false\n SANITIZE_DOM = cfg.SANITIZE_DOM !== false; // Default true\n SANITIZE_NAMED_PROPS = cfg.SANITIZE_NAMED_PROPS || false; // Default false\n KEEP_CONTENT = cfg.KEEP_CONTENT !== false; // Default true\n IN_PLACE = cfg.IN_PLACE || false; // Default false\n IS_ALLOWED_URI = cfg.ALLOWED_URI_REGEXP || IS_ALLOWED_URI;\n NAMESPACE = cfg.NAMESPACE || HTML_NAMESPACE;\n CUSTOM_ELEMENT_HANDLING = cfg.CUSTOM_ELEMENT_HANDLING || {};\n if (\n cfg.CUSTOM_ELEMENT_HANDLING &&\n isRegexOrFunction(cfg.CUSTOM_ELEMENT_HANDLING.tagNameCheck)\n ) {\n CUSTOM_ELEMENT_HANDLING.tagNameCheck =\n cfg.CUSTOM_ELEMENT_HANDLING.tagNameCheck;\n }\n\n if (\n cfg.CUSTOM_ELEMENT_HANDLING &&\n isRegexOrFunction(cfg.CUSTOM_ELEMENT_HANDLING.attributeNameCheck)\n ) {\n CUSTOM_ELEMENT_HANDLING.attributeNameCheck =\n cfg.CUSTOM_ELEMENT_HANDLING.attributeNameCheck;\n }\n\n if (\n cfg.CUSTOM_ELEMENT_HANDLING &&\n typeof cfg.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements ===\n 'boolean'\n ) {\n CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements =\n cfg.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements;\n }\n\n if (SAFE_FOR_TEMPLATES) {\n ALLOW_DATA_ATTR = false;\n }\n\n if (RETURN_DOM_FRAGMENT) {\n RETURN_DOM = true;\n }\n\n /* Parse profile info */\n if (USE_PROFILES) {\n ALLOWED_TAGS = addToSet({}, [...TAGS.text]);\n ALLOWED_ATTR = [];\n if (USE_PROFILES.html === true) {\n addToSet(ALLOWED_TAGS, TAGS.html);\n addToSet(ALLOWED_ATTR, ATTRS.html);\n }\n\n if (USE_PROFILES.svg === true) {\n addToSet(ALLOWED_TAGS, TAGS.svg);\n addToSet(ALLOWED_ATTR, ATTRS.svg);\n addToSet(ALLOWED_ATTR, ATTRS.xml);\n }\n\n if (USE_PROFILES.svgFilters === true) {\n addToSet(ALLOWED_TAGS, TAGS.svgFilters);\n addToSet(ALLOWED_ATTR, ATTRS.svg);\n addToSet(ALLOWED_ATTR, ATTRS.xml);\n }\n\n if (USE_PROFILES.mathMl === true) {\n addToSet(ALLOWED_TAGS, TAGS.mathMl);\n addToSet(ALLOWED_ATTR, ATTRS.mathMl);\n addToSet(ALLOWED_ATTR, ATTRS.xml);\n }\n }\n\n /* Merge configuration parameters */\n if (cfg.ADD_TAGS) {\n if (ALLOWED_TAGS === DEFAULT_ALLOWED_TAGS) {\n ALLOWED_TAGS = clone(ALLOWED_TAGS);\n }\n\n addToSet(ALLOWED_TAGS, cfg.ADD_TAGS, transformCaseFunc);\n }\n\n if (cfg.ADD_ATTR) {\n if (ALLOWED_ATTR === DEFAULT_ALLOWED_ATTR) {\n ALLOWED_ATTR = clone(ALLOWED_ATTR);\n }\n\n addToSet(ALLOWED_ATTR, cfg.ADD_ATTR, transformCaseFunc);\n }\n\n if (cfg.ADD_URI_SAFE_ATTR) {\n addToSet(URI_SAFE_ATTRIBUTES, cfg.ADD_URI_SAFE_ATTR, transformCaseFunc);\n }\n\n if (cfg.FORBID_CONTENTS) {\n if (FORBID_CONTENTS === DEFAULT_FORBID_CONTENTS) {\n FORBID_CONTENTS = clone(FORBID_CONTENTS);\n }\n\n addToSet(FORBID_CONTENTS, cfg.FORBID_CONTENTS, transformCaseFunc);\n }\n\n /* Add #text in case KEEP_CONTENT is set to true */\n if (KEEP_CONTENT) {\n ALLOWED_TAGS['#text'] = true;\n }\n\n /* Add html, head and body to ALLOWED_TAGS in case WHOLE_DOCUMENT is true */\n if (WHOLE_DOCUMENT) {\n addToSet(ALLOWED_TAGS, ['html', 'head', 'body']);\n }\n\n /* Add tbody to ALLOWED_TAGS in case tables are permitted, see #286, #365 */\n if (ALLOWED_TAGS.table) {\n addToSet(ALLOWED_TAGS, ['tbody']);\n delete FORBID_TAGS.tbody;\n }\n\n // Prevent further manipulation of configuration.\n // Not available in IE8, Safari 5, etc.\n if (freeze) {\n freeze(cfg);\n }\n\n CONFIG = cfg;\n };\n\n const MATHML_TEXT_INTEGRATION_POINTS = addToSet({}, [\n 'mi',\n 'mo',\n 'mn',\n 'ms',\n 'mtext',\n ]);\n\n const HTML_INTEGRATION_POINTS = addToSet({}, [\n 'foreignobject',\n 'annotation-xml',\n ]);\n\n // Certain elements are allowed in both SVG and HTML\n // namespace. We need to specify them explicitly\n // so that they don't get erroneously deleted from\n // HTML namespace.\n const COMMON_SVG_AND_HTML_ELEMENTS = addToSet({}, [\n 'title',\n 'style',\n 'font',\n 'a',\n 'script',\n ]);\n\n /* Keep track of all possible SVG and MathML tags\n * so that we can perform the namespace checks\n * correctly. */\n const ALL_SVG_TAGS = addToSet({}, TAGS.svg);\n addToSet(ALL_SVG_TAGS, TAGS.svgFilters);\n addToSet(ALL_SVG_TAGS, TAGS.svgDisallowed);\n\n const ALL_MATHML_TAGS = addToSet({}, TAGS.mathMl);\n addToSet(ALL_MATHML_TAGS, TAGS.mathMlDisallowed);\n\n /**\n *\n *\n * @param {Element} element a DOM element whose namespace is being checked\n * @returns {boolean} Return false if the element has a\n * namespace that a spec-compliant parser would never\n * return. Return true otherwise.\n */\n const _checkValidNamespace = function (element) {\n let parent = getParentNode(element);\n\n // In JSDOM, if we're inside shadow DOM, then parentNode\n // can be null. We just simulate parent in this case.\n if (!parent || !parent.tagName) {\n parent = {\n namespaceURI: NAMESPACE,\n tagName: 'template',\n };\n }\n\n const tagName = stringToLowerCase(element.tagName);\n const parentTagName = stringToLowerCase(parent.tagName);\n\n if (!ALLOWED_NAMESPACES[element.namespaceURI]) {\n return false;\n }\n\n if (element.namespaceURI === SVG_NAMESPACE) {\n // The only way to switch from HTML namespace to SVG\n // is via . If it happens via any other tag, then\n // it should be killed.\n if (parent.namespaceURI === HTML_NAMESPACE) {\n return tagName === 'svg';\n }\n\n // The only way to switch from MathML to SVG is via`\n // svg if parent is either or MathML\n // text integration points.\n if (parent.namespaceURI === MATHML_NAMESPACE) {\n return (\n tagName === 'svg' &&\n (parentTagName === 'annotation-xml' ||\n MATHML_TEXT_INTEGRATION_POINTS[parentTagName])\n );\n }\n\n // We only allow elements that are defined in SVG\n // spec. All others are disallowed in SVG namespace.\n return Boolean(ALL_SVG_TAGS[tagName]);\n }\n\n if (element.namespaceURI === MATHML_NAMESPACE) {\n // The only way to switch from HTML namespace to MathML\n // is via . If it happens via any other tag, then\n // it should be killed.\n if (parent.namespaceURI === HTML_NAMESPACE) {\n return tagName === 'math';\n }\n\n // The only way to switch from SVG to MathML is via\n // and HTML integration points\n if (parent.namespaceURI === SVG_NAMESPACE) {\n return tagName === 'math' && HTML_INTEGRATION_POINTS[parentTagName];\n }\n\n // We only allow elements that are defined in MathML\n // spec. All others are disallowed in MathML namespace.\n return Boolean(ALL_MATHML_TAGS[tagName]);\n }\n\n if (element.namespaceURI === HTML_NAMESPACE) {\n // The only way to switch from SVG to HTML is via\n // HTML integration points, and from MathML to HTML\n // is via MathML text integration points\n if (\n parent.namespaceURI === SVG_NAMESPACE &&\n !HTML_INTEGRATION_POINTS[parentTagName]\n ) {\n return false;\n }\n\n if (\n parent.namespaceURI === MATHML_NAMESPACE &&\n !MATHML_TEXT_INTEGRATION_POINTS[parentTagName]\n ) {\n return false;\n }\n\n // We disallow tags that are specific for MathML\n // or SVG and should never appear in HTML namespace\n return (\n !ALL_MATHML_TAGS[tagName] &&\n (COMMON_SVG_AND_HTML_ELEMENTS[tagName] || !ALL_SVG_TAGS[tagName])\n );\n }\n\n // For XHTML and XML documents that support custom namespaces\n if (\n PARSER_MEDIA_TYPE === 'application/xhtml+xml' &&\n ALLOWED_NAMESPACES[element.namespaceURI]\n ) {\n return true;\n }\n\n // The code should never reach this place (this means\n // that the element somehow got namespace that is not\n // HTML, SVG, MathML or allowed via ALLOWED_NAMESPACES).\n // Return false just in case.\n return false;\n };\n\n /**\n * _forceRemove\n *\n * @param {Node} node a DOM node\n */\n const _forceRemove = function (node) {\n arrayPush(DOMPurify.removed, { element: node });\n try {\n // eslint-disable-next-line unicorn/prefer-dom-node-remove\n node.parentNode.removeChild(node);\n } catch (_) {\n try {\n node.outerHTML = emptyHTML;\n } catch (_) {\n node.remove();\n }\n }\n };\n\n /**\n * _removeAttribute\n *\n * @param {String} name an Attribute name\n * @param {Node} node a DOM node\n */\n const _removeAttribute = function (name, node) {\n try {\n arrayPush(DOMPurify.removed, {\n attribute: node.getAttributeNode(name),\n from: node,\n });\n } catch (_) {\n arrayPush(DOMPurify.removed, {\n attribute: null,\n from: node,\n });\n }\n\n node.removeAttribute(name);\n\n // We void attribute values for unremovable \"is\"\" attributes\n if (name === 'is' && !ALLOWED_ATTR[name]) {\n if (RETURN_DOM || RETURN_DOM_FRAGMENT) {\n try {\n _forceRemove(node);\n } catch (_) {}\n } else {\n try {\n node.setAttribute(name, '');\n } catch (_) {}\n }\n }\n };\n\n /**\n * _initDocument\n *\n * @param {String} dirty a string of dirty markup\n * @return {Document} a DOM, filled with the dirty markup\n */\n const _initDocument = function (dirty) {\n /* Create a HTML document */\n let doc;\n let leadingWhitespace;\n\n if (FORCE_BODY) {\n dirty = '' + dirty;\n } else {\n /* If FORCE_BODY isn't used, leading whitespace needs to be preserved manually */\n const matches = stringMatch(dirty, /^[\\r\\n\\t ]+/);\n leadingWhitespace = matches && matches[0];\n }\n\n if (\n PARSER_MEDIA_TYPE === 'application/xhtml+xml' &&\n NAMESPACE === HTML_NAMESPACE\n ) {\n // Root of XHTML doc must contain xmlns declaration (see https://www.w3.org/TR/xhtml1/normative.html#strict)\n dirty =\n '' +\n dirty +\n '';\n }\n\n const dirtyPayload = trustedTypesPolicy\n ? trustedTypesPolicy.createHTML(dirty)\n : dirty;\n /*\n * Use the DOMParser API by default, fallback later if needs be\n * DOMParser not work for svg when has multiple root element.\n */\n if (NAMESPACE === HTML_NAMESPACE) {\n try {\n doc = new DOMParser().parseFromString(dirtyPayload, PARSER_MEDIA_TYPE);\n } catch (_) {}\n }\n\n /* Use createHTMLDocument in case DOMParser is not available */\n if (!doc || !doc.documentElement) {\n doc = implementation.createDocument(NAMESPACE, 'template', null);\n try {\n doc.documentElement.innerHTML = IS_EMPTY_INPUT\n ? emptyHTML\n : dirtyPayload;\n } catch (_) {\n // Syntax error if dirtyPayload is invalid xml\n }\n }\n\n const body = doc.body || doc.documentElement;\n\n if (dirty && leadingWhitespace) {\n body.insertBefore(\n document.createTextNode(leadingWhitespace),\n body.childNodes[0] || null\n );\n }\n\n /* Work on whole document or just its body */\n if (NAMESPACE === HTML_NAMESPACE) {\n return getElementsByTagName.call(\n doc,\n WHOLE_DOCUMENT ? 'html' : 'body'\n )[0];\n }\n\n return WHOLE_DOCUMENT ? doc.documentElement : body;\n };\n\n /**\n * _createIterator\n *\n * @param {Document} root document/fragment to create iterator for\n * @return {Iterator} iterator instance\n */\n const _createIterator = function (root) {\n return createNodeIterator.call(\n root.ownerDocument || root,\n root,\n // eslint-disable-next-line no-bitwise\n NodeFilter.SHOW_ELEMENT |\n NodeFilter.SHOW_COMMENT |\n NodeFilter.SHOW_TEXT |\n NodeFilter.SHOW_PROCESSING_INSTRUCTION |\n NodeFilter.SHOW_CDATA_SECTION,\n null,\n false\n );\n };\n\n /**\n * _isClobbered\n *\n * @param {Node} elm element to check for clobbering attacks\n * @return {Boolean} true if clobbered, false if safe\n */\n const _isClobbered = function (elm) {\n return (\n elm instanceof HTMLFormElement &&\n ((typeof elm.__depth !== 'undefined' &&\n typeof elm.__depth !== 'number') ||\n (typeof elm.__removalCount !== 'undefined' &&\n typeof elm.__removalCount !== 'number') ||\n typeof elm.nodeName !== 'string' ||\n typeof elm.textContent !== 'string' ||\n typeof elm.removeChild !== 'function' ||\n !(elm.attributes instanceof NamedNodeMap) ||\n typeof elm.removeAttribute !== 'function' ||\n typeof elm.setAttribute !== 'function' ||\n typeof elm.namespaceURI !== 'string' ||\n typeof elm.insertBefore !== 'function' ||\n typeof elm.hasChildNodes !== 'function')\n );\n };\n\n /**\n * _isNode\n *\n * @param {Node} obj object to check whether it's a DOM node\n * @return {Boolean} true is object is a DOM node\n */\n const _isNode = function (object) {\n return typeof Node === 'object'\n ? object instanceof Node\n : object &&\n typeof object === 'object' &&\n typeof object.nodeType === 'number' &&\n typeof object.nodeName === 'string';\n };\n\n /**\n * _executeHook\n * Execute user configurable hooks\n *\n * @param {String} entryPoint Name of the hook's entry point\n * @param {Node} currentNode node to work on with the hook\n * @param {Object} data additional hook parameters\n */\n const _executeHook = function (entryPoint, currentNode, data) {\n if (!hooks[entryPoint]) {\n return;\n }\n\n arrayForEach(hooks[entryPoint], (hook) => {\n hook.call(DOMPurify, currentNode, data, CONFIG);\n });\n };\n\n /**\n * _sanitizeElements\n *\n * @protect nodeName\n * @protect textContent\n * @protect removeChild\n *\n * @param {Node} currentNode to check for permission to exist\n * @return {Boolean} true if node was killed, false if left alive\n */\n const _sanitizeElements = function (currentNode) {\n let content;\n\n /* Execute a hook if present */\n _executeHook('beforeSanitizeElements', currentNode, null);\n\n /* Check if element is clobbered or can clobber */\n if (_isClobbered(currentNode)) {\n _forceRemove(currentNode);\n return true;\n }\n\n /* Check if tagname contains Unicode */\n if (regExpTest(/[\\u0080-\\uFFFF]/, currentNode.nodeName)) {\n _forceRemove(currentNode);\n return true;\n }\n\n /* Now let's check the element's type and name */\n const tagName = transformCaseFunc(currentNode.nodeName);\n\n /* Execute a hook if present */\n _executeHook('uponSanitizeElement', currentNode, {\n tagName,\n allowedTags: ALLOWED_TAGS,\n });\n\n /* Detect mXSS attempts abusing namespace confusion */\n if (\n currentNode.hasChildNodes() &&\n !_isNode(currentNode.firstElementChild) &&\n (!_isNode(currentNode.content) ||\n !_isNode(currentNode.content.firstElementChild)) &&\n regExpTest(/<[/\\w]/g, currentNode.innerHTML) &&\n regExpTest(/<[/\\w]/g, currentNode.textContent)\n ) {\n _forceRemove(currentNode);\n return true;\n }\n\n /* Mitigate a problem with templates inside select */\n if (\n tagName === 'select' &&\n regExpTest(/